Index: trunk/doc-rnd/TODO
===================================================================
--- trunk/doc-rnd/TODO (revision 1053)
+++ trunk/doc-rnd/TODO (revision 1054)
@@ -1,7 +1,6 @@
CLEANUP
- move to plugin:
- toporouter
- - edif
- djopt
- dbus
- gpmi
Index: trunk/scconfig/hooks.c
===================================================================
--- trunk/scconfig/hooks.c (revision 1053)
+++ trunk/scconfig/hooks.c (revision 1054)
@@ -57,6 +57,10 @@
{"buildin-puller", "/local/pcb/puller/buildin", arg_true, "$static link the puller plugin into the executable"},
{"plugin-puller", "/local/pcb/puller/buildin", arg_false, "$the puller plugin is dynamic loadable"},
+ {"disable-edif", "/local/pcb/edif/enable", arg_false, "$do not compile the edif"},
+ {"buildin-edif", "/local/pcb/edif/buildin", arg_true, "$static link the edif plugin into the executable"},
+ {"plugin-edif", "/local/pcb/edif/buildin", arg_false, "$the edif plugin is dynamic loadable"},
+
{NULL, NULL, NULL, NULL}
};
@@ -135,6 +139,10 @@
put("/local/pcb/puller/enable", strue);
put("/local/pcb/puller/buildin", strue);
+ db_mkdir("/local/pcb/edif");
+ put("/local/pcb/edif/enable", strue);
+ put("/local/pcb/edif/buildin", strue);
+
return 0;
}
@@ -358,6 +366,7 @@
plugin_stat("Autoplace: ", "/local/pcb/autoplace");
plugin_stat("Vendor drill mapping: ", "/local/pcb/vendordrill");
plugin_stat("Puller: ", "/local/pcb/puller");
+ plugin_stat("Edif: ", "/local/pcb/edif");
if (manual_config)
printf("\n\n * NOTE: you may want to edit config.manual.h (user preferences) *\n");
Index: trunk/src/edif.c
===================================================================
--- trunk/src/edif.c (revision 1053)
+++ trunk/src/edif.c (nonexistent)
@@ -1,7629 +0,0 @@
-/* A Bison parser, made by GNU Bison 2.4.3. */
-
-/* Skeleton implementation for Bison's Yacc-like parsers in C
-
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2009, 2010 Free Software Foundation, Inc.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see . */
-
-/* As a special exception, you may create a larger work that contains
- part or all of the Bison parser skeleton and distribute that work
- under terms of your choice, so long as that work isn't itself a
- parser generator using the skeleton or a modified version thereof
- as a parser skeleton. Alternatively, if you modify or redistribute
- the parser skeleton itself, you may (at your option) remove this
- special exception, which will cause the skeleton and the resulting
- Bison output files to be licensed under the GNU General Public
- License without this special exception.
-
- This special exception was added by the Free Software Foundation in
- version 2.2 of Bison. */
-
-/* C LALR(1) parser skeleton written by Richard Stallman, by
- simplifying the original so-called "semantic" parser. */
-
-/* All symbols defined below should begin with yy or YY, to avoid
- infringing on user name space. This should be done even for local
- variables, as they might otherwise be expanded by user macros.
- There are some unavoidable exceptions within include files to
- define necessary library symbols; they are noted "INFRINGES ON
- USER NAME SPACE" below. */
-
-/* Identify Bison output. */
-#define YYBISON 1
-
-/* Bison version. */
-#define YYBISON_VERSION "2.4.3"
-
-/* Skeleton name. */
-#define YYSKELETON_NAME "yacc.c"
-
-/* Pure parsers. */
-#define YYPURE 0
-
-/* Push parsers. */
-#define YYPUSH 0
-
-/* Pull parsers. */
-#define YYPULL 1
-
-/* Using locations. */
-#define YYLSP_NEEDED 0
-
-/* Substitute the variable and function names. */
-#define yyparse edifparse
-#define yylex ediflex
-#define yyerror ediferror
-#define yylval ediflval
-#define yychar edifchar
-#define yydebug edifdebug
-#define yynerrs edifnerrs
-
-
-/* Copy the first part of user declarations. */
-
-/* Line 189 of yacc.c */
-#line 1 "edif.y"
-
-/*
- * PCB Edif parser based heavily on:
- *
- * Header: edif.y,v 1.18 87/12/07 19:59:49 roger Locked
- */
-/************************************************************************
- * *
- * edif.y *
- * *
- * EDIF 2.0.0 parser, Level 0 *
- * *
- * You are free to copy, distribute, use it, abuse it, make it *
- * write bad tracks all over the disk ... or anything else. *
- * *
- * Your friendly neighborhood Rogue Monster - roger@mips.com *
- * *
- ************************************************************************/
-#include
-
-/* for malloc, free, atoi */
-#include
-
-/* for strcpy */
-#include
-
-#include
-
-#include "global.h"
-#include "data.h"
-/* from mymem.h, not include because of the malloc junk */
-LibraryMenuTypePtr GetLibraryMenuMemory(LibraryTypePtr);
-LibraryEntryTypePtr GetLibraryEntryMemory(LibraryMenuTypePtr);
-
-/*
- * Local definitions.
- */
-#define IDENT_LENGTH 255
-#define Malloc(s) malloc(s)
-#define Free(p) free(p)
-#define Getc(s) getc(s)
-#define Ungetc(c) ungetc(c,Input)
-
-typedef struct _str_pair {
- char *str1;
- char *str2;
- struct _str_pair *next;
-} str_pair;
-
-typedef struct _pair_list {
- char *name;
- str_pair *list;
-} pair_list;
-
-str_pair *new_str_pair(char *s1, char *s2)
-{
- str_pair *ps = (str_pair *) malloc(sizeof(str_pair));
- ps->str1 = s1;
- ps->str2 = s2;
- ps->next = NULL;
- return ps;
-}
-
-pair_list *new_pair_list(str_pair * ps)
-{
- pair_list *pl = (pair_list *) malloc(sizeof(pair_list));
- pl->list = ps;
- pl->name = NULL;
- return pl;
-}
-
-void str_pair_free(str_pair * ps)
-{
- str_pair *node;
- while (ps) {
- free(ps->str1);
- free(ps->str2);
- node = ps;
- ps = ps->next;
- free(node);
- }
-}
-
-void pair_list_free(pair_list * pl)
-{
- str_pair_free(pl->list);
- free(pl->name);
- free(pl);
-}
-
-void define_pcb_net(str_pair * name, pair_list * nodes)
-{
- int tl;
- str_pair *done_node;
- str_pair *node;
- char *buf;
- char *p;
- LibraryEntryTypePtr entry;
- LibraryMenuTypePtr menu = GetLibraryMenuMemory(&(PCB->NetlistLib[NETLIST_EDITED]));
-
- if (!name->str1) {
- /* no net name given, stop now */
- /* if renamed str2 also exists and must be freed */
- if (name->str2)
- free(name->str2);
- free(name);
- pair_list_free(nodes);
- return;
- }
- menu->Name = strdup(name->str1);
- free(name->str1);
- /* if renamed str2 also exists and must be freed */
- if (name->str2)
- free(name->str2);
- free(name);
- buf = (char *) malloc(256);
- if (!buf) {
- /* no memory */
- pair_list_free(nodes);
- return;
- }
-
- node = nodes->list;
- free(nodes->name);
- free(nodes);
- while (node) {
- /* check for node with no instance */
- if (!node->str1) {
- /* toss it and move on */
- free(node->str2);
- done_node = node;
- node = node->next;
- free(done_node);
- continue;
- }
- tl = strlen(node->str1) + strlen(node->str2);
- if (tl + 3 > 256) {
- free(buf);
- buf = (char *) malloc(tl + 3);
- if (!buf) {
- /* no memory */
- str_pair_free(node);
- return;
- }
- }
- strcpy(buf, node->str1);
- /* make all upper case, because of PCB funky behaviour */
- p = buf;
- while (*p) {
- *p = toupper((int) *p);
- p++;
- }
- /* add dash separating designator from node */
- *(buf + strlen(node->str1)) = '-';
- /* check for the edif number prefix */
- if (node->str2[0] == '&') {
- /* skip number prefix */
- strcpy(buf + strlen(node->str1) + 1, node->str2 + 1);
- }
- else {
- strcpy(buf + strlen(node->str1) + 1, node->str2);
- }
- /* free the strings */
- free(node->str1);
- free(node->str2);
- entry = GetLibraryEntryMemory(menu);
- entry->ListEntry = strdup(buf);
- done_node = node;
- node = node->next;
- free(done_node);
- }
-}
-
-
-/* forward function declarations */
-static int yylex(void);
-static void yyerror(const char *);
-static void PopC(void);
-
-
-/* Line 189 of yacc.c */
-#line 271 "edif.c"
-
-/* Enabling traces. */
-#ifndef YYDEBUG
-#define YYDEBUG 0
-#endif
-
-/* Enabling verbose error messages. */
-#ifdef YYERROR_VERBOSE
-#undef YYERROR_VERBOSE
-#define YYERROR_VERBOSE 1
-#else
-#define YYERROR_VERBOSE 0
-#endif
-
-/* Enabling the token table. */
-#ifndef YYTOKEN_TABLE
-#define YYTOKEN_TABLE 0
-#endif
-
-
-/* Tokens. */
-#ifndef YYTOKENTYPE
-#define YYTOKENTYPE
- /* Put the tokens into the symbol table, so that GDB and other debuggers
- know about them. */
-enum yytokentype {
- EDIF_TOK_IDENT = 258,
- EDIF_TOK_INT = 259,
- EDIF_TOK_KEYWORD = 260,
- EDIF_TOK_STR = 261,
- EDIF_TOK_ANGLE = 262,
- EDIF_TOK_BEHAVIOR = 263,
- EDIF_TOK_CALCULATED = 264,
- EDIF_TOK_CAPACITANCE = 265,
- EDIF_TOK_CENTERCENTER = 266,
- EDIF_TOK_CENTERLEFT = 267,
- EDIF_TOK_CENTERRIGHT = 268,
- EDIF_TOK_CHARGE = 269,
- EDIF_TOK_CONDUCTANCE = 270,
- EDIF_TOK_CURRENT = 271,
- EDIF_TOK_DISTANCE = 272,
- EDIF_TOK_DOCUMENT = 273,
- EDIF_TOK_ENERGY = 274,
- EDIF_TOK_EXTEND = 275,
- EDIF_TOK_FLUX = 276,
- EDIF_TOK_FREQUENCY = 277,
- EDIF_TOK_GENERIC = 278,
- EDIF_TOK_GRAPHIC = 279,
- EDIF_TOK_INDUCTANCE = 280,
- EDIF_TOK_INOUT = 281,
- EDIF_TOK_INPUT = 282,
- EDIF_TOK_LOGICMODEL = 283,
- EDIF_TOK_LOWERCENTER = 284,
- EDIF_TOK_LOWERLEFT = 285,
- EDIF_TOK_LOWERRIGHT = 286,
- EDIF_TOK_MASKLAYOUT = 287,
- EDIF_TOK_MASS = 288,
- EDIF_TOK_MEASURED = 289,
- EDIF_TOK_MX = 290,
- EDIF_TOK_MXR90 = 291,
- EDIF_TOK_MY = 292,
- EDIF_TOK_MYR90 = 293,
- EDIF_TOK_NETLIST = 294,
- EDIF_TOK_OUTPUT = 295,
- EDIF_TOK_PCBLAYOUT = 296,
- EDIF_TOK_POWER = 297,
- EDIF_TOK_R0 = 298,
- EDIF_TOK_R180 = 299,
- EDIF_TOK_R270 = 300,
- EDIF_TOK_R90 = 301,
- EDIF_TOK_REQUIRED = 302,
- EDIF_TOK_RESISTANCE = 303,
- EDIF_TOK_RIPPER = 304,
- EDIF_TOK_ROUND = 305,
- EDIF_TOK_SCHEMATIC = 306,
- EDIF_TOK_STRANGER = 307,
- EDIF_TOK_SYMBOLIC = 308,
- EDIF_TOK_TEMPERATURE = 309,
- EDIF_TOK_TIE = 310,
- EDIF_TOK_TIME = 311,
- EDIF_TOK_TRUNCATE = 312,
- EDIF_TOK_UPPERCENTER = 313,
- EDIF_TOK_UPPERLEFT = 314,
- EDIF_TOK_UPPERRIGHT = 315,
- EDIF_TOK_VOLTAGE = 316,
- EDIF_TOK_ACLOAD = 317,
- EDIF_TOK_AFTER = 318,
- EDIF_TOK_ANNOTATE = 319,
- EDIF_TOK_APPLY = 320,
- EDIF_TOK_ARC = 321,
- EDIF_TOK_ARRAY = 322,
- EDIF_TOK_ARRAYMACRO = 323,
- EDIF_TOK_ARRAYRELATEDINFO = 324,
- EDIF_TOK_ARRAYSITE = 325,
- EDIF_TOK_ATLEAST = 326,
- EDIF_TOK_ATMOST = 327,
- EDIF_TOK_AUTHOR = 328,
- EDIF_TOK_BASEARRAY = 329,
- EDIF_TOK_BECOMES = 330,
- EDIF_TOK_BETWEEN = 331,
- EDIF_TOK_BOOLEAN = 332,
- EDIF_TOK_BOOLEANDISPLAY = 333,
- EDIF_TOK_BOOLEANMAP = 334,
- EDIF_TOK_BORDERPATTERN = 335,
- EDIF_TOK_BORDERWIDTH = 336,
- EDIF_TOK_BOUNDINGBOX = 337,
- EDIF_TOK_CELL = 338,
- EDIF_TOK_CELLREF = 339,
- EDIF_TOK_CELLTYPE = 340,
- EDIF_TOK_CHANGE = 341,
- EDIF_TOK_CIRCLE = 342,
- EDIF_TOK_COLOR = 343,
- EDIF_TOK_COMMENT = 344,
- EDIF_TOK_COMMENTGRAPHICS = 345,
- EDIF_TOK_COMPOUND = 346,
- EDIF_TOK_CONNECTLOCATION = 347,
- EDIF_TOK_CONTENTS = 348,
- EDIF_TOK_CORNERTYPE = 349,
- EDIF_TOK_CRITICALITY = 350,
- EDIF_TOK_CURRENTMAP = 351,
- EDIF_TOK_CURVE = 352,
- EDIF_TOK_CYCLE = 353,
- EDIF_TOK_DATAORIGIN = 354,
- EDIF_TOK_DCFANINLOAD = 355,
- EDIF_TOK_DCFANOUTLOAD = 356,
- EDIF_TOK_DCMAXFANIN = 357,
- EDIF_TOK_DCMAXFANOUT = 358,
- EDIF_TOK_DELAY = 359,
- EDIF_TOK_DELTA = 360,
- EDIF_TOK_DERIVATION = 361,
- EDIF_TOK_DESIGN = 362,
- EDIF_TOK_DESIGNATOR = 363,
- EDIF_TOK_DIFFERENCE = 364,
- EDIF_TOK_DIRECTION = 365,
- EDIF_TOK_DISPLAY = 366,
- EDIF_TOK_DOMINATES = 367,
- EDIF_TOK_DOT = 368,
- EDIF_TOK_DURATION = 369,
- EDIF_TOK_E = 370,
- EDIF_TOK_EDIF = 371,
- EDIF_TOK_EDIFLEVEL = 372,
- EDIF_TOK_EDIFVERSION = 373,
- EDIF_TOK_ENCLOSUREDISTANCE = 374,
- EDIF_TOK_ENDTYPE = 375,
- EDIF_TOK_ENTRY = 376,
- EDIF_TOK_EVENT = 377,
- EDIF_TOK_EXACTLY = 378,
- EDIF_TOK_EXTERNAL = 379,
- EDIF_TOK_FABRICATE = 380,
- EDIF_TOK_FALSE = 381,
- EDIF_TOK_FIGURE = 382,
- EDIF_TOK_FIGUREAREA = 383,
- EDIF_TOK_FIGUREGROUP = 384,
- EDIF_TOK_FIGUREGROUPOBJECT = 385,
- EDIF_TOK_FIGUREGROUPOVERRIDE = 386,
- EDIF_TOK_FIGUREGROUPREF = 387,
- EDIF_TOK_FIGUREPERIMETER = 388,
- EDIF_TOK_FIGUREWIDTH = 389,
- EDIF_TOK_FILLPATTERN = 390,
- EDIF_TOK_FOLLOW = 391,
- EDIF_TOK_FORBIDDENEVENT = 392,
- EDIF_TOK_GLOBALPORTREF = 393,
- EDIF_TOK_GREATERTHAN = 394,
- EDIF_TOK_GRIDMAP = 395,
- EDIF_TOK_IGNORE = 396,
- EDIF_TOK_INCLUDEFIGUREGROUP = 397,
- EDIF_TOK_INITIAL = 398,
- EDIF_TOK_INSTANCE = 399,
- EDIF_TOK_INSTANCEBACKANNOTATE = 400,
- EDIF_TOK_INSTANCEGROUP = 401,
- EDIF_TOK_INSTANCEMAP = 402,
- EDIF_TOK_INSTANCEREF = 403,
- EDIF_TOK_INTEGER = 404,
- EDIF_TOK_INTEGERDISPLAY = 405,
- EDIF_TOK_INTERFACE = 406,
- EDIF_TOK_INTERFIGUREGROUPSPACING = 407,
- EDIF_TOK_INTERSECTION = 408,
- EDIF_TOK_INTRAFIGUREGROUPSPACING = 409,
- EDIF_TOK_INVERSE = 410,
- EDIF_TOK_ISOLATED = 411,
- EDIF_TOK_JOINED = 412,
- EDIF_TOK_JUSTIFY = 413,
- EDIF_TOK_KEYWORDDISPLAY = 414,
- EDIF_TOK_KEYWORDLEVEL = 415,
- EDIF_TOK_KEYWORDMAP = 416,
- EDIF_TOK_LESSTHAN = 417,
- EDIF_TOK_LIBRARY = 418,
- EDIF_TOK_LIBRARYREF = 419,
- EDIF_TOK_LISTOFNETS = 420,
- EDIF_TOK_LISTOFPORTS = 421,
- EDIF_TOK_LOADDELAY = 422,
- EDIF_TOK_LOGICASSIGN = 423,
- EDIF_TOK_LOGICINPUT = 424,
- EDIF_TOK_LOGICLIST = 425,
- EDIF_TOK_LOGICMAPINPUT = 426,
- EDIF_TOK_LOGICMAPOUTPUT = 427,
- EDIF_TOK_LOGICONEOF = 428,
- EDIF_TOK_LOGICOUTPUT = 429,
- EDIF_TOK_LOGICPORT = 430,
- EDIF_TOK_LOGICREF = 431,
- EDIF_TOK_LOGICVALUE = 432,
- EDIF_TOK_LOGICWAVEFORM = 433,
- EDIF_TOK_MAINTAIN = 434,
- EDIF_TOK_MATCH = 435,
- EDIF_TOK_MEMBER = 436,
- EDIF_TOK_MINOMAX = 437,
- EDIF_TOK_MINOMAXDISPLAY = 438,
- EDIF_TOK_MNM = 439,
- EDIF_TOK_MULTIPLEVALUESET = 440,
- EDIF_TOK_MUSTJOIN = 441,
- EDIF_TOK_NAME = 442,
- EDIF_TOK_NET = 443,
- EDIF_TOK_NETBACKANNOTATE = 444,
- EDIF_TOK_NETBUNDLE = 445,
- EDIF_TOK_NETDELAY = 446,
- EDIF_TOK_NETGROUP = 447,
- EDIF_TOK_NETMAP = 448,
- EDIF_TOK_NETREF = 449,
- EDIF_TOK_NOCHANGE = 450,
- EDIF_TOK_NONPERMUTABLE = 451,
- EDIF_TOK_NOTALLOWED = 452,
- EDIF_TOK_NOTCHSPACING = 453,
- EDIF_TOK_NUMBER = 454,
- EDIF_TOK_NUMBERDEFINITION = 455,
- EDIF_TOK_NUMBERDISPLAY = 456,
- EDIF_TOK_OFFPAGECONNECTOR = 457,
- EDIF_TOK_OFFSETEVENT = 458,
- EDIF_TOK_OPENSHAPE = 459,
- EDIF_TOK_ORIENTATION = 460,
- EDIF_TOK_ORIGIN = 461,
- EDIF_TOK_OVERHANGDISTANCE = 462,
- EDIF_TOK_OVERLAPDISTANCE = 463,
- EDIF_TOK_OVERSIZE = 464,
- EDIF_TOK_OWNER = 465,
- EDIF_TOK_PAGE = 466,
- EDIF_TOK_PAGESIZE = 467,
- EDIF_TOK_PARAMETER = 468,
- EDIF_TOK_PARAMETERASSIGN = 469,
- EDIF_TOK_PARAMETERDISPLAY = 470,
- EDIF_TOK_PATH = 471,
- EDIF_TOK_PATHDELAY = 472,
- EDIF_TOK_PATHWIDTH = 473,
- EDIF_TOK_PERMUTABLE = 474,
- EDIF_TOK_PHYSICALDESIGNRULE = 475,
- EDIF_TOK_PLUG = 476,
- EDIF_TOK_POINT = 477,
- EDIF_TOK_POINTDISPLAY = 478,
- EDIF_TOK_POINTLIST = 479,
- EDIF_TOK_POLYGON = 480,
- EDIF_TOK_PORT = 481,
- EDIF_TOK_PORTBACKANNOTATE = 482,
- EDIF_TOK_PORTBUNDLE = 483,
- EDIF_TOK_PORTDELAY = 484,
- EDIF_TOK_PORTGROUP = 485,
- EDIF_TOK_PORTIMPLEMENTATION = 486,
- EDIF_TOK_PORTINSTANCE = 487,
- EDIF_TOK_PORTLIST = 488,
- EDIF_TOK_PORTLISTALIAS = 489,
- EDIF_TOK_PORTMAP = 490,
- EDIF_TOK_PORTREF = 491,
- EDIF_TOK_PROGRAM = 492,
- EDIF_TOK_PROPERTY = 493,
- EDIF_TOK_PROPERTYDISPLAY = 494,
- EDIF_TOK_PROTECTIONFRAME = 495,
- EDIF_TOK_PT = 496,
- EDIF_TOK_RANGEVECTOR = 497,
- EDIF_TOK_RECTANGLE = 498,
- EDIF_TOK_RECTANGLESIZE = 499,
- EDIF_TOK_RENAME = 500,
- EDIF_TOK_RESOLVES = 501,
- EDIF_TOK_SCALE = 502,
- EDIF_TOK_SCALEX = 503,
- EDIF_TOK_SCALEY = 504,
- EDIF_TOK_SECTION = 505,
- EDIF_TOK_SHAPE = 506,
- EDIF_TOK_SIMULATE = 507,
- EDIF_TOK_SIMULATIONINFO = 508,
- EDIF_TOK_SINGLEVALUESET = 509,
- EDIF_TOK_SITE = 510,
- EDIF_TOK_SOCKET = 511,
- EDIF_TOK_SOCKETSET = 512,
- EDIF_TOK_STATUS = 513,
- EDIF_TOK_STEADY = 514,
- EDIF_TOK_STRING = 515,
- EDIF_TOK_STRINGDISPLAY = 516,
- EDIF_TOK_STRONG = 517,
- EDIF_TOK_SYMBOL = 518,
- EDIF_TOK_SYMMETRY = 519,
- EDIF_TOK_TABLE = 520,
- EDIF_TOK_TABLEDEFAULT = 521,
- EDIF_TOK_TECHNOLOGY = 522,
- EDIF_TOK_TEXTHEIGHT = 523,
- EDIF_TOK_TIMEINTERVAL = 524,
- EDIF_TOK_TIMESTAMP = 525,
- EDIF_TOK_TIMING = 526,
- EDIF_TOK_TRANSFORM = 527,
- EDIF_TOK_TRANSITION = 528,
- EDIF_TOK_TRIGGER = 529,
- EDIF_TOK_TRUE = 530,
- EDIF_TOK_UNCONSTRAINED = 531,
- EDIF_TOK_UNDEFINED = 532,
- EDIF_TOK_UNION = 533,
- EDIF_TOK_UNIT = 534,
- EDIF_TOK_UNUSED = 535,
- EDIF_TOK_USERDATA = 536,
- EDIF_TOK_VERSION = 537,
- EDIF_TOK_VIEW = 538,
- EDIF_TOK_VIEWLIST = 539,
- EDIF_TOK_VIEWMAP = 540,
- EDIF_TOK_VIEWREF = 541,
- EDIF_TOK_VIEWTYPE = 542,
- EDIF_TOK_VISIBLE = 543,
- EDIF_TOK_VOLTAGEMAP = 544,
- EDIF_TOK_WAVEVALUE = 545,
- EDIF_TOK_WEAK = 546,
- EDIF_TOK_WEAKJOINED = 547,
- EDIF_TOK_WHEN = 548,
- EDIF_TOK_WRITTEN = 549
-};
-#endif
-/* Tokens. */
-#define EDIF_TOK_IDENT 258
-#define EDIF_TOK_INT 259
-#define EDIF_TOK_KEYWORD 260
-#define EDIF_TOK_STR 261
-#define EDIF_TOK_ANGLE 262
-#define EDIF_TOK_BEHAVIOR 263
-#define EDIF_TOK_CALCULATED 264
-#define EDIF_TOK_CAPACITANCE 265
-#define EDIF_TOK_CENTERCENTER 266
-#define EDIF_TOK_CENTERLEFT 267
-#define EDIF_TOK_CENTERRIGHT 268
-#define EDIF_TOK_CHARGE 269
-#define EDIF_TOK_CONDUCTANCE 270
-#define EDIF_TOK_CURRENT 271
-#define EDIF_TOK_DISTANCE 272
-#define EDIF_TOK_DOCUMENT 273
-#define EDIF_TOK_ENERGY 274
-#define EDIF_TOK_EXTEND 275
-#define EDIF_TOK_FLUX 276
-#define EDIF_TOK_FREQUENCY 277
-#define EDIF_TOK_GENERIC 278
-#define EDIF_TOK_GRAPHIC 279
-#define EDIF_TOK_INDUCTANCE 280
-#define EDIF_TOK_INOUT 281
-#define EDIF_TOK_INPUT 282
-#define EDIF_TOK_LOGICMODEL 283
-#define EDIF_TOK_LOWERCENTER 284
-#define EDIF_TOK_LOWERLEFT 285
-#define EDIF_TOK_LOWERRIGHT 286
-#define EDIF_TOK_MASKLAYOUT 287
-#define EDIF_TOK_MASS 288
-#define EDIF_TOK_MEASURED 289
-#define EDIF_TOK_MX 290
-#define EDIF_TOK_MXR90 291
-#define EDIF_TOK_MY 292
-#define EDIF_TOK_MYR90 293
-#define EDIF_TOK_NETLIST 294
-#define EDIF_TOK_OUTPUT 295
-#define EDIF_TOK_PCBLAYOUT 296
-#define EDIF_TOK_POWER 297
-#define EDIF_TOK_R0 298
-#define EDIF_TOK_R180 299
-#define EDIF_TOK_R270 300
-#define EDIF_TOK_R90 301
-#define EDIF_TOK_REQUIRED 302
-#define EDIF_TOK_RESISTANCE 303
-#define EDIF_TOK_RIPPER 304
-#define EDIF_TOK_ROUND 305
-#define EDIF_TOK_SCHEMATIC 306
-#define EDIF_TOK_STRANGER 307
-#define EDIF_TOK_SYMBOLIC 308
-#define EDIF_TOK_TEMPERATURE 309
-#define EDIF_TOK_TIE 310
-#define EDIF_TOK_TIME 311
-#define EDIF_TOK_TRUNCATE 312
-#define EDIF_TOK_UPPERCENTER 313
-#define EDIF_TOK_UPPERLEFT 314
-#define EDIF_TOK_UPPERRIGHT 315
-#define EDIF_TOK_VOLTAGE 316
-#define EDIF_TOK_ACLOAD 317
-#define EDIF_TOK_AFTER 318
-#define EDIF_TOK_ANNOTATE 319
-#define EDIF_TOK_APPLY 320
-#define EDIF_TOK_ARC 321
-#define EDIF_TOK_ARRAY 322
-#define EDIF_TOK_ARRAYMACRO 323
-#define EDIF_TOK_ARRAYRELATEDINFO 324
-#define EDIF_TOK_ARRAYSITE 325
-#define EDIF_TOK_ATLEAST 326
-#define EDIF_TOK_ATMOST 327
-#define EDIF_TOK_AUTHOR 328
-#define EDIF_TOK_BASEARRAY 329
-#define EDIF_TOK_BECOMES 330
-#define EDIF_TOK_BETWEEN 331
-#define EDIF_TOK_BOOLEAN 332
-#define EDIF_TOK_BOOLEANDISPLAY 333
-#define EDIF_TOK_BOOLEANMAP 334
-#define EDIF_TOK_BORDERPATTERN 335
-#define EDIF_TOK_BORDERWIDTH 336
-#define EDIF_TOK_BOUNDINGBOX 337
-#define EDIF_TOK_CELL 338
-#define EDIF_TOK_CELLREF 339
-#define EDIF_TOK_CELLTYPE 340
-#define EDIF_TOK_CHANGE 341
-#define EDIF_TOK_CIRCLE 342
-#define EDIF_TOK_COLOR 343
-#define EDIF_TOK_COMMENT 344
-#define EDIF_TOK_COMMENTGRAPHICS 345
-#define EDIF_TOK_COMPOUND 346
-#define EDIF_TOK_CONNECTLOCATION 347
-#define EDIF_TOK_CONTENTS 348
-#define EDIF_TOK_CORNERTYPE 349
-#define EDIF_TOK_CRITICALITY 350
-#define EDIF_TOK_CURRENTMAP 351
-#define EDIF_TOK_CURVE 352
-#define EDIF_TOK_CYCLE 353
-#define EDIF_TOK_DATAORIGIN 354
-#define EDIF_TOK_DCFANINLOAD 355
-#define EDIF_TOK_DCFANOUTLOAD 356
-#define EDIF_TOK_DCMAXFANIN 357
-#define EDIF_TOK_DCMAXFANOUT 358
-#define EDIF_TOK_DELAY 359
-#define EDIF_TOK_DELTA 360
-#define EDIF_TOK_DERIVATION 361
-#define EDIF_TOK_DESIGN 362
-#define EDIF_TOK_DESIGNATOR 363
-#define EDIF_TOK_DIFFERENCE 364
-#define EDIF_TOK_DIRECTION 365
-#define EDIF_TOK_DISPLAY 366
-#define EDIF_TOK_DOMINATES 367
-#define EDIF_TOK_DOT 368
-#define EDIF_TOK_DURATION 369
-#define EDIF_TOK_E 370
-#define EDIF_TOK_EDIF 371
-#define EDIF_TOK_EDIFLEVEL 372
-#define EDIF_TOK_EDIFVERSION 373
-#define EDIF_TOK_ENCLOSUREDISTANCE 374
-#define EDIF_TOK_ENDTYPE 375
-#define EDIF_TOK_ENTRY 376
-#define EDIF_TOK_EVENT 377
-#define EDIF_TOK_EXACTLY 378
-#define EDIF_TOK_EXTERNAL 379
-#define EDIF_TOK_FABRICATE 380
-#define EDIF_TOK_FALSE 381
-#define EDIF_TOK_FIGURE 382
-#define EDIF_TOK_FIGUREAREA 383
-#define EDIF_TOK_FIGUREGROUP 384
-#define EDIF_TOK_FIGUREGROUPOBJECT 385
-#define EDIF_TOK_FIGUREGROUPOVERRIDE 386
-#define EDIF_TOK_FIGUREGROUPREF 387
-#define EDIF_TOK_FIGUREPERIMETER 388
-#define EDIF_TOK_FIGUREWIDTH 389
-#define EDIF_TOK_FILLPATTERN 390
-#define EDIF_TOK_FOLLOW 391
-#define EDIF_TOK_FORBIDDENEVENT 392
-#define EDIF_TOK_GLOBALPORTREF 393
-#define EDIF_TOK_GREATERTHAN 394
-#define EDIF_TOK_GRIDMAP 395
-#define EDIF_TOK_IGNORE 396
-#define EDIF_TOK_INCLUDEFIGUREGROUP 397
-#define EDIF_TOK_INITIAL 398
-#define EDIF_TOK_INSTANCE 399
-#define EDIF_TOK_INSTANCEBACKANNOTATE 400
-#define EDIF_TOK_INSTANCEGROUP 401
-#define EDIF_TOK_INSTANCEMAP 402
-#define EDIF_TOK_INSTANCEREF 403
-#define EDIF_TOK_INTEGER 404
-#define EDIF_TOK_INTEGERDISPLAY 405
-#define EDIF_TOK_INTERFACE 406
-#define EDIF_TOK_INTERFIGUREGROUPSPACING 407
-#define EDIF_TOK_INTERSECTION 408
-#define EDIF_TOK_INTRAFIGUREGROUPSPACING 409
-#define EDIF_TOK_INVERSE 410
-#define EDIF_TOK_ISOLATED 411
-#define EDIF_TOK_JOINED 412
-#define EDIF_TOK_JUSTIFY 413
-#define EDIF_TOK_KEYWORDDISPLAY 414
-#define EDIF_TOK_KEYWORDLEVEL 415
-#define EDIF_TOK_KEYWORDMAP 416
-#define EDIF_TOK_LESSTHAN 417
-#define EDIF_TOK_LIBRARY 418
-#define EDIF_TOK_LIBRARYREF 419
-#define EDIF_TOK_LISTOFNETS 420
-#define EDIF_TOK_LISTOFPORTS 421
-#define EDIF_TOK_LOADDELAY 422
-#define EDIF_TOK_LOGICASSIGN 423
-#define EDIF_TOK_LOGICINPUT 424
-#define EDIF_TOK_LOGICLIST 425
-#define EDIF_TOK_LOGICMAPINPUT 426
-#define EDIF_TOK_LOGICMAPOUTPUT 427
-#define EDIF_TOK_LOGICONEOF 428
-#define EDIF_TOK_LOGICOUTPUT 429
-#define EDIF_TOK_LOGICPORT 430
-#define EDIF_TOK_LOGICREF 431
-#define EDIF_TOK_LOGICVALUE 432
-#define EDIF_TOK_LOGICWAVEFORM 433
-#define EDIF_TOK_MAINTAIN 434
-#define EDIF_TOK_MATCH 435
-#define EDIF_TOK_MEMBER 436
-#define EDIF_TOK_MINOMAX 437
-#define EDIF_TOK_MINOMAXDISPLAY 438
-#define EDIF_TOK_MNM 439
-#define EDIF_TOK_MULTIPLEVALUESET 440
-#define EDIF_TOK_MUSTJOIN 441
-#define EDIF_TOK_NAME 442
-#define EDIF_TOK_NET 443
-#define EDIF_TOK_NETBACKANNOTATE 444
-#define EDIF_TOK_NETBUNDLE 445
-#define EDIF_TOK_NETDELAY 446
-#define EDIF_TOK_NETGROUP 447
-#define EDIF_TOK_NETMAP 448
-#define EDIF_TOK_NETREF 449
-#define EDIF_TOK_NOCHANGE 450
-#define EDIF_TOK_NONPERMUTABLE 451
-#define EDIF_TOK_NOTALLOWED 452
-#define EDIF_TOK_NOTCHSPACING 453
-#define EDIF_TOK_NUMBER 454
-#define EDIF_TOK_NUMBERDEFINITION 455
-#define EDIF_TOK_NUMBERDISPLAY 456
-#define EDIF_TOK_OFFPAGECONNECTOR 457
-#define EDIF_TOK_OFFSETEVENT 458
-#define EDIF_TOK_OPENSHAPE 459
-#define EDIF_TOK_ORIENTATION 460
-#define EDIF_TOK_ORIGIN 461
-#define EDIF_TOK_OVERHANGDISTANCE 462
-#define EDIF_TOK_OVERLAPDISTANCE 463
-#define EDIF_TOK_OVERSIZE 464
-#define EDIF_TOK_OWNER 465
-#define EDIF_TOK_PAGE 466
-#define EDIF_TOK_PAGESIZE 467
-#define EDIF_TOK_PARAMETER 468
-#define EDIF_TOK_PARAMETERASSIGN 469
-#define EDIF_TOK_PARAMETERDISPLAY 470
-#define EDIF_TOK_PATH 471
-#define EDIF_TOK_PATHDELAY 472
-#define EDIF_TOK_PATHWIDTH 473
-#define EDIF_TOK_PERMUTABLE 474
-#define EDIF_TOK_PHYSICALDESIGNRULE 475
-#define EDIF_TOK_PLUG 476
-#define EDIF_TOK_POINT 477
-#define EDIF_TOK_POINTDISPLAY 478
-#define EDIF_TOK_POINTLIST 479
-#define EDIF_TOK_POLYGON 480
-#define EDIF_TOK_PORT 481
-#define EDIF_TOK_PORTBACKANNOTATE 482
-#define EDIF_TOK_PORTBUNDLE 483
-#define EDIF_TOK_PORTDELAY 484
-#define EDIF_TOK_PORTGROUP 485
-#define EDIF_TOK_PORTIMPLEMENTATION 486
-#define EDIF_TOK_PORTINSTANCE 487
-#define EDIF_TOK_PORTLIST 488
-#define EDIF_TOK_PORTLISTALIAS 489
-#define EDIF_TOK_PORTMAP 490
-#define EDIF_TOK_PORTREF 491
-#define EDIF_TOK_PROGRAM 492
-#define EDIF_TOK_PROPERTY 493
-#define EDIF_TOK_PROPERTYDISPLAY 494
-#define EDIF_TOK_PROTECTIONFRAME 495
-#define EDIF_TOK_PT 496
-#define EDIF_TOK_RANGEVECTOR 497
-#define EDIF_TOK_RECTANGLE 498
-#define EDIF_TOK_RECTANGLESIZE 499
-#define EDIF_TOK_RENAME 500
-#define EDIF_TOK_RESOLVES 501
-#define EDIF_TOK_SCALE 502
-#define EDIF_TOK_SCALEX 503
-#define EDIF_TOK_SCALEY 504
-#define EDIF_TOK_SECTION 505
-#define EDIF_TOK_SHAPE 506
-#define EDIF_TOK_SIMULATE 507
-#define EDIF_TOK_SIMULATIONINFO 508
-#define EDIF_TOK_SINGLEVALUESET 509
-#define EDIF_TOK_SITE 510
-#define EDIF_TOK_SOCKET 511
-#define EDIF_TOK_SOCKETSET 512
-#define EDIF_TOK_STATUS 513
-#define EDIF_TOK_STEADY 514
-#define EDIF_TOK_STRING 515
-#define EDIF_TOK_STRINGDISPLAY 516
-#define EDIF_TOK_STRONG 517
-#define EDIF_TOK_SYMBOL 518
-#define EDIF_TOK_SYMMETRY 519
-#define EDIF_TOK_TABLE 520
-#define EDIF_TOK_TABLEDEFAULT 521
-#define EDIF_TOK_TECHNOLOGY 522
-#define EDIF_TOK_TEXTHEIGHT 523
-#define EDIF_TOK_TIMEINTERVAL 524
-#define EDIF_TOK_TIMESTAMP 525
-#define EDIF_TOK_TIMING 526
-#define EDIF_TOK_TRANSFORM 527
-#define EDIF_TOK_TRANSITION 528
-#define EDIF_TOK_TRIGGER 529
-#define EDIF_TOK_TRUE 530
-#define EDIF_TOK_UNCONSTRAINED 531
-#define EDIF_TOK_UNDEFINED 532
-#define EDIF_TOK_UNION 533
-#define EDIF_TOK_UNIT 534
-#define EDIF_TOK_UNUSED 535
-#define EDIF_TOK_USERDATA 536
-#define EDIF_TOK_VERSION 537
-#define EDIF_TOK_VIEW 538
-#define EDIF_TOK_VIEWLIST 539
-#define EDIF_TOK_VIEWMAP 540
-#define EDIF_TOK_VIEWREF 541
-#define EDIF_TOK_VIEWTYPE 542
-#define EDIF_TOK_VISIBLE 543
-#define EDIF_TOK_VOLTAGEMAP 544
-#define EDIF_TOK_WAVEVALUE 545
-#define EDIF_TOK_WEAK 546
-#define EDIF_TOK_WEAKJOINED 547
-#define EDIF_TOK_WHEN 548
-#define EDIF_TOK_WRITTEN 549
-
-
-
-
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE {
-
-/* Line 214 of yacc.c */
-#line 193 "edif.y"
-
- char *s;
- pair_list *pl;
- str_pair *ps;
-
-
-
-/* Line 214 of yacc.c */
-#line 903 "edif.c"
-} YYSTYPE;
-#define YYSTYPE_IS_TRIVIAL 1
-#define yystype YYSTYPE /* obsolescent; will be withdrawn */
-#define YYSTYPE_IS_DECLARED 1
-#endif
-
-
-/* Copy the second part of user declarations. */
-
-
-/* Line 264 of yacc.c */
-#line 915 "edif.c"
-
-#ifdef short
-#undef short
-#endif
-
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
-#endif
-
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
-#else
-typedef short int yytype_int8;
-#endif
-
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
-#else
-typedef unsigned short int yytype_uint16;
-#endif
-
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
-#else
-typedef short int yytype_int16;
-#endif
-
-#ifndef YYSIZE_T
-#ifdef __SIZE_TYPE__
-#define YYSIZE_T __SIZE_TYPE__
-#elif defined size_t
-#define YYSIZE_T size_t
-#elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-#include /* INFRINGES ON USER NAME SPACE */
-#define YYSIZE_T size_t
-#else
-#define YYSIZE_T unsigned int
-#endif
-#endif
-
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
-
-#ifndef YY_
-#if defined YYENABLE_NLS && YYENABLE_NLS
-#if ENABLE_NLS
-#include /* INFRINGES ON USER NAME SPACE */
-#define YY_(msgid) dgettext ("bison-runtime", msgid)
-#endif
-#endif
-#ifndef YY_
-#define YY_(msgid) msgid
-#endif
-#endif
-
-/* Suppress unused-variable warnings by "using" E. */
-#if ! defined lint || defined __GNUC__
-#define YYUSE(e) ((void) (e))
-#else
-#define YYUSE(e) /* empty */
-#endif
-
-/* Identity function, used to suppress warnings about constant conditions. */
-#ifndef lint
-#define YYID(n) (n)
-#else
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static int YYID(int yyi)
-#else
-static int YYID(yyi)
- int yyi;
-#endif
-{
- return yyi;
-}
-#endif
-
-#if ! defined yyoverflow || YYERROR_VERBOSE
-
-/* The parser invokes alloca or malloc; define the necessary symbols. */
-
-#ifdef YYSTACK_USE_ALLOCA
-#if YYSTACK_USE_ALLOCA
-#ifdef __GNUC__
-#define YYSTACK_ALLOC __builtin_alloca
-#elif defined __BUILTIN_VA_ARG_INCR
-#include /* INFRINGES ON USER NAME SPACE */
-#elif defined _AIX
-#define YYSTACK_ALLOC __alloca
-#elif defined _MSC_VER
-#include /* INFRINGES ON USER NAME SPACE */
-#define alloca _alloca
-#else
-#define YYSTACK_ALLOC alloca
-#if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-#include /* INFRINGES ON USER NAME SPACE */
-#ifndef _STDLIB_H
-#define _STDLIB_H 1
-#endif
-#endif
-#endif
-#endif
-#endif
-
-#ifdef YYSTACK_ALLOC
- /* Pacify GCC's `empty if-body' warning. */
-#define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
-#ifndef YYSTACK_ALLOC_MAXIMUM
- /* The OS might guarantee only one guard page at the bottom of the stack,
- and a page size can be as small as 4096 bytes. So we cannot safely
- invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
- to allow for a few compiler-allocated temporary stack slots. */
-#define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
-#endif
-#else
-#define YYSTACK_ALLOC YYMALLOC
-#define YYSTACK_FREE YYFREE
-#ifndef YYSTACK_ALLOC_MAXIMUM
-#define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
-#endif
-#if (defined __cplusplus && ! defined _STDLIB_H \
- && ! ((defined YYMALLOC || defined malloc) \
- && (defined YYFREE || defined free)))
-#include /* INFRINGES ON USER NAME SPACE */
-#ifndef _STDLIB_H
-#define _STDLIB_H 1
-#endif
-#endif
-#ifndef YYMALLOC
-#define YYMALLOC malloc
-#if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-void *malloc(YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
-#endif
-#endif
-#ifndef YYFREE
-#define YYFREE free
-#if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-void free(void *); /* INFRINGES ON USER NAME SPACE */
-#endif
-#endif
-#endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-
-
-#if (! defined yyoverflow \
- && (! defined __cplusplus \
- || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
-
-/* A type that is properly aligned for any stack member. */
-union yyalloc {
- yytype_int16 yyss_alloc;
- YYSTYPE yyvs_alloc;
-};
-
-/* The size of the maximum gap between one aligned stack and the next. */
-#define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
-
-/* The size of an array large to enough to hold all stacks, each with
- N elements. */
-#define YYSTACK_BYTES(N) \
- ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
- + YYSTACK_GAP_MAXIMUM)
-
-/* Copy COUNT objects from FROM to TO. The source and destination do
- not overlap. */
-#ifndef YYCOPY
-#if defined __GNUC__ && 1 < __GNUC__
-#define YYCOPY(To, From, Count) \
- __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-#else
-#define YYCOPY(To, From, Count) \
- do \
- { \
- YYSIZE_T yyi; \
- for (yyi = 0; yyi < (Count); yyi++) \
- (To)[yyi] = (From)[yyi]; \
- } \
- while (YYID (0))
-#endif
-#endif
-
-/* Relocate STACK from its old location to the new one. The
- local variables YYSIZE and YYSTACKSIZE give the old and new number of
- elements in the stack, and YYPTR gives the new location of the
- stack. Advance YYPTR to a properly aligned location for the next
- stack. */
-#define YYSTACK_RELOCATE(Stack_alloc, Stack) \
- do \
- { \
- YYSIZE_T yynewbytes; \
- YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
- Stack = &yyptr->Stack_alloc; \
- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
- yyptr += yynewbytes / sizeof (*yyptr); \
- } \
- while (YYID (0))
-
-#endif
-
-/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 11
-/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 2619
-
-/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 296
-/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 472
-/* YYNRULES -- Number of rules. */
-#define YYNRULES 1129
-/* YYNRULES -- Number of states. */
-#define YYNSTATES 1626
-
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
-#define YYUNDEFTOK 2
-#define YYMAXUTOK 549
-
-#define YYTRANSLATE(YYX) \
- ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
-static const yytype_uint16 yytranslate[] = {
- 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 295, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
- 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
- 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294
-};
-
-#if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
- YYRHS. */
-static const yytype_uint16 yyprhs[] = {
- 0, 0, 3, 5, 13, 14, 17, 20, 23, 26,
- 29, 32, 34, 38, 44, 48, 50, 52, 56, 58,
- 61, 64, 67, 70, 73, 77, 79, 81, 85, 87,
- 90, 93, 96, 99, 105, 111, 112, 114, 118, 122,
- 124, 126, 128, 131, 134, 138, 142, 146, 150, 153,
- 157, 159, 161, 163, 168, 170, 172, 174, 176, 180,
- 181, 184, 187, 190, 194, 196, 199, 203, 205, 207,
- 213, 217, 221, 226, 228, 231, 234, 237, 240, 243,
- 246, 248, 253, 254, 256, 258, 262, 264, 266, 268,
- 273, 275, 277, 279, 280, 282, 284, 290, 291, 294,
- 300, 304, 305, 308, 312, 313, 316, 319, 322, 325,
- 328, 331, 334, 338, 342, 343, 346, 349, 352, 355,
- 358, 361, 364, 367, 370, 373, 376, 379, 382, 385,
- 388, 391, 394, 398, 399, 401, 405, 407, 409, 411,
- 415, 417, 419, 423, 427, 428, 431, 434, 439, 440,
- 442, 447, 448, 450, 454, 456, 458, 462, 464, 466,
- 470, 472, 474, 478, 480, 482, 486, 488, 490, 494,
- 495, 498, 502, 504, 506, 508, 513, 515, 518, 521,
- 524, 527, 531, 533, 535, 537, 541, 542, 545, 548,
- 551, 554, 557, 560, 563, 566, 569, 572, 575, 578,
- 581, 584, 588, 590, 592, 595, 598, 602, 604, 606,
- 608, 615, 617, 619, 620, 622, 623, 625, 626, 628,
- 632, 633, 636, 640, 642, 645, 649, 656, 658, 660,
- 663, 666, 670, 672, 674, 676, 682, 684, 686, 688,
- 690, 692, 694, 696, 697, 699, 701, 705, 707, 709,
- 711, 713, 715, 718, 721, 725, 731, 733, 736, 739,
- 742, 745, 750, 753, 757, 759, 762, 765, 768, 771,
- 774, 777, 780, 783, 786, 789, 792, 795, 798, 800,
- 802, 806, 808, 810, 812, 816, 818, 821, 824, 827,
- 830, 833, 836, 839, 842, 845, 848, 851, 854, 859,
- 860, 862, 866, 868, 870, 873, 876, 879, 882, 885,
- 888, 891, 894, 897, 903, 905, 907, 910, 913, 915,
- 917, 919, 921, 923, 929, 931, 933, 936, 939, 945,
- 947, 949, 952, 955, 961, 966, 968, 970, 972, 974,
- 977, 980, 984, 986, 989, 993, 994, 997, 1000, 1003,
- 1006, 1010, 1014, 1019, 1022, 1026, 1028, 1030, 1033, 1038,
- 1040, 1042, 1045, 1048, 1051, 1054, 1057, 1060, 1063, 1066,
- 1071, 1072, 1074, 1076, 1080, 1082, 1085, 1088, 1091, 1094,
- 1098, 1099, 1102, 1106, 1107, 1110, 1113, 1116, 1119, 1121,
- 1123, 1125, 1127, 1131, 1133, 1136, 1140, 1141, 1144, 1147,
- 1150, 1154, 1155, 1158, 1161, 1164, 1167, 1170, 1173, 1176,
- 1179, 1182, 1185, 1188, 1191, 1194, 1197, 1200, 1203, 1210,
- 1212, 1214, 1217, 1220, 1224, 1226, 1228, 1231, 1234, 1240,
- 1242, 1244, 1247, 1250, 1254, 1256, 1258, 1261, 1265, 1266,
- 1269, 1272, 1275, 1279, 1281, 1283, 1285, 1287, 1289, 1291,
- 1293, 1295, 1297, 1301, 1303, 1306, 1310, 1314, 1316, 1319,
- 1321, 1323, 1327, 1329, 1331, 1337, 1339, 1342, 1345, 1348,
- 1351, 1355, 1359, 1360, 1363, 1367, 1368, 1371, 1374, 1379,
- 1381, 1383, 1389, 1391, 1393, 1395, 1397, 1399, 1400, 1402,
- 1404, 1408, 1410, 1412, 1414, 1417, 1421, 1422, 1425, 1428,
- 1431, 1435, 1436, 1439, 1443, 1444, 1447, 1449, 1451, 1455,
- 1456, 1459, 1462, 1466, 1468, 1470, 1472, 1475, 1479, 1481,
- 1484, 1487, 1490, 1495, 1496, 1498, 1502, 1504, 1507, 1510,
- 1513, 1516, 1519, 1522, 1525, 1528, 1531, 1534, 1537, 1540,
- 1543, 1546, 1550, 1551, 1554, 1557, 1560, 1563, 1568, 1570,
- 1572, 1573, 1575, 1577, 1582, 1584, 1586, 1588, 1590, 1592,
- 1594, 1599, 1601, 1604, 1608, 1609, 1612, 1615, 1618, 1622,
- 1624, 1627, 1629, 1631, 1637, 1639, 1641, 1643, 1647, 1648,
- 1651, 1655, 1656, 1659, 1662, 1665, 1668, 1672, 1674, 1677,
- 1679, 1681, 1683, 1685, 1687, 1692, 1694, 1697, 1700, 1703,
- 1706, 1709, 1712, 1715, 1718, 1721, 1725, 1727, 1730, 1733,
- 1736, 1739, 1744, 1746, 1749, 1752, 1755, 1758, 1761, 1766,
- 1768, 1771, 1774, 1778, 1779, 1782, 1785, 1789, 1790, 1793,
- 1796, 1799, 1802, 1804, 1806, 1808, 1810, 1815, 1816, 1818,
- 1820, 1822, 1825, 1829, 1830, 1833, 1836, 1841, 1843, 1846,
- 1849, 1855, 1857, 1859, 1862, 1865, 1869, 1870, 1873, 1876,
- 1879, 1883, 1885, 1888, 1892, 1893, 1896, 1899, 1902, 1906,
- 1908, 1911, 1914, 1917, 1920, 1925, 1929, 1931, 1934, 1938,
- 1940, 1942, 1944, 1946, 1948, 1950, 1952, 1954, 1958, 1965,
- 1967, 1969, 1972, 1975, 1982, 1984, 1986, 1989, 1992, 1998,
- 2000, 2002, 2006, 2010, 2012, 2015, 2018, 2021, 2024, 2027,
- 2030, 2033, 2036, 2039, 2043, 2047, 2049, 2052, 2058, 2059,
- 2061, 2066, 2070, 2072, 2075, 2079, 2081, 2084, 2088, 2092,
- 2093, 2096, 2099, 2102, 2106, 2107, 2110, 2114, 2115, 2118,
- 2121, 2124, 2128, 2130, 2133, 2137, 2138, 2141, 2146, 2150,
- 2152, 2155, 2159, 2161, 2164, 2167, 2170, 2173, 2176, 2179,
- 2182, 2185, 2188, 2191, 2194, 2197, 2201, 2203, 2206, 2209,
- 2212, 2215, 2218, 2221, 2224, 2227, 2230, 2235, 2237, 2240,
- 2243, 2246, 2251, 2253, 2255, 2258, 2261, 2265, 2266, 2269,
- 2272, 2276, 2278, 2280, 2283, 2286, 2289, 2292, 2295, 2298,
- 2301, 2304, 2307, 2311, 2313, 2315, 2318, 2321, 2324, 2327,
- 2330, 2333, 2336, 2339, 2342, 2345, 2348, 2352, 2353, 2356,
- 2359, 2364, 2368, 2369, 2372, 2375, 2378, 2381, 2383, 2385,
- 2387, 2389, 2394, 2395, 2397, 2399, 2401, 2406, 2407, 2409,
- 2413, 2415, 2418, 2423, 2425, 2428, 2431, 2434, 2437, 2439,
- 2441, 2445, 2446, 2449, 2452, 2455, 2458, 2461, 2464, 2467,
- 2470, 2473, 2476, 2479, 2481, 2483, 2485, 2487, 2489, 2491,
- 2495, 2496, 2499, 2502, 2507, 2509, 2512, 2518, 2520, 2522,
- 2525, 2528, 2533, 2535, 2537, 2539, 2541, 2545, 2546, 2549,
- 2551, 2557, 2559, 2564, 2569, 2574, 2578, 2580, 2583, 2586,
- 2589, 2593, 2595, 2598, 2600, 2604, 2606, 2609, 2612, 2615,
- 2618, 2621, 2625, 2626, 2629, 2632, 2635, 2639, 2640, 2642,
- 2647, 2648, 2650, 2654, 2655, 2657, 2661, 2663, 2666, 2670,
- 2671, 2674, 2677, 2680, 2685, 2687, 2689, 2691, 2693, 2696,
- 2699, 2703, 2707, 2708, 2711, 2714, 2717, 2719, 2722, 2726,
- 2730, 2731, 2734, 2737, 2740, 2743, 2746, 2749, 2752, 2755,
- 2758, 2761, 2764, 2767, 2770, 2774, 2775, 2778, 2782, 2783,
- 2786, 2789, 2794, 2796, 2798, 2800, 2802, 2803, 2805, 2807,
- 2811, 2813, 2816, 2819, 2822, 2825, 2828, 2831, 2835, 2840,
- 2842, 2844, 2846, 2848, 2850, 2859, 2863, 2865, 2868, 2871,
- 2874, 2877, 2885, 2886, 2888, 2889, 2891, 2892, 2894, 2895,
- 2897, 2898, 2900, 2905, 2907, 2909, 2911, 2915, 2916, 2919,
- 2922, 2925, 2928, 2930, 2932, 2934, 2936, 2938, 2940, 2943,
- 2946, 2950, 2952, 2954, 2957, 2960, 2964, 2966, 2968, 2970,
- 2972, 2974, 2976, 2978, 2980, 2982, 2984, 2986, 2988, 2990,
- 2992, 2994, 2996, 2999, 3003, 3005, 3008, 3011, 3014, 3017,
- 3019, 3021, 3023, 3025, 3029, 3035, 3037, 3040, 3043, 3046,
- 3049, 3052, 3056, 3057, 3060, 3063, 3067, 3068, 3071, 3074,
- 3077, 3080, 3083, 3086, 3089, 3092, 3094, 3096, 3101, 3102,
- 3104, 3108, 3110, 3112, 3114, 3116, 3118, 3120, 3122, 3124,
- 3126, 3128, 3132, 3136, 3142, 3146, 3150, 3151, 3154, 3157,
- 3160, 3164, 3166, 3169, 3172, 3175, 3178, 3181, 3184, 3188,
- 3190, 3193, 3196, 3199, 3202, 3205, 3208, 3210, 3212, 3214
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS. */
-static const yytype_int16 yyrhs[] = {
- 298, 0, -1, 295, -1, 116, 300, 302, 301, 488,
- 299, 297, -1, -1, 299, 690, -1, 299, 416, -1,
- 299, 495, -1, 299, 384, -1, 299, 350, -1, 299,
- 737, -1, 551, -1, 117, 766, 297, -1, 118, 766,
- 766, 766, 297, -1, 62, 304, 297, -1, 542, -1,
- 540, -1, 63, 306, 297, -1, 542, -1, 306, 440,
- -1, 306, 530, -1, 306, 504, -1, 306, 350, -1,
- 306, 737, -1, 64, 308, 297, -1, 765, -1, 695,
- -1, 65, 310, 297, -1, 366, -1, 310, 508, -1,
- 310, 520, -1, 310, 350, -1, 310, 737, -1, 66,
- 620, 620, 620, 297, -1, 67, 551, 766, 313, 297,
- -1, -1, 766, -1, 68, 612, 297, -1, 69, 316,
- 297, -1, 321, -1, 317, -1, 314, -1, 316, 350,
- -1, 316, 737, -1, 70, 686, 297, -1, 71, 670,
- 297, -1, 72, 670, 297, -1, 73, 765, 297, -1,
- 74, 297, -1, 75, 323, 297, -1, 517, -1, 510,
- -1, 518, -1, 76, 325, 326, 297, -1, 318, -1,
- 448, -1, 319, -1, 492, -1, 77, 328, 297, -1,
- -1, 328, 332, -1, 328, 329, -1, 328, 327, -1,
- 78, 330, 297, -1, 332, -1, 330, 395, -1, 79,
- 332, 297, -1, 728, -1, 419, -1, 80, 766, 766,
- 327, 297, -1, 81, 766, 297, -1, 82, 659, 297,
- -1, 83, 338, 337, 297, -1, 342, -1, 337, 690,
- -1, 337, 746, -1, 337, 742, -1, 337, 350, -1,
- 337, 737, -1, 337, 650, -1, 551, -1, 84, 341,
- 340, 297, -1, -1, 497, -1, 552, -1, 85, 343,
- 297, -1, 55, -1, 49, -1, 23, -1, 86, 345,
- 346, 297, -1, 643, -1, 644, -1, 637, -1, -1,
- 322, -1, 724, -1, 87, 620, 620, 348, 297, -1,
- -1, 348, 650, -1, 88, 670, 670, 670, 297, -1,
- 89, 351, 297, -1, -1, 351, 765, -1, 90, 353,
- 297, -1, -1, 353, 307, -1, 353, 430, -1, 353,
- 454, -1, 353, 335, -1, 353, 650, -1, 353, 350,
- -1, 353, 737, -1, 91, 517, 297, -1, 93, 356,
- 297, -1, -1, 356, 454, -1, 356, 582, -1, 356,
- 430, -1, 356, 673, -1, 356, 553, -1, 356, 557,
- -1, 356, 597, -1, 356, 352, -1, 356, 633, -1,
- 356, 716, -1, 356, 678, -1, 356, 760, -1, 356,
- 440, -1, 356, 522, -1, 356, 335, -1, 356, 350,
- -1, 356, 737, -1, 92, 358, 297, -1, -1, 430,
- -1, 94, 360, 297, -1, 20, -1, 50, -1, 57,
- -1, 95, 362, 297, -1, 766, -1, 466, -1, 96,
- 542, 297, -1, 97, 365, 297, -1, -1, 365, 311,
- -1, 365, 620, -1, 98, 766, 367, 297, -1, -1,
- 404, -1, 99, 765, 369, 297, -1, -1, 741, -1,
- 100, 371, 297, -1, 670, -1, 578, -1, 101, 373,
- 297, -1, 670, -1, 578, -1, 102, 375, 297, -1,
- 670, -1, 578, -1, 103, 377, 297, -1, 670, -1,
- 578, -1, 104, 379, 297, -1, 542, -1, 540, -1,
- 105, 381, 297, -1, -1, 381, 620, -1, 106, 383,
- 297, -1, 9, -1, 34, -1, 47, -1, 107, 388,
- 385, 297, -1, 339, -1, 385, 690, -1, 385, 350,
- -1, 385, 650, -1, 385, 737, -1, 108, 387, 297,
- -1, 765, -1, 695, -1, 551, -1, 220, 390, 297,
- -1, -1, 390, 437, -1, 390, 432, -1, 390, 661,
- -1, 390, 435, -1, 390, 592, -1, 390, 590, -1,
- 390, 405, -1, 390, 472, -1, 390, 476, -1, 390,
- 574, -1, 390, 572, -1, 390, 420, -1, 390, 350,
- -1, 390, 737, -1, 109, 392, 297, -1, 428, -1,
- 434, -1, 392, 428, -1, 392, 434, -1, 110, 394,
- 297, -1, 26, -1, 27, -1, 40, -1, 111, 396,
- 397, 398, 399, 297, -1, 423, -1, 426, -1, -1,
- 483, -1, -1, 587, -1, -1, 589, -1, 112, 401,
- 297, -1, -1, 401, 517, -1, 113, 403, 297, -1,
- 620, -1, 403, 650, -1, 114, 670, 297, -1, 119,
- 668, 424, 424, 406, 297, -1, 656, -1, 682, -1,
- 406, 350, -1, 406, 737, -1, 120, 408, 297, -1,
- 20, -1, 50, -1, 57, -1, 121, 410, 411, 412,
- 297, -1, 533, -1, 344, -1, 692, -1, 524, -1,
- 644, -1, 569, -1, 704, -1, -1, 378, -1, 502,
- -1, 122, 414, 297, -1, 644, -1, 637, -1, 631,
- -1, 567, -1, 561, -1, 414, 724, -1, 414, 322,
- -1, 123, 670, 297, -1, 124, 493, 301, 417, 297,
- -1, 709, -1, 417, 690, -1, 417, 336, -1, 417,
- 350, -1, 417, 737, -1, 125, 491, 423, 297, -1,
- 126, 297, -1, 129, 421, 297, -1, 422, -1, 421,
- 359, -1, 421, 407, -1, 421, 609, -1, 421, 334,
- -1, 421, 349, -1, 421, 439, -1, 421, 333, -1,
- 421, 711, -1, 421, 754, -1, 421, 350, -1, 421,
- 650, -1, 421, 737, -1, 421, 451, -1, 551, -1,
- 552, -1, 130, 425, 297, -1, 423, -1, 428, -1,
- 434, -1, 131, 427, 297, -1, 423, -1, 427, 359,
- -1, 427, 407, -1, 427, 609, -1, 427, 334, -1,
- 427, 349, -1, 427, 439, -1, 427, 333, -1, 427,
- 711, -1, 427, 754, -1, 427, 350, -1, 427, 650,
- -1, 427, 737, -1, 132, 423, 429, 297, -1, -1,
- 497, -1, 127, 431, 297, -1, 422, -1, 426, -1,
- 431, 347, -1, 431, 402, -1, 431, 585, -1, 431,
- 605, -1, 431, 621, -1, 431, 659, -1, 431, 675,
- -1, 431, 350, -1, 431, 737, -1, 128, 668, 424,
- 433, 297, -1, 656, -1, 682, -1, 433, 350, -1,
- 433, 737, -1, 474, -1, 732, -1, 391, -1, 478,
- -1, 594, -1, 133, 668, 424, 436, 297, -1, 656,
- -1, 682, -1, 436, 350, -1, 436, 737, -1, 134,
- 668, 424, 438, 297, -1, 656, -1, 682, -1, 438,
- 350, -1, 438, 737, -1, 135, 766, 766, 327, 297,
- -1, 136, 441, 442, 297, -1, 643, -1, 644, -1,
- 644, -1, 704, -1, 442, 378, -1, 442, 502, -1,
- 137, 444, 297, -1, 712, -1, 444, 413, -1, 767,
- 446, 295, -1, -1, 446, 766, -1, 446, 765, -1,
- 446, 764, -1, 446, 445, -1, 138, 643, 297, -1,
- 139, 670, 297, -1, 140, 670, 670, 297, -1, 141,
- 297, -1, 142, 452, 297, -1, 428, -1, 434, -1,
- 143, 297, -1, 144, 464, 455, 297, -1, 750, -1,
- 744, -1, 455, 718, -1, 455, 604, -1, 455, 635,
- -1, 455, 716, -1, 455, 386, -1, 455, 650, -1,
- 455, 350, -1, 455, 737, -1, 148, 465, 457, 297,
- -1, -1, 456, -1, 750, -1, 145, 459, 297, -1,
- 456, -1, 459, 386, -1, 459, 716, -1, 459, 650,
- -1, 459, 350, -1, 146, 461, 297, -1, -1, 461,
- 456, -1, 147, 463, 297, -1, -1, 463, 456, -1,
- 463, 460, -1, 463, 350, -1, 463, 737, -1, 551,
- -1, 312, -1, 552, -1, 536, -1, 150, 467, 297,
- -1, 766, -1, 467, 395, -1, 149, 469, 297, -1,
- -1, 469, 766, -1, 469, 466, -1, 469, 468, -1,
- 151, 471, 297, -1, -1, 471, 623, -1, 471, 627,
- -1, 471, 700, -1, 471, 654, -1, 471, 315, -1,
- 471, 602, -1, 471, 481, -1, 471, 547, -1, 471,
- 758, -1, 471, 610, -1, 471, 716, -1, 471, 678,
- -1, 471, 386, -1, 471, 650, -1, 471, 350, -1,
- 471, 737, -1, 152, 668, 424, 424, 473, 297, -1,
- 656, -1, 682, -1, 473, 350, -1, 473, 737, -1,
- 153, 475, 297, -1, 428, -1, 434, -1, 475, 428,
- -1, 475, 434, -1, 154, 668, 424, 477, 297, -1,
- 656, -1, 682, -1, 477, 350, -1, 477, 737, -1,
- 155, 479, 297, -1, 428, -1, 434, -1, 156, 297,
- -1, 157, 482, 297, -1, -1, 482, 644, -1, 482,
- 637, -1, 482, 447, -1, 158, 484, 297, -1, 11,
- -1, 12, -1, 13, -1, 29, -1, 30, -1, 31,
- -1, 58, -1, 59, -1, 60, -1, 159, 486, 297,
- -1, 490, -1, 486, 395, -1, 160, 766, 297, -1,
- 161, 489, 297, -1, 487, -1, 489, 350, -1, 764,
- -1, 551, -1, 162, 670, 297, -1, 551, -1, 552,
- -1, 163, 493, 301, 496, 297, -1, 709, -1, 496,
- 690, -1, 496, 336, -1, 496, 350, -1, 496, 737,
- -1, 164, 494, 297, -1, 165, 499, 297, -1, -1,
- 499, 553, -1, 166, 501, 297, -1, -1, 501, 623,
- -1, 501, 627, -1, 167, 503, 503, 297, -1, 542,
- -1, 540, -1, 168, 505, 506, 507, 297, -1, 643,
- -1, 644, -1, 644, -1, 524, -1, 704, -1, -1,
- 378, -1, 502, -1, 169, 509, 297, -1, 637, -1,
- 644, -1, 643, -1, 509, 528, -1, 170, 511, 297,
- -1, -1, 511, 517, -1, 511, 518, -1, 511, 450,
- -1, 171, 513, 297, -1, -1, 513, 517, -1, 172,
- 515, 297, -1, -1, 515, 517, -1, 551, -1, 552,
- -1, 173, 519, 297, -1, -1, 519, 517, -1, 519,
- 510, -1, 174, 521, 297, -1, 637, -1, 644, -1,
- 643, -1, 521, 528, -1, 175, 523, 297, -1, 642,
- -1, 523, 650, -1, 523, 350, -1, 523, 737, -1,
- 176, 517, 525, 297, -1, -1, 497, -1, 177, 527,
- 297, -1, 516, -1, 527, 755, -1, 527, 363, -1,
- 527, 331, -1, 527, 354, -1, 527, 757, -1, 527,
- 699, -1, 527, 400, -1, 527, 514, -1, 527, 512,
- -1, 527, 480, -1, 527, 666, -1, 527, 650, -1,
- 527, 350, -1, 527, 737, -1, 178, 529, 297, -1,
- -1, 529, 517, -1, 529, 510, -1, 529, 518, -1,
- 529, 450, -1, 179, 531, 532, 297, -1, 643, -1,
- 644, -1, -1, 378, -1, 502, -1, 180, 534, 535,
- 297, -1, 643, -1, 644, -1, 637, -1, 517, -1,
- 510, -1, 518, -1, 181, 552, 537, 297, -1, 766,
- -1, 537, 766, -1, 182, 539, 297, -1, -1, 539,
- 542, -1, 539, 540, -1, 539, 538, -1, 183, 541,
- 297, -1, 542, -1, 541, 395, -1, 543, -1, 670,
- -1, 184, 544, 544, 544, 297, -1, 670, -1, 731,
- -1, 730, -1, 185, 546, 297, -1, -1, 546, 657,
- -1, 186, 548, 297, -1, -1, 548, 644, -1, 548,
- 637, -1, 548, 758, -1, 548, 481, -1, 187, 550,
- 297, -1, 764, -1, 550, 395, -1, 764, -1, 549,
- -1, 663, -1, 764, -1, 549, -1, 188, 565, 554,
- 297, -1, 481, -1, 554, 361, -1, 554, 559, -1,
- 554, 430, -1, 554, 553, -1, 554, 454, -1, 554,
- 352, -1, 554, 650, -1, 554, 350, -1, 554, 737,
- -1, 189, 556, 297, -1, 567, -1, 556, 559, -1,
- 556, 361, -1, 556, 650, -1, 556, 350, -1, 190,
- 565, 558, 297, -1, 498, -1, 558, 430, -1, 558,
- 352, -1, 558, 650, -1, 558, 350, -1, 558, 737,
- -1, 191, 382, 560, 297, -1, 378, -1, 560, 724,
- -1, 560, 322, -1, 192, 562, 297, -1, -1, 562,
- 566, -1, 562, 567, -1, 193, 564, 297, -1, -1,
- 564, 567, -1, 564, 561, -1, 564, 350, -1, 564,
- 737, -1, 551, -1, 312, -1, 552, -1, 536, -1,
- 194, 566, 568, 297, -1, -1, 567, -1, 456, -1,
- 750, -1, 195, 297, -1, 196, 571, 297, -1, -1,
- 571, 644, -1, 571, 610, -1, 197, 668, 573, 297,
- -1, 424, -1, 573, 350, -1, 573, 737, -1, 198,
- 668, 424, 575, 297, -1, 656, -1, 682, -1, 575,
- 350, -1, 575, 737, -1, 199, 577, 297, -1, -1,
- 577, 670, -1, 577, 578, -1, 577, 576, -1, 201,
- 579, 297, -1, 670, -1, 579, 395, -1, 200, 581,
- 297, -1, -1, 581, 669, -1, 581, 449, -1, 581,
- 350, -1, 202, 583, 297, -1, 642, -1, 583, 736,
- -1, 583, 650, -1, 583, 350, -1, 583, 737, -1,
- 203, 413, 670, 297, -1, 204, 586, 297, -1, 364,
- -1, 586, 650, -1, 205, 588, 297, -1, 43, -1,
- 46, -1, 44, -1, 45, -1, 35, -1, 37, -1,
- 38, -1, 36, -1, 206, 620, 297, -1, 207, 668,
- 424, 424, 591, 297, -1, 656, -1, 682, -1, 591,
- 350, -1, 591, 737, -1, 208, 668, 424, 424, 593,
- 297, -1, 656, -1, 682, -1, 593, 350, -1, 593,
- 737, -1, 209, 766, 595, 359, 297, -1, 428, -1,
- 434, -1, 210, 765, 297, -1, 211, 598, 297, -1,
- 464, -1, 598, 454, -1, 598, 553, -1, 598, 557,
- -1, 598, 352, -1, 598, 633, -1, 598, 599, -1,
- 598, 335, -1, 598, 350, -1, 598, 737, -1, 212,
- 659, 297, -1, 215, 601, 297, -1, 740, -1, 601,
- 395, -1, 213, 739, 729, 603, 297, -1, -1, 734,
- -1, 214, 740, 729, 297, -1, 216, 606, 297, -1,
- 618, -1, 606, 650, -1, 217, 608, 297, -1, 378,
- -1, 608, 413, -1, 218, 766, 297, -1, 219, 611,
- 297, -1, -1, 611, 644, -1, 611, 610, -1, 611,
- 570, -1, 221, 613, 297, -1, -1, 613, 688, -1,
- 222, 615, 297, -1, -1, 615, 620, -1, 615, 616,
- -1, 615, 614, -1, 223, 617, 297, -1, 620, -1,
- 617, 395, -1, 224, 619, 297, -1, -1, 619, 620,
- -1, 241, 766, 766, 297, -1, 225, 622, 297, -1,
- 618, -1, 622, 650, -1, 226, 624, 297, -1, 642,
- -1, 624, 393, -1, 624, 736, -1, 624, 629, -1,
- 624, 386, -1, 624, 370, -1, 624, 372, -1, 624,
- 374, -1, 624, 376, -1, 624, 303, -1, 624, 650,
- -1, 624, 350, -1, 624, 737, -1, 227, 626, 297,
- -1, 644, -1, 626, 386, -1, 626, 629, -1, 626,
- 370, -1, 626, 372, -1, 626, 374, -1, 626, 376,
- -1, 626, 303, -1, 626, 650, -1, 626, 350, -1,
- 228, 642, 628, 297, -1, 500, -1, 628, 650, -1,
- 628, 350, -1, 628, 737, -1, 229, 382, 630, 297,
- -1, 378, -1, 502, -1, 630, 724, -1, 630, 322,
- -1, 230, 632, 297, -1, -1, 632, 643, -1, 632,
- 644, -1, 231, 634, 297, -1, 644, -1, 643, -1,
- 634, 357, -1, 634, 430, -1, 634, 454, -1, 634,
- 352, -1, 634, 648, -1, 634, 485, -1, 634, 650,
- -1, 634, 737, -1, 634, 350, -1, 232, 636, 297,
- -1, 644, -1, 643, -1, 636, 736, -1, 636, 629,
- -1, 636, 386, -1, 636, 370, -1, 636, 372, -1,
- 636, 374, -1, 636, 376, -1, 636, 303, -1, 636,
- 650, -1, 636, 350, -1, 636, 737, -1, 233, 638,
- 297, -1, -1, 638, 644, -1, 638, 643, -1, 234,
- 642, 637, 297, -1, 235, 641, 297, -1, -1, 641,
- 644, -1, 641, 631, -1, 641, 350, -1, 641, 737,
- -1, 551, -1, 312, -1, 552, -1, 536, -1, 236,
- 643, 645, 297, -1, -1, 644, -1, 456, -1, 750,
- -1, 237, 765, 647, 297, -1, -1, 741, -1, 239,
- 649, 297, -1, 653, -1, 649, 395, -1, 238, 652,
- 651, 297, -1, 729, -1, 651, 596, -1, 651, 734,
- -1, 651, 650, -1, 651, 350, -1, 551, -1, 552,
- -1, 240, 655, 297, -1, -1, 655, 633, -1, 655,
- 430, -1, 655, 454, -1, 655, 352, -1, 655, 335,
- -1, 655, 648, -1, 655, 485, -1, 655, 600, -1,
- 655, 650, -1, 655, 350, -1, 655, 737, -1, 492,
- -1, 448, -1, 319, -1, 318, -1, 415, -1, 324,
- -1, 242, 658, 297, -1, -1, 658, 656, -1, 658,
- 682, -1, 243, 620, 660, 297, -1, 620, -1, 660,
- 650, -1, 244, 668, 424, 662, 297, -1, 657, -1,
- 545, -1, 662, 350, -1, 662, 737, -1, 245, 664,
- 665, 297, -1, 764, -1, 549, -1, 765, -1, 695,
- -1, 246, 667, 297, -1, -1, 667, 517, -1, 551,
- -1, 247, 670, 670, 734, 297, -1, 766, -1, 115,
- 766, 766, 297, -1, 248, 766, 766, 297, -1, 249,
- 766, 766, 297, -1, 250, 674, 297, -1, 765, -1,
- 674, 673, -1, 674, 765, -1, 674, 454, -1, 251,
- 676, 297, -1, 364, -1, 676, 650, -1, 551, -1,
- 252, 679, 297, -1, 677, -1, 679, 639, -1, 679,
- 756, -1, 679, 309, -1, 679, 350, -1, 679, 737,
- -1, 253, 681, 297, -1, -1, 681, 526, -1, 681,
- 350, -1, 681, 737, -1, 254, 683, 297, -1, -1,
- 656, -1, 255, 750, 685, 297, -1, -1, 718, -1,
- 256, 687, 297, -1, -1, 702, -1, 257, 689, 297,
- -1, 702, -1, 689, 684, -1, 258, 691, 297, -1,
- -1, 691, 762, -1, 691, 350, -1, 691, 737, -1,
- 259, 693, 694, 297, -1, 643, -1, 644, -1, 637,
- -1, 404, -1, 694, 724, -1, 694, 322, -1, 261,
- 698, 297, -1, 260, 697, 297, -1, -1, 697, 765,
- -1, 697, 695, -1, 697, 696, -1, 765, -1, 698,
- 395, -1, 262, 517, 297, -1, 263, 701, 297, -1,
- -1, 701, 633, -1, 701, 430, -1, 701, 454, -1,
- 701, 352, -1, 701, 307, -1, 701, 599, -1, 701,
- 335, -1, 701, 648, -1, 701, 485, -1, 701, 600,
- -1, 701, 650, -1, 701, 350, -1, 701, 737, -1,
- 264, 703, 297, -1, -1, 703, 718, -1, 265, 705,
- 297, -1, -1, 705, 409, -1, 705, 706, -1, 266,
- 707, 708, 297, -1, 524, -1, 644, -1, 569, -1,
- 704, -1, -1, 378, -1, 502, -1, 267, 710, 297,
- -1, 580, -1, 710, 420, -1, 710, 418, -1, 710,
- 680, -1, 710, 389, -1, 710, 350, -1, 710, 737,
- -1, 268, 766, 297, -1, 269, 713, 714, 297, -1,
- 413, -1, 584, -1, 413, -1, 584, -1, 404, -1,
- 270, 766, 766, 766, 766, 766, 766, 297, -1, 271,
- 717, 297, -1, 382, -1, 717, 607, -1, 717, 443,
- -1, 717, 350, -1, 717, 737, -1, 272, 719, 720,
- 721, 722, 723, 297, -1, -1, 671, -1, -1, 672,
- -1, -1, 380, -1, -1, 587, -1, -1, 589, -1,
- 273, 725, 725, 297, -1, 517, -1, 510, -1, 518,
- -1, 274, 727, 297, -1, -1, 727, 344, -1, 727,
- 692, -1, 727, 453, -1, 275, 297, -1, 327, -1,
- 468, -1, 538, -1, 576, -1, 614, -1, 696, -1,
- 276, 297, -1, 277, 297, -1, 278, 733, 297, -1,
- 428, -1, 434, -1, 733, 428, -1, 733, 434, -1,
- 279, 735, 297, -1, 17, -1, 10, -1, 16, -1,
- 48, -1, 54, -1, 56, -1, 61, -1, 33, -1,
- 22, -1, 25, -1, 19, -1, 42, -1, 14, -1,
- 15, -1, 21, -1, 7, -1, 280, 297, -1, 281,
- 738, 297, -1, 764, -1, 738, 766, -1, 738, 765,
- -1, 738, 764, -1, 738, 445, -1, 551, -1, 312,
- -1, 552, -1, 536, -1, 282, 765, 297, -1, 283,
- 748, 752, 743, 297, -1, 470, -1, 743, 690, -1,
- 743, 355, -1, 743, 350, -1, 743, 650, -1, 743,
- 737, -1, 284, 745, 297, -1, -1, 745, 750, -1,
- 745, 744, -1, 285, 747, 297, -1, -1, 747, 640,
- -1, 747, 625, -1, 747, 462, -1, 747, 458, -1,
- 747, 563, -1, 747, 555, -1, 747, 350, -1, 747,
- 737, -1, 551, -1, 552, -1, 286, 749, 751, 297,
- -1, -1, 339, -1, 287, 753, 297, -1, 32, -1,
- 41, -1, 39, -1, 51, -1, 53, -1, 8, -1,
- 28, -1, 18, -1, 24, -1, 52, -1, 288, 332,
- 297, -1, 289, 542, 297, -1, 290, 516, 670, 528,
- 297, -1, 291, 517, 297, -1, 292, 759, 297, -1,
- -1, 759, 644, -1, 759, 637, -1, 759, 481, -1,
- 293, 761, 297, -1, 726, -1, 761, 305, -1, 761,
- 440, -1, 761, 530, -1, 761, 504, -1, 761, 350,
- -1, 761, 737, -1, 294, 763, 297, -1, 715, -1,
- 763, 320, -1, 763, 646, -1, 763, 368, -1, 763,
- 650, -1, 763, 350, -1, 763, 737, -1, 3, -1,
- 6, -1, 4, -1, 5, -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
-static const yytype_uint16 yyrline[] = {
- 0, 505, 505, 508, 511, 512, 513, 514, 515, 516,
- 517, 520, 523, 526, 530, 533, 534, 537, 540, 541,
- 542, 543, 544, 545, 548, 551, 552, 555, 558, 559,
- 560, 561, 562, 565, 568, 571, 572, 575, 578, 581,
- 582, 583, 584, 585, 588, 591, 594, 597, 600, 603,
- 606, 607, 608, 611, 614, 615, 618, 619, 622, 625,
- 626, 627, 628, 631, 634, 635, 638, 641, 642, 645,
- 648, 651, 654, 657, 658, 659, 660, 661, 662, 663,
- 666, 669, 672, 673, 676, 679, 682, 683, 684, 687,
- 690, 691, 692, 695, 696, 697, 700, 703, 704, 707,
- 710, 713, 714, 717, 720, 721, 722, 723, 724, 725,
- 726, 727, 730, 733, 736, 737, 738, 739, 740, 741,
- 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
- 752, 753, 756, 759, 760, 763, 766, 767, 768, 771,
- 774, 775, 778, 781, 784, 785, 786, 789, 792, 793,
- 796, 799, 800, 803, 806, 807, 810, 813, 814, 817,
- 820, 821, 824, 827, 828, 831, 834, 835, 838, 841,
- 842, 845, 848, 849, 850, 853, 856, 857, 858, 859,
- 860, 863, 866, 867, 870, 873, 876, 877, 878, 879,
- 880, 881, 882, 883, 884, 885, 886, 887, 888, 889,
- 890, 893, 896, 897, 898, 899, 902, 905, 906, 907,
- 910, 913, 914, 917, 918, 921, 922, 925, 926, 929,
- 932, 933, 936, 939, 940, 943, 946, 950, 951, 952,
- 953, 956, 959, 960, 961, 964, 968, 969, 970, 973,
- 974, 975, 976, 979, 980, 981, 984, 987, 988, 989,
- 990, 991, 992, 993, 996, 999, 1002, 1003, 1004, 1005,
- 1006, 1009, 1012, 1015, 1018, 1019, 1020, 1021, 1022, 1023,
- 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1034, 1037,
- 1040, 1043, 1044, 1045, 1048, 1051, 1052, 1053, 1054, 1055,
- 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1066, 1069,
- 1070, 1073, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083,
- 1084, 1085, 1086, 1089, 1092, 1093, 1094, 1095, 1098, 1099,
- 1100, 1101, 1102, 1105, 1108, 1109, 1110, 1111, 1114, 1117,
- 1118, 1119, 1120, 1123, 1126, 1129, 1130, 1133, 1134, 1135,
- 1136, 1139, 1142, 1143, 1146, 1149, 1150, 1151, 1152, 1153,
- 1156, 1159, 1162, 1165, 1168, 1171, 1172, 1175, 1178, 1181,
- 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1193,
- 1196, 1197, 1198, 1201, 1204, 1205, 1206, 1207, 1208, 1211,
- 1214, 1215, 1218, 1221, 1222, 1223, 1224, 1225, 1228, 1229,
- 1232, 1233, 1236, 1239, 1240, 1243, 1246, 1247, 1248, 1249,
- 1252, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263,
- 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1274, 1278,
- 1279, 1280, 1281, 1284, 1287, 1288, 1289, 1290, 1293, 1296,
- 1297, 1298, 1299, 1302, 1305, 1306, 1309, 1312, 1315, 1316,
- 1317, 1318, 1321, 1324, 1325, 1326, 1327, 1328, 1329, 1330,
- 1331, 1332, 1335, 1338, 1339, 1342, 1345, 1348, 1349, 1352,
- 1355, 1358, 1361, 1364, 1367, 1370, 1371, 1372, 1373, 1374,
- 1377, 1380, 1383, 1384, 1387, 1390, 1391, 1392, 1395, 1398,
- 1399, 1402, 1405, 1406, 1409, 1410, 1411, 1414, 1415, 1416,
- 1419, 1422, 1423, 1424, 1425, 1428, 1431, 1432, 1433, 1434,
- 1437, 1440, 1441, 1444, 1447, 1448, 1451, 1454, 1457, 1460,
- 1461, 1462, 1465, 1468, 1469, 1470, 1471, 1474, 1477, 1478,
- 1479, 1480, 1483, 1486, 1487, 1490, 1493, 1494, 1495, 1496,
- 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506,
- 1507, 1510, 1513, 1514, 1515, 1516, 1517, 1520, 1523, 1524,
- 1527, 1528, 1529, 1532, 1535, 1536, 1537, 1540, 1541, 1542,
- 1545, 1548, 1549, 1552, 1555, 1556, 1557, 1558, 1561, 1564,
- 1565, 1568, 1569, 1572, 1575, 1576, 1577, 1580, 1583, 1584,
- 1587, 1590, 1591, 1592, 1593, 1594, 1597, 1600, 1601, 1604,
- 1605, 1606, 1609, 1610, 1613, 1616, 1617, 1618, 1619, 1620,
- 1621, 1622, 1623, 1624, 1625, 1628, 1631, 1632, 1633, 1634,
- 1635, 1638, 1641, 1642, 1643, 1644, 1645, 1646, 1649, 1652,
- 1653, 1654, 1657, 1660, 1661, 1662, 1665, 1668, 1669, 1670,
- 1671, 1672, 1675, 1676, 1680, 1681, 1684, 1687, 1688, 1689,
- 1690, 1693, 1696, 1699, 1700, 1701, 1704, 1707, 1708, 1709,
- 1712, 1715, 1716, 1717, 1718, 1721, 1724, 1725, 1726, 1727,
- 1730, 1733, 1734, 1737, 1740, 1741, 1742, 1743, 1746, 1749,
- 1750, 1751, 1752, 1753, 1756, 1759, 1762, 1763, 1766, 1769,
- 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1779, 1782, 1786,
- 1787, 1788, 1789, 1792, 1796, 1797, 1798, 1799, 1802, 1805,
- 1806, 1809, 1812, 1815, 1816, 1817, 1818, 1819, 1820, 1821,
- 1822, 1823, 1824, 1827, 1830, 1833, 1834, 1837, 1840, 1841,
- 1844, 1847, 1850, 1851, 1854, 1857, 1858, 1861, 1864, 1867,
- 1868, 1869, 1870, 1873, 1876, 1877, 1880, 1883, 1884, 1885,
- 1886, 1889, 1892, 1893, 1896, 1899, 1900, 1903, 1906, 1909,
- 1910, 1913, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923,
- 1924, 1925, 1926, 1927, 1928, 1931, 1934, 1935, 1936, 1937,
- 1938, 1939, 1940, 1941, 1942, 1943, 1946, 1949, 1950, 1951,
- 1952, 1955, 1958, 1959, 1960, 1961, 1964, 1967, 1968, 1969,
- 1972, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983,
- 1984, 1985, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
- 1998, 1999, 2000, 2001, 2002, 2003, 2006, 2009, 2010, 2011,
- 2014, 2017, 2020, 2021, 2022, 2023, 2024, 2027, 2028, 2031,
- 2032, 2035, 2050, 2051, 2052, 2053, 2056, 2059, 2060, 2063,
- 2066, 2067, 2070, 2073, 2074, 2075, 2076, 2077, 2080, 2083,
- 2086, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097,
- 2098, 2099, 2100, 2103, 2104, 2105, 2106, 2107, 2108, 2111,
- 2114, 2115, 2116, 2119, 2122, 2123, 2126, 2129, 2130, 2131,
- 2132, 2135, 2139, 2140, 2143, 2144, 2147, 2150, 2151, 2154,
- 2157, 2160, 2161, 2164, 2167, 2170, 2173, 2174, 2175, 2176,
- 2179, 2182, 2183, 2186, 2189, 2192, 2193, 2194, 2195, 2196,
- 2197, 2200, 2203, 2204, 2205, 2206, 2209, 2212, 2213, 2216,
- 2219, 2220, 2223, 2226, 2227, 2230, 2233, 2234, 2237, 2240,
- 2241, 2242, 2243, 2246, 2249, 2250, 2251, 2254, 2255, 2256,
- 2259, 2262, 2265, 2266, 2267, 2268, 2271, 2272, 2275, 2278,
- 2281, 2282, 2283, 2284, 2285, 2286, 2287, 2288, 2289, 2290,
- 2291, 2292, 2293, 2294, 2297, 2300, 2301, 2304, 2307, 2308,
- 2309, 2312, 2315, 2316, 2317, 2318, 2321, 2322, 2323, 2326,
- 2329, 2330, 2331, 2332, 2333, 2334, 2335, 2338, 2341, 2344,
- 2345, 2348, 2349, 2350, 2353, 2357, 2360, 2361, 2362, 2363,
- 2364, 2367, 2371, 2372, 2375, 2376, 2379, 2380, 2383, 2384,
- 2387, 2388, 2391, 2394, 2395, 2396, 2399, 2402, 2403, 2404,
- 2405, 2408, 2411, 2412, 2413, 2414, 2415, 2416, 2419, 2422,
- 2425, 2428, 2429, 2430, 2431, 2434, 2437, 2438, 2439, 2440,
- 2441, 2442, 2443, 2444, 2445, 2446, 2447, 2448, 2449, 2450,
- 2451, 2452, 2455, 2458, 2461, 2462, 2463, 2464, 2465, 2468,
- 2469, 2472, 2473, 2476, 2479, 2482, 2483, 2484, 2485, 2486,
- 2487, 2490, 2493, 2494, 2495, 2498, 2501, 2502, 2503, 2504,
- 2505, 2506, 2507, 2508, 2509, 2512, 2515, 2518, 2521, 2522,
- 2525, 2528, 2529, 2530, 2531, 2532, 2533, 2534, 2535, 2536,
- 2537, 2540, 2543, 2546, 2549, 2552, 2555, 2556, 2557, 2558,
- 2561, 2564, 2565, 2566, 2567, 2568, 2569, 2570, 2573, 2576,
- 2577, 2578, 2579, 2580, 2581, 2582, 2585, 2588, 2591, 2594
-};
-#endif
-
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
-/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
- First, the terminals, then, starting at YYNTOKENS, nonterminals. */
-static const char *const yytname[] = {
- "$end", "error", "$undefined", "EDIF_TOK_IDENT", "EDIF_TOK_INT",
- "EDIF_TOK_KEYWORD", "EDIF_TOK_STR", "EDIF_TOK_ANGLE",
- "EDIF_TOK_BEHAVIOR", "EDIF_TOK_CALCULATED", "EDIF_TOK_CAPACITANCE",
- "EDIF_TOK_CENTERCENTER", "EDIF_TOK_CENTERLEFT", "EDIF_TOK_CENTERRIGHT",
- "EDIF_TOK_CHARGE", "EDIF_TOK_CONDUCTANCE", "EDIF_TOK_CURRENT",
- "EDIF_TOK_DISTANCE", "EDIF_TOK_DOCUMENT", "EDIF_TOK_ENERGY",
- "EDIF_TOK_EXTEND", "EDIF_TOK_FLUX", "EDIF_TOK_FREQUENCY",
- "EDIF_TOK_GENERIC", "EDIF_TOK_GRAPHIC", "EDIF_TOK_INDUCTANCE",
- "EDIF_TOK_INOUT", "EDIF_TOK_INPUT", "EDIF_TOK_LOGICMODEL",
- "EDIF_TOK_LOWERCENTER", "EDIF_TOK_LOWERLEFT", "EDIF_TOK_LOWERRIGHT",
- "EDIF_TOK_MASKLAYOUT", "EDIF_TOK_MASS", "EDIF_TOK_MEASURED",
- "EDIF_TOK_MX", "EDIF_TOK_MXR90", "EDIF_TOK_MY", "EDIF_TOK_MYR90",
- "EDIF_TOK_NETLIST", "EDIF_TOK_OUTPUT", "EDIF_TOK_PCBLAYOUT",
- "EDIF_TOK_POWER", "EDIF_TOK_R0", "EDIF_TOK_R180", "EDIF_TOK_R270",
- "EDIF_TOK_R90", "EDIF_TOK_REQUIRED", "EDIF_TOK_RESISTANCE",
- "EDIF_TOK_RIPPER", "EDIF_TOK_ROUND", "EDIF_TOK_SCHEMATIC",
- "EDIF_TOK_STRANGER", "EDIF_TOK_SYMBOLIC", "EDIF_TOK_TEMPERATURE",
- "EDIF_TOK_TIE", "EDIF_TOK_TIME", "EDIF_TOK_TRUNCATE",
- "EDIF_TOK_UPPERCENTER", "EDIF_TOK_UPPERLEFT", "EDIF_TOK_UPPERRIGHT",
- "EDIF_TOK_VOLTAGE", "EDIF_TOK_ACLOAD", "EDIF_TOK_AFTER",
- "EDIF_TOK_ANNOTATE", "EDIF_TOK_APPLY", "EDIF_TOK_ARC", "EDIF_TOK_ARRAY",
- "EDIF_TOK_ARRAYMACRO", "EDIF_TOK_ARRAYRELATEDINFO", "EDIF_TOK_ARRAYSITE",
- "EDIF_TOK_ATLEAST", "EDIF_TOK_ATMOST", "EDIF_TOK_AUTHOR",
- "EDIF_TOK_BASEARRAY", "EDIF_TOK_BECOMES", "EDIF_TOK_BETWEEN",
- "EDIF_TOK_BOOLEAN", "EDIF_TOK_BOOLEANDISPLAY", "EDIF_TOK_BOOLEANMAP",
- "EDIF_TOK_BORDERPATTERN", "EDIF_TOK_BORDERWIDTH", "EDIF_TOK_BOUNDINGBOX",
- "EDIF_TOK_CELL", "EDIF_TOK_CELLREF", "EDIF_TOK_CELLTYPE",
- "EDIF_TOK_CHANGE", "EDIF_TOK_CIRCLE", "EDIF_TOK_COLOR",
- "EDIF_TOK_COMMENT", "EDIF_TOK_COMMENTGRAPHICS", "EDIF_TOK_COMPOUND",
- "EDIF_TOK_CONNECTLOCATION", "EDIF_TOK_CONTENTS", "EDIF_TOK_CORNERTYPE",
- "EDIF_TOK_CRITICALITY", "EDIF_TOK_CURRENTMAP", "EDIF_TOK_CURVE",
- "EDIF_TOK_CYCLE", "EDIF_TOK_DATAORIGIN", "EDIF_TOK_DCFANINLOAD",
- "EDIF_TOK_DCFANOUTLOAD", "EDIF_TOK_DCMAXFANIN", "EDIF_TOK_DCMAXFANOUT",
- "EDIF_TOK_DELAY", "EDIF_TOK_DELTA", "EDIF_TOK_DERIVATION",
- "EDIF_TOK_DESIGN", "EDIF_TOK_DESIGNATOR", "EDIF_TOK_DIFFERENCE",
- "EDIF_TOK_DIRECTION", "EDIF_TOK_DISPLAY", "EDIF_TOK_DOMINATES",
- "EDIF_TOK_DOT", "EDIF_TOK_DURATION", "EDIF_TOK_E", "EDIF_TOK_EDIF",
- "EDIF_TOK_EDIFLEVEL", "EDIF_TOK_EDIFVERSION",
- "EDIF_TOK_ENCLOSUREDISTANCE", "EDIF_TOK_ENDTYPE", "EDIF_TOK_ENTRY",
- "EDIF_TOK_EVENT", "EDIF_TOK_EXACTLY", "EDIF_TOK_EXTERNAL",
- "EDIF_TOK_FABRICATE", "EDIF_TOK_FALSE", "EDIF_TOK_FIGURE",
- "EDIF_TOK_FIGUREAREA", "EDIF_TOK_FIGUREGROUP",
- "EDIF_TOK_FIGUREGROUPOBJECT", "EDIF_TOK_FIGUREGROUPOVERRIDE",
- "EDIF_TOK_FIGUREGROUPREF", "EDIF_TOK_FIGUREPERIMETER",
- "EDIF_TOK_FIGUREWIDTH", "EDIF_TOK_FILLPATTERN", "EDIF_TOK_FOLLOW",
- "EDIF_TOK_FORBIDDENEVENT", "EDIF_TOK_GLOBALPORTREF",
- "EDIF_TOK_GREATERTHAN", "EDIF_TOK_GRIDMAP", "EDIF_TOK_IGNORE",
- "EDIF_TOK_INCLUDEFIGUREGROUP", "EDIF_TOK_INITIAL", "EDIF_TOK_INSTANCE",
- "EDIF_TOK_INSTANCEBACKANNOTATE", "EDIF_TOK_INSTANCEGROUP",
- "EDIF_TOK_INSTANCEMAP", "EDIF_TOK_INSTANCEREF", "EDIF_TOK_INTEGER",
- "EDIF_TOK_INTEGERDISPLAY", "EDIF_TOK_INTERFACE",
- "EDIF_TOK_INTERFIGUREGROUPSPACING", "EDIF_TOK_INTERSECTION",
- "EDIF_TOK_INTRAFIGUREGROUPSPACING", "EDIF_TOK_INVERSE",
- "EDIF_TOK_ISOLATED", "EDIF_TOK_JOINED", "EDIF_TOK_JUSTIFY",
- "EDIF_TOK_KEYWORDDISPLAY", "EDIF_TOK_KEYWORDLEVEL",
- "EDIF_TOK_KEYWORDMAP", "EDIF_TOK_LESSTHAN", "EDIF_TOK_LIBRARY",
- "EDIF_TOK_LIBRARYREF", "EDIF_TOK_LISTOFNETS", "EDIF_TOK_LISTOFPORTS",
- "EDIF_TOK_LOADDELAY", "EDIF_TOK_LOGICASSIGN", "EDIF_TOK_LOGICINPUT",
- "EDIF_TOK_LOGICLIST", "EDIF_TOK_LOGICMAPINPUT",
- "EDIF_TOK_LOGICMAPOUTPUT", "EDIF_TOK_LOGICONEOF", "EDIF_TOK_LOGICOUTPUT",
- "EDIF_TOK_LOGICPORT", "EDIF_TOK_LOGICREF", "EDIF_TOK_LOGICVALUE",
- "EDIF_TOK_LOGICWAVEFORM", "EDIF_TOK_MAINTAIN", "EDIF_TOK_MATCH",
- "EDIF_TOK_MEMBER", "EDIF_TOK_MINOMAX", "EDIF_TOK_MINOMAXDISPLAY",
- "EDIF_TOK_MNM", "EDIF_TOK_MULTIPLEVALUESET", "EDIF_TOK_MUSTJOIN",
- "EDIF_TOK_NAME", "EDIF_TOK_NET", "EDIF_TOK_NETBACKANNOTATE",
- "EDIF_TOK_NETBUNDLE", "EDIF_TOK_NETDELAY", "EDIF_TOK_NETGROUP",
- "EDIF_TOK_NETMAP", "EDIF_TOK_NETREF", "EDIF_TOK_NOCHANGE",
- "EDIF_TOK_NONPERMUTABLE", "EDIF_TOK_NOTALLOWED", "EDIF_TOK_NOTCHSPACING",
- "EDIF_TOK_NUMBER", "EDIF_TOK_NUMBERDEFINITION", "EDIF_TOK_NUMBERDISPLAY",
- "EDIF_TOK_OFFPAGECONNECTOR", "EDIF_TOK_OFFSETEVENT",
- "EDIF_TOK_OPENSHAPE", "EDIF_TOK_ORIENTATION", "EDIF_TOK_ORIGIN",
- "EDIF_TOK_OVERHANGDISTANCE", "EDIF_TOK_OVERLAPDISTANCE",
- "EDIF_TOK_OVERSIZE", "EDIF_TOK_OWNER", "EDIF_TOK_PAGE",
- "EDIF_TOK_PAGESIZE", "EDIF_TOK_PARAMETER", "EDIF_TOK_PARAMETERASSIGN",
- "EDIF_TOK_PARAMETERDISPLAY", "EDIF_TOK_PATH", "EDIF_TOK_PATHDELAY",
- "EDIF_TOK_PATHWIDTH", "EDIF_TOK_PERMUTABLE",
- "EDIF_TOK_PHYSICALDESIGNRULE", "EDIF_TOK_PLUG", "EDIF_TOK_POINT",
- "EDIF_TOK_POINTDISPLAY", "EDIF_TOK_POINTLIST", "EDIF_TOK_POLYGON",
- "EDIF_TOK_PORT", "EDIF_TOK_PORTBACKANNOTATE", "EDIF_TOK_PORTBUNDLE",
- "EDIF_TOK_PORTDELAY", "EDIF_TOK_PORTGROUP",
- "EDIF_TOK_PORTIMPLEMENTATION", "EDIF_TOK_PORTINSTANCE",
- "EDIF_TOK_PORTLIST", "EDIF_TOK_PORTLISTALIAS", "EDIF_TOK_PORTMAP",
- "EDIF_TOK_PORTREF", "EDIF_TOK_PROGRAM", "EDIF_TOK_PROPERTY",
- "EDIF_TOK_PROPERTYDISPLAY", "EDIF_TOK_PROTECTIONFRAME", "EDIF_TOK_PT",
- "EDIF_TOK_RANGEVECTOR", "EDIF_TOK_RECTANGLE", "EDIF_TOK_RECTANGLESIZE",
- "EDIF_TOK_RENAME", "EDIF_TOK_RESOLVES", "EDIF_TOK_SCALE",
- "EDIF_TOK_SCALEX", "EDIF_TOK_SCALEY", "EDIF_TOK_SECTION",
- "EDIF_TOK_SHAPE", "EDIF_TOK_SIMULATE", "EDIF_TOK_SIMULATIONINFO",
- "EDIF_TOK_SINGLEVALUESET", "EDIF_TOK_SITE", "EDIF_TOK_SOCKET",
- "EDIF_TOK_SOCKETSET", "EDIF_TOK_STATUS", "EDIF_TOK_STEADY",
- "EDIF_TOK_STRING", "EDIF_TOK_STRINGDISPLAY", "EDIF_TOK_STRONG",
- "EDIF_TOK_SYMBOL", "EDIF_TOK_SYMMETRY", "EDIF_TOK_TABLE",
- "EDIF_TOK_TABLEDEFAULT", "EDIF_TOK_TECHNOLOGY", "EDIF_TOK_TEXTHEIGHT",
- "EDIF_TOK_TIMEINTERVAL", "EDIF_TOK_TIMESTAMP", "EDIF_TOK_TIMING",
- "EDIF_TOK_TRANSFORM", "EDIF_TOK_TRANSITION", "EDIF_TOK_TRIGGER",
- "EDIF_TOK_TRUE", "EDIF_TOK_UNCONSTRAINED", "EDIF_TOK_UNDEFINED",
- "EDIF_TOK_UNION", "EDIF_TOK_UNIT", "EDIF_TOK_UNUSED",
- "EDIF_TOK_USERDATA", "EDIF_TOK_VERSION", "EDIF_TOK_VIEW",
- "EDIF_TOK_VIEWLIST", "EDIF_TOK_VIEWMAP", "EDIF_TOK_VIEWREF",
- "EDIF_TOK_VIEWTYPE", "EDIF_TOK_VISIBLE", "EDIF_TOK_VOLTAGEMAP",
- "EDIF_TOK_WAVEVALUE", "EDIF_TOK_WEAK", "EDIF_TOK_WEAKJOINED",
- "EDIF_TOK_WHEN", "EDIF_TOK_WRITTEN", "')'", "$accept", "PopC", "Edif",
- "_Edif", "EdifFileName", "EdifLevel", "EdifVersion", "AcLoad", "_AcLoad",
- "After", "_After", "Annotate", "_Annotate", "Apply", "_Apply", "Arc",
- "Array", "_Array", "ArrayMacro", "ArrayRelInfo", "_ArrayRelInfo",
- "ArraySite", "AtLeast", "AtMost", "Author", "BaseArray", "Becomes",
- "_Becomes", "Between", "__Between", "_Between", "Boolean", "_Boolean",
- "BooleanDisp", "_BooleanDisp", "BooleanMap", "BooleanValue", "BorderPat",
- "BorderWidth", "BoundBox", "Cell", "_Cell", "CellNameDef", "CellRef",
- "_CellRef", "CellNameRef", "CellType", "_CellType", "Change", "__Change",
- "_Change", "Circle", "_Circle", "Color", "Comment", "_Comment",
- "CommGraph", "_CommGraph", "Compound", "Contents", "_Contents",
- "ConnectLoc", "_ConnectLoc", "CornerType", "_CornerType", "Criticality",
- "_Criticality", "CurrentMap", "Curve", "_Curve", "Cycle", "_Cycle",
- "DataOrigin", "_DataOrigin", "DcFanInLoad", "_DcFanInLoad",
- "DcFanOutLoad", "_DcFanOutLoad", "DcMaxFanIn", "_DcMaxFanIn",
- "DcMaxFanOut", "_DcMaxFanOut", "Delay", "_Delay", "Delta", "_Delta",
- "Derivation", "_Derivation", "Design", "_Design", "Designator",
- "_Designator", "DesignNameDef", "DesignRule", "_DesignRule",
- "Difference", "_Difference", "Direction", "_Direction", "Display",
- "_Display", "_DisplayJust", "_DisplayOrien", "_DisplayOrg", "Dominates",
- "_Dominates", "Dot", "_Dot", "Duration", "EncloseDist", "_EncloseDist",
- "EndType", "_EndType", "Entry", "___Entry", "__Entry", "_Entry", "Event",
- "_Event", "Exactly", "External", "_External", "Fabricate", "False",
- "FigGrp", "_FigGrp", "FigGrpNameDef", "FigGrpNameRef", "FigGrpObj",
- "_FigGrpObj", "FigGrpOver", "_FigGrpOver", "FigGrpRef", "_FigGrpRef",
- "Figure", "_Figure", "FigureArea", "_FigureArea", "FigureOp",
- "FigurePerim", "_FigurePerim", "FigureWidth", "_FigureWidth",
- "FillPattern", "Follow", "__Follow", "_Follow", "Forbidden",
- "_Forbidden", "Form", "_Form", "GlobPortRef", "GreaterThan", "GridMap",
- "Ignore", "IncFigGrp", "_IncFigGrp", "Initial", "Instance", "_Instance",
- "InstanceRef", "_InstanceRef", "InstBackAn", "_InstBackAn", "InstGroup",
- "_InstGroup", "InstMap", "_InstMap", "InstNameDef", "InstNameRef",
- "IntDisplay", "_IntDisplay", "Integer", "_Integer", "Interface",
- "_Interface", "InterFigGrp", "_InterFigGrp", "Intersection",
- "_Intersection", "IntraFigGrp", "_IntraFigGrp", "Inverse", "_Inverse",
- "Isolated", "Joined", "_Joined", "Justify", "_Justify", "KeywordDisp",
- "_KeywordDisp", "KeywordLevel", "KeywordMap", "_KeywordMap",
- "KeywordName", "LayerNameDef", "LessThan", "LibNameDef", "LibNameRef",
- "Library", "_Library", "LibraryRef", "ListOfNets", "_ListOfNets",
- "ListOfPorts", "_ListOfPorts", "LoadDelay", "_LoadDelay", "LogicAssn",
- "___LogicAssn", "__LogicAssn", "_LogicAssn", "LogicIn", "_LogicIn",
- "LogicList", "_LogicList", "LogicMapIn", "_LogicMapIn", "LogicMapOut",
- "_LogicMapOut", "LogicNameDef", "LogicNameRef", "LogicOneOf",
- "_LogicOneOf", "LogicOut", "_LogicOut", "LogicPort", "_LogicPort",
- "LogicRef", "_LogicRef", "LogicValue", "_LogicValue", "LogicWave",
- "_LogicWave", "Maintain", "__Maintain", "_Maintain", "Match", "__Match",
- "_Match", "Member", "_Member", "MiNoMa", "_MiNoMa", "MiNoMaDisp",
- "_MiNoMaDisp", "MiNoMaValue", "Mnm", "_Mnm", "MultValSet", "_MultValSet",
- "MustJoin", "_MustJoin", "Name", "_Name", "NameDef", "NameRef", "Net",
- "_Net", "NetBackAn", "_NetBackAn", "NetBundle", "_NetBundle", "NetDelay",
- "_NetDelay", "NetGroup", "_NetGroup", "NetMap", "_NetMap", "NetNameDef",
- "NetNameRef", "NetRef", "_NetRef", "NoChange", "NonPermut", "_NonPermut",
- "NotAllowed", "_NotAllowed", "NotchSpace", "_NotchSpace", "Number",
- "_Number", "NumbDisplay", "_NumbDisplay", "NumberDefn", "_NumberDefn",
- "OffPageConn", "_OffPageConn", "OffsetEvent", "OpenShape", "_OpenShape",
- "Orientation", "_Orientation", "Origin", "OverhngDist", "_OverhngDist",
- "OverlapDist", "_OverlapDist", "Oversize", "_Oversize", "Owner", "Page",
- "_Page", "PageSize", "ParamDisp", "_ParamDisp", "Parameter",
- "_Parameter", "ParamAssign", "Path", "_Path", "PathDelay", "_PathDelay",
- "PathWidth", "Permutable", "_Permutable", "Plug", "_Plug", "Point",
- "_Point", "PointDisp", "_PointDisp", "PointList", "_PointList",
- "PointValue", "Polygon", "_Polygon", "Port", "_Port", "PortBackAn",
- "_PortBackAn", "PortBundle", "_PortBundle", "PortDelay", "_PortDelay",
- "PortGroup", "_PortGroup", "PortImpl", "_PortImpl", "PortInst",
- "_PortInst", "PortList", "_PortList", "PortListAls", "PortMap",
- "_PortMap", "PortNameDef", "PortNameRef", "PortRef", "_PortRef",
- "Program", "_Program", "PropDisplay", "_PropDisplay", "Property",
- "_Property", "PropNameDef", "PropNameRef", "ProtectFrame",
- "_ProtectFrame", "Range", "RangeVector", "_RangeVector", "Rectangle",
- "_Rectangle", "RectSize", "_RectSize", "Rename", "__Rename", "_Rename",
- "Resolves", "_Resolves", "RuleNameDef", "Scale", "ScaledInt", "ScaleX",
- "ScaleY", "Section", "_Section", "Shape", "_Shape", "SimNameDef",
- "Simulate", "_Simulate", "SimulInfo", "_SimulInfo", "SingleValSet",
- "_SingleValSet", "Site", "_Site", "Socket", "_Socket", "SocketSet",
- "_SocketSet", "Status", "_Status", "Steady", "__Steady", "_Steady",
- "StrDisplay", "String", "_String", "_StrDisplay", "Strong", "Symbol",
- "_Symbol", "Symmetry", "_Symmetry", "Table", "_Table", "TableDeflt",
- "__TableDeflt", "_TableDeflt", "Technology", "_Technology", "TextHeight",
- "TimeIntval", "__TimeIntval", "_TimeIntval", "TimeStamp", "Timing",
- "_Timing", "Transform", "_TransX", "_TransY", "_TransDelta",
- "_TransOrien", "_TransOrg", "Transition", "_Transition", "Trigger",
- "_Trigger", "True", "TypedValue", "Unconstrained", "Undefined", "Union",
- "_Union", "Unit", "_Unit", "Unused", "UserData", "_UserData",
- "ValueNameDef", "ValueNameRef", "Version", "View", "_View", "ViewList",
- "_ViewList", "ViewMap", "_ViewMap", "ViewNameDef", "ViewNameRef",
- "ViewRef", "_ViewRef", "ViewType", "_ViewType", "Visible", "VoltageMap",
- "WaveValue", "Weak", "WeakJoined", "_WeakJoined", "When", "_When",
- "Written", "_Written", "Ident", "Str", "Int", "Keyword", 0
-};
-#endif
-
-#ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
- token YYLEX-NUM. */
-static const yytype_uint16 yytoknum[] = {
- 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
- 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
- 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
- 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
- 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
- 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
- 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
- 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
- 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, 532, 533, 534,
- 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
- 545, 546, 547, 548, 549, 41
-};
-#endif
-
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
-static const yytype_uint16 yyr1[] = {
- 0, 296, 297, 298, 299, 299, 299, 299, 299, 299,
- 299, 300, 301, 302, 303, 304, 304, 305, 306, 306,
- 306, 306, 306, 306, 307, 308, 308, 309, 310, 310,
- 310, 310, 310, 311, 312, 313, 313, 314, 315, 316,
- 316, 316, 316, 316, 317, 318, 319, 320, 321, 322,
- 323, 323, 323, 324, 325, 325, 326, 326, 327, 328,
- 328, 328, 328, 329, 330, 330, 331, 332, 332, 333,
- 334, 335, 336, 337, 337, 337, 337, 337, 337, 337,
- 338, 339, 340, 340, 341, 342, 343, 343, 343, 344,
- 345, 345, 345, 346, 346, 346, 347, 348, 348, 349,
- 350, 351, 351, 352, 353, 353, 353, 353, 353, 353,
- 353, 353, 354, 355, 356, 356, 356, 356, 356, 356,
- 356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
- 356, 356, 357, 358, 358, 359, 360, 360, 360, 361,
- 362, 362, 363, 364, 365, 365, 365, 366, 367, 367,
- 368, 369, 369, 370, 371, 371, 372, 373, 373, 374,
- 375, 375, 376, 377, 377, 378, 379, 379, 380, 381,
- 381, 382, 383, 383, 383, 384, 385, 385, 385, 385,
- 385, 386, 387, 387, 388, 389, 390, 390, 390, 390,
- 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
- 390, 391, 392, 392, 392, 392, 393, 394, 394, 394,
- 395, 396, 396, 397, 397, 398, 398, 399, 399, 400,
- 401, 401, 402, 403, 403, 404, 405, 406, 406, 406,
- 406, 407, 408, 408, 408, 409, 410, 410, 410, 411,
- 411, 411, 411, 412, 412, 412, 413, 414, 414, 414,
- 414, 414, 414, 414, 415, 416, 417, 417, 417, 417,
- 417, 418, 419, 420, 421, 421, 421, 421, 421, 421,
- 421, 421, 421, 421, 421, 421, 421, 421, 422, 423,
- 424, 425, 425, 425, 426, 427, 427, 427, 427, 427,
- 427, 427, 427, 427, 427, 427, 427, 427, 428, 429,
- 429, 430, 431, 431, 431, 431, 431, 431, 431, 431,
- 431, 431, 431, 432, 433, 433, 433, 433, 434, 434,
- 434, 434, 434, 435, 436, 436, 436, 436, 437, 438,
- 438, 438, 438, 439, 440, 441, 441, 442, 442, 442,
- 442, 443, 444, 444, 445, 446, 446, 446, 446, 446,
- 447, 448, 449, 450, 451, 452, 452, 453, 454, 455,
- 455, 455, 455, 455, 455, 455, 455, 455, 455, 456,
- 457, 457, 457, 458, 459, 459, 459, 459, 459, 460,
- 461, 461, 462, 463, 463, 463, 463, 463, 464, 464,
- 465, 465, 466, 467, 467, 468, 469, 469, 469, 469,
- 470, 471, 471, 471, 471, 471, 471, 471, 471, 471,
- 471, 471, 471, 471, 471, 471, 471, 471, 472, 473,
- 473, 473, 473, 474, 475, 475, 475, 475, 476, 477,
- 477, 477, 477, 478, 479, 479, 480, 481, 482, 482,
- 482, 482, 483, 484, 484, 484, 484, 484, 484, 484,
- 484, 484, 485, 486, 486, 487, 488, 489, 489, 490,
- 491, 492, 493, 494, 495, 496, 496, 496, 496, 496,
- 497, 498, 499, 499, 500, 501, 501, 501, 502, 503,
- 503, 504, 505, 505, 506, 506, 506, 507, 507, 507,
- 508, 509, 509, 509, 509, 510, 511, 511, 511, 511,
- 512, 513, 513, 514, 515, 515, 516, 517, 518, 519,
- 519, 519, 520, 521, 521, 521, 521, 522, 523, 523,
- 523, 523, 524, 525, 525, 526, 527, 527, 527, 527,
- 527, 527, 527, 527, 527, 527, 527, 527, 527, 527,
- 527, 528, 529, 529, 529, 529, 529, 530, 531, 531,
- 532, 532, 532, 533, 534, 534, 534, 535, 535, 535,
- 536, 537, 537, 538, 539, 539, 539, 539, 540, 541,
- 541, 542, 542, 543, 544, 544, 544, 545, 546, 546,
- 547, 548, 548, 548, 548, 548, 549, 550, 550, 551,
- 551, 551, 552, 552, 553, 554, 554, 554, 554, 554,
- 554, 554, 554, 554, 554, 555, 556, 556, 556, 556,
- 556, 557, 558, 558, 558, 558, 558, 558, 559, 560,
- 560, 560, 561, 562, 562, 562, 563, 564, 564, 564,
- 564, 564, 565, 565, 566, 566, 567, 568, 568, 568,
- 568, 569, 570, 571, 571, 571, 572, 573, 573, 573,
- 574, 575, 575, 575, 575, 576, 577, 577, 577, 577,
- 578, 579, 579, 580, 581, 581, 581, 581, 582, 583,
- 583, 583, 583, 583, 584, 585, 586, 586, 587, 588,
- 588, 588, 588, 588, 588, 588, 588, 589, 590, 591,
- 591, 591, 591, 592, 593, 593, 593, 593, 594, 595,
- 595, 596, 597, 598, 598, 598, 598, 598, 598, 598,
- 598, 598, 598, 599, 600, 601, 601, 602, 603, 603,
- 604, 605, 606, 606, 607, 608, 608, 609, 610, 611,
- 611, 611, 611, 612, 613, 613, 614, 615, 615, 615,
- 615, 616, 617, 617, 618, 619, 619, 620, 621, 622,
- 622, 623, 624, 624, 624, 624, 624, 624, 624, 624,
- 624, 624, 624, 624, 624, 625, 626, 626, 626, 626,
- 626, 626, 626, 626, 626, 626, 627, 628, 628, 628,
- 628, 629, 630, 630, 630, 630, 631, 632, 632, 632,
- 633, 634, 634, 634, 634, 634, 634, 634, 634, 634,
- 634, 634, 635, 636, 636, 636, 636, 636, 636, 636,
- 636, 636, 636, 636, 636, 636, 637, 638, 638, 638,
- 639, 640, 641, 641, 641, 641, 641, 642, 642, 643,
- 643, 644, 645, 645, 645, 645, 646, 647, 647, 648,
- 649, 649, 650, 651, 651, 651, 651, 651, 652, 653,
- 654, 655, 655, 655, 655, 655, 655, 655, 655, 655,
- 655, 655, 655, 656, 656, 656, 656, 656, 656, 657,
- 658, 658, 658, 659, 660, 660, 661, 662, 662, 662,
- 662, 663, 664, 664, 665, 665, 666, 667, 667, 668,
- 669, 670, 670, 671, 672, 673, 674, 674, 674, 674,
- 675, 676, 676, 677, 678, 679, 679, 679, 679, 679,
- 679, 680, 681, 681, 681, 681, 682, 683, 683, 684,
- 685, 685, 686, 687, 687, 688, 689, 689, 690, 691,
- 691, 691, 691, 692, 693, 693, 693, 694, 694, 694,
- 695, 696, 697, 697, 697, 697, 698, 698, 699, 700,
- 701, 701, 701, 701, 701, 701, 701, 701, 701, 701,
- 701, 701, 701, 701, 702, 703, 703, 704, 705, 705,
- 705, 706, 707, 707, 707, 707, 708, 708, 708, 709,
- 710, 710, 710, 710, 710, 710, 710, 711, 712, 713,
- 713, 714, 714, 714, 715, 716, 717, 717, 717, 717,
- 717, 718, 719, 719, 720, 720, 721, 721, 722, 722,
- 723, 723, 724, 725, 725, 725, 726, 727, 727, 727,
- 727, 728, 729, 729, 729, 729, 729, 729, 730, 731,
- 732, 733, 733, 733, 733, 734, 735, 735, 735, 735,
- 735, 735, 735, 735, 735, 735, 735, 735, 735, 735,
- 735, 735, 736, 737, 738, 738, 738, 738, 738, 739,
- 739, 740, 740, 741, 742, 743, 743, 743, 743, 743,
- 743, 744, 745, 745, 745, 746, 747, 747, 747, 747,
- 747, 747, 747, 747, 747, 748, 749, 750, 751, 751,
- 752, 753, 753, 753, 753, 753, 753, 753, 753, 753,
- 753, 754, 755, 756, 757, 758, 759, 759, 759, 759,
- 760, 761, 761, 761, 761, 761, 761, 761, 762, 763,
- 763, 763, 763, 763, 763, 763, 764, 765, 766, 767
-};
-
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
-static const yytype_uint8 yyr2[] = {
- 0, 2, 1, 7, 0, 2, 2, 2, 2, 2,
- 2, 1, 3, 5, 3, 1, 1, 3, 1, 2,
- 2, 2, 2, 2, 3, 1, 1, 3, 1, 2,
- 2, 2, 2, 5, 5, 0, 1, 3, 3, 1,
- 1, 1, 2, 2, 3, 3, 3, 3, 2, 3,
- 1, 1, 1, 4, 1, 1, 1, 1, 3, 0,
- 2, 2, 2, 3, 1, 2, 3, 1, 1, 5,
- 3, 3, 4, 1, 2, 2, 2, 2, 2, 2,
- 1, 4, 0, 1, 1, 3, 1, 1, 1, 4,
- 1, 1, 1, 0, 1, 1, 5, 0, 2, 5,
- 3, 0, 2, 3, 0, 2, 2, 2, 2, 2,
- 2, 2, 3, 3, 0, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 0, 1, 3, 1, 1, 1, 3,
- 1, 1, 3, 3, 0, 2, 2, 4, 0, 1,
- 4, 0, 1, 3, 1, 1, 3, 1, 1, 3,
- 1, 1, 3, 1, 1, 3, 1, 1, 3, 0,
- 2, 3, 1, 1, 1, 4, 1, 2, 2, 2,
- 2, 3, 1, 1, 1, 3, 0, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 1, 1, 2, 2, 3, 1, 1, 1,
- 6, 1, 1, 0, 1, 0, 1, 0, 1, 3,
- 0, 2, 3, 1, 2, 3, 6, 1, 1, 2,
- 2, 3, 1, 1, 1, 5, 1, 1, 1, 1,
- 1, 1, 1, 0, 1, 1, 3, 1, 1, 1,
- 1, 1, 2, 2, 3, 5, 1, 2, 2, 2,
- 2, 4, 2, 3, 1, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
- 3, 1, 1, 1, 3, 1, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 4, 0,
- 1, 3, 1, 1, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 5, 1, 1, 2, 2, 1, 1,
- 1, 1, 1, 5, 1, 1, 2, 2, 5, 1,
- 1, 2, 2, 5, 4, 1, 1, 1, 1, 2,
- 2, 3, 1, 2, 3, 0, 2, 2, 2, 2,
- 3, 3, 4, 2, 3, 1, 1, 2, 4, 1,
- 1, 2, 2, 2, 2, 2, 2, 2, 2, 4,
- 0, 1, 1, 3, 1, 2, 2, 2, 2, 3,
- 0, 2, 3, 0, 2, 2, 2, 2, 1, 1,
- 1, 1, 3, 1, 2, 3, 0, 2, 2, 2,
- 3, 0, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 6, 1,
- 1, 2, 2, 3, 1, 1, 2, 2, 5, 1,
- 1, 2, 2, 3, 1, 1, 2, 3, 0, 2,
- 2, 2, 3, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 3, 1, 2, 3, 3, 1, 2, 1,
- 1, 3, 1, 1, 5, 1, 2, 2, 2, 2,
- 3, 3, 0, 2, 3, 0, 2, 2, 4, 1,
- 1, 5, 1, 1, 1, 1, 1, 0, 1, 1,
- 3, 1, 1, 1, 2, 3, 0, 2, 2, 2,
- 3, 0, 2, 3, 0, 2, 1, 1, 3, 0,
- 2, 2, 3, 1, 1, 1, 2, 3, 1, 2,
- 2, 2, 4, 0, 1, 3, 1, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 0, 2, 2, 2, 2, 4, 1, 1,
- 0, 1, 1, 4, 1, 1, 1, 1, 1, 1,
- 4, 1, 2, 3, 0, 2, 2, 2, 3, 1,
- 2, 1, 1, 5, 1, 1, 1, 3, 0, 2,
- 3, 0, 2, 2, 2, 2, 3, 1, 2, 1,
- 1, 1, 1, 1, 4, 1, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 1, 2, 2, 2,
- 2, 4, 1, 2, 2, 2, 2, 2, 4, 1,
- 2, 2, 3, 0, 2, 2, 3, 0, 2, 2,
- 2, 2, 1, 1, 1, 1, 4, 0, 1, 1,
- 1, 2, 3, 0, 2, 2, 4, 1, 2, 2,
- 5, 1, 1, 2, 2, 3, 0, 2, 2, 2,
- 3, 1, 2, 3, 0, 2, 2, 2, 3, 1,
- 2, 2, 2, 2, 4, 3, 1, 2, 3, 1,
- 1, 1, 1, 1, 1, 1, 1, 3, 6, 1,
- 1, 2, 2, 6, 1, 1, 2, 2, 5, 1,
- 1, 3, 3, 1, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 3, 1, 2, 5, 0, 1,
- 4, 3, 1, 2, 3, 1, 2, 3, 3, 0,
- 2, 2, 2, 3, 0, 2, 3, 0, 2, 2,
- 2, 3, 1, 2, 3, 0, 2, 4, 3, 1,
- 2, 3, 1, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 1, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 4, 1, 2, 2,
- 2, 4, 1, 1, 2, 2, 3, 0, 2, 2,
- 3, 1, 1, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 1, 1, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 0, 2, 2,
- 4, 3, 0, 2, 2, 2, 2, 1, 1, 1,
- 1, 4, 0, 1, 1, 1, 4, 0, 1, 3,
- 1, 2, 4, 1, 2, 2, 2, 2, 1, 1,
- 3, 0, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1, 1, 3,
- 0, 2, 2, 4, 1, 2, 5, 1, 1, 2,
- 2, 4, 1, 1, 1, 1, 3, 0, 2, 1,
- 5, 1, 4, 4, 4, 3, 1, 2, 2, 2,
- 3, 1, 2, 1, 3, 1, 2, 2, 2, 2,
- 2, 3, 0, 2, 2, 2, 3, 0, 1, 4,
- 0, 1, 3, 0, 1, 3, 1, 2, 3, 0,
- 2, 2, 2, 4, 1, 1, 1, 1, 2, 2,
- 3, 3, 0, 2, 2, 2, 1, 2, 3, 3,
- 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 0, 2, 3, 0, 2,
- 2, 4, 1, 1, 1, 1, 0, 1, 1, 3,
- 1, 2, 2, 2, 2, 2, 2, 3, 4, 1,
- 1, 1, 1, 1, 8, 3, 1, 2, 2, 2,
- 2, 7, 0, 1, 0, 1, 0, 1, 0, 1,
- 0, 1, 4, 1, 1, 1, 3, 0, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1, 2, 2,
- 3, 1, 1, 2, 2, 3, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 2, 3, 1, 2, 2, 2, 2, 1,
- 1, 1, 1, 3, 5, 1, 2, 2, 2, 2,
- 2, 3, 0, 2, 2, 3, 0, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 4, 0, 1,
- 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 3, 5, 3, 3, 0, 2, 2, 2,
- 3, 1, 2, 2, 2, 2, 2, 2, 3, 1,
- 2, 2, 2, 2, 2, 2, 1, 1, 1, 1
-};
-
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
- STATE-NUM when YYTABLE doesn't specify something else to do. Zero
- means the default is an error. */
-static const yytype_uint16 yydefact[] = {
- 0, 0, 0, 1126, 0, 0, 0, 590, 11, 591,
- 589, 1, 0, 587, 883, 0, 882, 0, 0, 0,
- 2, 586, 588, 1127, 0, 0, 885, 884, 1128, 0,
- 0, 0, 0, 213, 211, 212, 593, 279, 592, 0,
- 946, 881, 0, 0, 0, 4, 285, 0, 0, 215,
- 214, 940, 947, 0, 12, 0, 457, 0, 0, 0,
- 0, 0, 101, 0, 0, 0, 0, 0, 0, 0,
- 0, 284, 292, 289, 290, 295, 286, 287, 291, 288,
- 296, 293, 297, 294, 443, 444, 445, 446, 447, 448,
- 449, 450, 451, 0, 0, 217, 216, 13, 0, 456,
- 458, 0, 0, 0, 929, 3, 9, 8, 6, 7,
- 5, 10, 0, 0, 0, 0, 891, 0, 136, 137,
- 138, 0, 232, 233, 234, 0, 0, 0, 848, 0,
- 0, 0, 1054, 0, 0, 0, 68, 67, 442, 683,
- 686, 684, 685, 679, 681, 682, 680, 0, 0, 0,
- 218, 455, 0, 184, 0, 462, 0, 0, 0, 70,
- 0, 0, 100, 102, 135, 231, 0, 727, 59, 396,
- 564, 656, 737, 942, 1022, 1023, 1024, 1025, 1026, 0,
- 1027, 843, 987, 1129, 1053, 1058, 1057, 1056, 1055, 345,
- 262, 1021, 1101, 678, 0, 0, 210, 0, 176, 0,
- 0, 0, 0, 928, 931, 932, 930, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 842,
- 847, 844, 846, 845, 0, 0, 687, 82, 84, 175,
- 178, 179, 177, 180, 0, 0, 256, 0, 465, 0,
- 1119, 0, 69, 892, 99, 333, 0, 58, 62, 61,
- 60, 0, 395, 398, 399, 397, 0, 0, 563, 567,
- 566, 565, 571, 572, 0, 655, 659, 658, 657, 0,
- 736, 740, 739, 738, 941, 944, 945, 943, 0, 1051,
- 1037, 1048, 1049, 1038, 1036, 1046, 1050, 1044, 1045, 1043,
- 1047, 1039, 1040, 1041, 1042, 0, 344, 349, 348, 347,
- 346, 0, 0, 0, 83, 664, 980, 0, 0, 255,
- 258, 259, 257, 260, 464, 467, 468, 466, 469, 0,
- 0, 0, 0, 1118, 1120, 1124, 1122, 1121, 1123, 1125,
- 0, 64, 0, 393, 0, 569, 0, 0, 0, 574,
- 576, 575, 0, 661, 0, 742, 701, 1035, 747, 0,
- 463, 81, 0, 0, 0, 186, 912, 979, 985, 984,
- 982, 981, 983, 986, 0, 80, 0, 0, 151, 837,
- 63, 65, 392, 394, 568, 570, 1028, 1029, 0, 660,
- 662, 741, 743, 470, 0, 0, 663, 667, 666, 665,
- 0, 460, 0, 264, 278, 0, 0, 0, 0, 73,
- 0, 47, 0, 0, 152, 0, 838, 0, 0, 0,
- 0, 0, 263, 271, 268, 269, 274, 265, 266, 270,
- 277, 267, 275, 272, 276, 273, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 185, 199, 193,
- 198, 188, 190, 187, 194, 195, 197, 196, 192, 191,
- 189, 200, 0, 911, 914, 913, 915, 88, 87, 86,
- 0, 0, 1076, 72, 77, 79, 74, 78, 76, 75,
- 0, 0, 150, 836, 573, 0, 0, 261, 0, 0,
- 0, 0, 0, 0, 320, 355, 356, 0, 318, 321,
- 322, 319, 889, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 526, 0, 506, 85, 1085, 0,
- 0, 0, 1063, 352, 0, 0, 202, 203, 299, 424,
- 425, 0, 434, 435, 0, 0, 1031, 1032, 0, 354,
- 0, 0, 0, 0, 0, 0, 0, 647, 0, 0,
- 0, 0, 0, 0, 0, 0, 220, 0, 501, 504,
- 887, 0, 0, 0, 525, 529, 539, 530, 528, 533,
- 536, 535, 534, 538, 537, 532, 540, 527, 531, 0,
- 0, 0, 383, 0, 627, 0, 822, 1075, 1083, 1080,
- 1079, 1082, 1081, 1078, 1077, 1084, 0, 890, 201, 204,
- 205, 0, 300, 423, 426, 427, 433, 699, 700, 0,
- 1030, 1033, 1034, 281, 0, 282, 283, 0, 0, 0,
- 0, 0, 0, 0, 917, 866, 865, 868, 867, 0,
- 864, 863, 314, 315, 0, 324, 325, 0, 329, 330,
- 0, 0, 429, 430, 646, 648, 649, 0, 651, 652,
- 0, 0, 578, 870, 878, 877, 0, 0, 0, 507,
- 0, 0, 436, 0, 0, 0, 0, 0, 0, 1096,
- 1098, 1099, 1097, 1091, 1093, 1092, 1094, 1100, 1095, 0,
- 401, 1065, 0, 0, 374, 0, 0, 0, 0, 606,
- 0, 0, 0, 766, 0, 994, 298, 0, 280, 0,
- 227, 228, 0, 0, 54, 0, 55, 0, 0, 0,
- 918, 0, 313, 316, 317, 323, 326, 327, 328, 331,
- 332, 0, 419, 420, 428, 431, 432, 650, 653, 654,
- 0, 689, 690, 0, 694, 695, 0, 0, 876, 879,
- 880, 66, 112, 142, 219, 221, 500, 502, 503, 505,
- 886, 888, 948, 1102, 1104, 1090, 0, 114, 1064, 1068,
- 1067, 1069, 1066, 1070, 0, 370, 391, 390, 0, 0,
- 373, 378, 375, 377, 376, 380, 382, 386, 384, 385,
- 387, 635, 634, 637, 0, 0, 605, 610, 608, 607,
- 609, 623, 626, 630, 629, 628, 631, 830, 829, 832,
- 0, 0, 0, 0, 0, 0, 765, 773, 775, 769,
- 770, 771, 772, 767, 768, 774, 787, 821, 825, 824,
- 823, 826, 698, 226, 229, 230, 45, 46, 56, 0,
- 57, 254, 351, 461, 916, 418, 421, 422, 688, 691,
- 692, 693, 696, 697, 577, 579, 869, 871, 872, 0,
- 438, 581, 0, 729, 0, 0, 851, 0, 950, 1106,
- 400, 406, 416, 414, 408, 409, 407, 411, 402, 403,
- 415, 405, 413, 404, 412, 417, 410, 0, 0, 0,
- 371, 0, 372, 0, 183, 182, 0, 996, 0, 0,
- 639, 638, 0, 640, 0, 141, 140, 0, 0, 834,
- 833, 0, 835, 0, 16, 15, 0, 155, 154, 0,
- 158, 157, 0, 161, 160, 0, 164, 163, 0, 0,
- 53, 0, 0, 0, 41, 0, 40, 39, 0, 0,
- 0, 1060, 1059, 0, 0, 828, 827, 0, 752, 0,
- 0, 903, 905, 0, 0, 0, 0, 104, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 113,
- 129, 130, 122, 117, 127, 115, 128, 119, 120, 116,
- 121, 123, 118, 125, 124, 131, 126, 0, 561, 1086,
- 1088, 369, 181, 172, 173, 174, 0, 0, 0, 995,
- 999, 998, 997, 1000, 379, 381, 636, 139, 0, 619,
- 0, 622, 624, 625, 831, 14, 153, 156, 159, 162,
- 0, 782, 783, 0, 786, 788, 789, 734, 0, 923,
- 0, 48, 38, 42, 43, 0, 817, 437, 441, 440,
- 439, 580, 585, 583, 582, 584, 0, 718, 643, 728,
- 732, 731, 730, 0, 0, 751, 761, 763, 757, 758,
- 759, 760, 756, 753, 755, 762, 754, 764, 475, 777,
- 0, 0, 0, 0, 850, 856, 861, 855, 853, 854,
- 858, 859, 852, 857, 860, 862, 0, 0, 0, 904,
- 908, 909, 906, 910, 907, 0, 0, 949, 955, 957,
- 962, 954, 952, 953, 959, 956, 960, 951, 958, 961,
- 963, 1105, 1109, 1108, 1107, 0, 0, 0, 302, 303,
- 0, 0, 335, 336, 389, 0, 388, 0, 518, 633,
- 632, 0, 0, 0, 669, 703, 0, 0, 792, 791,
- 0, 896, 1017, 1111, 0, 560, 562, 1089, 0, 171,
- 0, 0, 342, 725, 0, 0, 167, 166, 0, 0,
- 618, 621, 620, 0, 480, 479, 781, 785, 784, 0,
- 37, 965, 0, 924, 44, 0, 0, 35, 0, 719,
- 0, 207, 208, 209, 0, 1052, 0, 776, 779, 778,
- 780, 0, 453, 459, 1062, 1061, 0, 715, 849, 0,
- 840, 0, 0, 28, 0, 0, 0, 26, 25, 0,
- 0, 71, 103, 105, 108, 110, 106, 107, 109, 111,
- 0, 0, 0, 0, 0, 0, 301, 304, 311, 305,
- 306, 307, 308, 309, 310, 312, 968, 0, 337, 338,
- 1072, 0, 360, 359, 517, 520, 519, 521, 595, 0,
- 472, 612, 0, 668, 672, 671, 670, 673, 702, 710,
- 711, 707, 704, 705, 706, 709, 708, 712, 133, 790,
- 801, 796, 793, 794, 795, 798, 797, 799, 800, 895,
- 899, 897, 898, 0, 0, 0, 0, 1110, 1112, 1116,
- 1113, 1115, 1114, 1117, 1087, 0, 0, 989, 990, 0,
- 341, 343, 724, 726, 165, 496, 509, 0, 51, 50,
- 52, 1014, 1013, 1015, 0, 0, 0, 733, 735, 0,
- 922, 350, 816, 819, 818, 0, 36, 717, 642, 645,
- 644, 206, 474, 476, 477, 452, 454, 714, 716, 839,
- 841, 148, 0, 0, 27, 31, 29, 30, 32, 0,
- 0, 24, 713, 874, 0, 0, 0, 223, 144, 676,
- 0, 745, 0, 722, 749, 0, 901, 0, 0, 334,
- 339, 340, 0, 0, 0, 1002, 358, 367, 365, 362,
- 363, 366, 364, 361, 368, 594, 603, 601, 596, 598,
- 600, 599, 597, 602, 604, 0, 611, 616, 614, 613,
- 615, 617, 0, 134, 0, 0, 0, 1016, 1018, 1020,
- 1019, 0, 18, 0, 482, 483, 550, 548, 549, 0,
- 251, 250, 249, 248, 247, 0, 0, 993, 991, 992,
- 0, 0, 0, 49, 0, 478, 0, 926, 964, 966,
- 34, 0, 149, 0, 491, 493, 492, 0, 513, 515,
- 514, 820, 542, 0, 873, 875, 97, 222, 224, 0,
- 675, 677, 0, 721, 723, 748, 750, 900, 902, 0,
- 0, 967, 969, 970, 1071, 1074, 1073, 0, 0, 804,
- 803, 0, 1003, 1004, 471, 473, 132, 93, 92, 90,
- 91, 357, 936, 934, 935, 0, 17, 22, 19, 21,
- 20, 23, 0, 487, 485, 484, 486, 551, 552, 0,
- 246, 253, 252, 0, 0, 988, 0, 495, 499, 497,
- 498, 508, 511, 510, 1012, 0, 925, 927, 147, 490,
- 494, 512, 516, 0, 1103, 0, 0, 143, 145, 146,
- 744, 746, 0, 237, 0, 236, 238, 0, 972, 974,
- 973, 975, 976, 0, 802, 812, 814, 808, 809, 810,
- 811, 807, 806, 813, 805, 815, 0, 0, 1005, 1006,
- 94, 0, 95, 937, 0, 523, 488, 489, 0, 547,
- 674, 225, 353, 920, 541, 546, 544, 543, 545, 96,
- 98, 0, 0, 556, 554, 555, 243, 239, 241, 240,
- 242, 641, 977, 978, 0, 720, 0, 0, 169, 1007,
- 1008, 89, 933, 939, 938, 524, 0, 481, 0, 921,
- 0, 558, 557, 559, 0, 244, 0, 245, 971, 893,
- 0, 0, 1009, 1010, 522, 919, 0, 553, 235, 894,
- 168, 170, 1011, 0, 33, 1001
-};
-
-/* YYDEFGOTO[NTERM-NUM]. */
-static const yytype_int16 yydefgoto[] = {
- -1, 21, 2, 58, 6, 31, 18, 797, 893, 1268,
- 1391, 1078, 1186, 1070, 1182, 1518, 925, 1305, 914, 851,
- 915, 916, 615, 616, 324, 917, 1141, 1287, 617, 695,
- 819, 174, 211, 249, 330, 555, 135, 72, 73, 950,
- 310, 398, 364, 198, 303, 227, 399, 460, 1388, 1467,
- 1551, 1207, 1515, 74, 75, 117, 952, 1097, 557, 750,
- 867, 1252, 1382, 76, 121, 778, 884, 558, 1339, 1439,
- 1183, 1421, 326, 403, 799, 896, 800, 899, 801, 902,
- 802, 905, 989, 1135, 1589, 1611, 877, 976, 107, 199,
- 762, 873, 152, 359, 395, 484, 515, 1043, 1164, 22,
- 33, 49, 95, 149, 559, 651, 1209, 1336, 1407, 439,
- 689, 77, 125, 1452, 1524, 1576, 1606, 1277, 1399, 618,
- 108, 235, 360, 136, 361, 392, 393, 34, 531, 604,
- 35, 47, 485, 591, 953, 1100, 441, 619, 486, 442,
- 624, 443, 627, 78, 954, 1101, 1217, 981, 1131, 185,
- 224, 1018, 620, 388, 1498, 420, 487, 1389, 955, 1221,
- 674, 871, 579, 675, 769, 879, 580, 676, 1105, 755,
- 253, 332, 175, 212, 671, 746, 444, 711, 488, 521,
- 445, 631, 489, 524, 560, 854, 918, 50, 93, 1060,
- 1171, 56, 45, 57, 1172, 390, 621, 154, 349, 109,
- 237, 304, 1231, 1375, 1049, 1166, 1002, 1143, 1271, 1393,
- 1483, 1558, 1326, 1423, 1291, 1411, 561, 653, 562, 654,
- 504, 1292, 1293, 1412, 1327, 1427, 956, 1107, 1484, 1596,
- 455, 505, 1433, 1513, 1272, 1396, 1489, 1525, 1572, 1604,
- 787, 967, 176, 213, 1144, 334, 1145, 262, 338, 644,
- 726, 855, 919, 36, 12, 492, 649, 957, 1229, 581,
- 678, 958, 1232, 779, 990, 784, 888, 582, 680, 1111,
- 773, 679, 882, 1529, 1030, 1160, 446, 538, 447, 637,
- 177, 214, 267, 342, 306, 352, 959, 1113, 1278, 1210,
- 1340, 96, 147, 150, 448, 720, 449, 723, 490, 599,
- 221, 960, 1116, 1085, 1061, 1176, 856, 1158, 1359, 1211,
- 1342, 982, 1134, 79, 857, 924, 1008, 1149, 178, 215,
- 272, 344, 1343, 1442, 195, 1212, 1345, 858, 927, 583,
- 682, 859, 1050, 804, 1003, 809, 909, 961, 1117, 1360,
- 1458, 1019, 1156, 1072, 584, 684, 928, 789, 683, 891,
- 327, 405, 1063, 1179, 80, 179, 129, 1180, 861, 930,
- 622, 645, 727, 1096, 1334, 450, 646, 9, 15, 25,
- 564, 655, 493, 389, 263, 1462, 1548, 962, 1120, 1214,
- 1347, 932, 862, 933, 362, 396, 623, 701, 1507, 1598,
- 1010, 1152, 1298, 1416, 110, 157, 1390, 1475, 1554, 26,
- 180, 216, 39, 565, 863, 934, 1153, 1299, 1219, 1348,
- 1453, 1532, 1584, 236, 307, 81, 1132, 1279, 1410, 240,
- 764, 878, 1363, 1463, 1549, 1590, 1613, 1623, 1142, 1294,
- 1123, 1263, 137, 181, 340, 341, 491, 528, 223, 295,
- 1046, 82, 131, 923, 1177, 404, 468, 672, 1222, 1352,
- 469, 510, 509, 970, 872, 1128, 570, 669, 83, 567,
- 1074, 568, 866, 935, 966, 1124, 206, 241, 38, 27,
- 116, 189
-};
-
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
- STATE-NUM. */
-#define YYPACT_NINF -1333
-static const yytype_int16 yypact[] = {
- 41, 152, 149, -1333, 176, 81, 305, -1333, -1333, -1333,
- -1333, -1333, 33, -1333, -1333, 59, -1333, 148, 317, 101,
- -1333, -1333, -1333, -1333, 437, 150, -1333, -1333, -1333, 148,
- 148, 304, 81, 312, -1333, -1333, -1333, -1333, -1333, 33,
- -1333, -1333, 148, 150, 316, -1333, -1333, 1508, 1780, 272,
- -1333, -1333, -1333, 150, -1333, 148, -1333, 122, 715, 148,
- 148, 111, -1333, 997, 1020, 148, 148, 152, 148, 176,
- 300, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, 150, 1588, 280, -1333, -1333, 150, -1333,
- -1333, 152, 152, 152, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, 148, 150, 148, 111, -1333, 36, -1333, -1333,
- -1333, 150, -1333, -1333, -1333, 150, 148, 150, -1333, 1023,
- 150, 66, -1333, 150, 150, 150, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, 150, 260, 150,
- -1333, -1333, 424, -1333, 317, -1333, 317, 273, 439, -1333,
- 148, 111, -1333, -1333, -1333, -1333, 439, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 310,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, 148, 150, -1333, 81, -1333, 441,
- 254, 254, 266, -1333, -1333, -1333, -1333, 150, 150, 150,
- 150, 416, 49, 115, 91, 801, 77, 437, 2006, -1333,
- -1333, -1333, -1333, -1333, 71, 148, -1333, 376, -1333, -1333,
- -1333, -1333, -1333, -1333, 343, 445, -1333, 445, -1333, 148,
- -1333, 158, -1333, -1333, -1333, -1333, 300, -1333, -1333, -1333,
- -1333, 148, -1333, -1333, -1333, -1333, 276, 144, -1333, -1333,
- -1333, -1333, -1333, -1333, 111, -1333, -1333, -1333, -1333, 260,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 150, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, 150, -1333, -1333, -1333, -1333,
- -1333, 150, 81, 150, -1333, -1333, -1333, 546, 152, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 148,
- 437, 437, 437, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- 33, -1333, 33, -1333, 33, -1333, 150, 150, 144, -1333,
- -1333, -1333, 33, -1333, 33, -1333, -1333, -1333, -1333, 150,
- -1333, -1333, 132, 152, 152, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, 468, -1333, 148, 150, 306, 306,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 144, -1333,
- -1333, -1333, -1333, -1333, 111, 111, -1333, -1333, -1333, -1333,
- 81, -1333, 1442, -1333, -1333, 1794, 519, 832, 940, -1333,
- 148, -1333, 437, 150, -1333, 150, -1333, 150, 111, 111,
- 150, 1196, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, 152, 152, 152, 152,
- 152, 152, 152, 152, 152, 152, 152, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, 152, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- 150, 152, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- 148, 150, -1333, -1333, -1333, 150, 321, -1333, 1196, 81,
- 1196, 1196, 148, 1196, -1333, -1333, -1333, 150, -1333, -1333,
- -1333, -1333, -1333, 461, 461, 461, 461, 461, 461, 461,
- 461, 461, 461, 461, -1333, 1198, -1333, -1333, -1333, 322,
- 867, 148, -1333, -1333, 150, 1263, -1333, -1333, 376, -1333,
- -1333, 1263, -1333, -1333, 150, 1196, -1333, -1333, 1263, -1333,
- 342, 461, 1545, 1545, 1545, 461, 1545, -1333, 130, 1545,
- 461, 461, -29, 300, 81, 276, -1333, 150, -1333, -1333,
- -1333, 81, 276, 81, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 1879,
- 444, 466, -1333, 425, -1333, 382, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, 150, -1333, -1333, -1333,
- -1333, 150, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 540,
- -1333, -1333, -1333, -1333, 150, -1333, -1333, 1545, 111, 111,
- 42, 111, 111, 111, 1276, -1333, -1333, -1333, -1333, 130,
- -1333, -1333, -1333, -1333, 130, -1333, -1333, 130, -1333, -1333,
- 1545, 130, -1333, -1333, -1333, -1333, -1333, 130, -1333, -1333,
- 1545, 1545, -1333, -1333, -1333, -1333, 130, 150, 150, -1333,
- 150, 63, -1333, 63, 63, 63, 150, 150, 150, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 150,
- -1333, -1333, 186, 529, -1333, 653, 833, 529, 605, -1333,
- 171, 529, 581, -1333, 783, -1333, -1333, 150, -1333, 130,
- -1333, -1333, 150, 150, -1333, 53, -1333, 150, 150, 150,
- -1333, 150, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, 130, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- 130, -1333, -1333, 130, -1333, -1333, -75, 361, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, 990, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, 81, -34, -1333, -1333, 59, 548,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, 442, 460, 548, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 539,
- 523, 93, 93, 93, 93, 548, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 150,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 543,
- -1333, -1333, 108, -1333, 108, 108, -1333, 152, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, 1584, 148, 81,
- -1333, 150, -1333, 150, -1333, -1333, 894, -1333, 708, 252,
- -1333, -1333, 150, -1333, 150, -1333, -1333, 561, 46, -1333,
- -1333, 150, -1333, 150, -1333, -1333, 150, -1333, -1333, 150,
- -1333, -1333, 150, -1333, -1333, 150, -1333, -1333, 26, 86,
- -1333, 431, 421, 150, -1333, 130, -1333, -1333, 531, 281,
- 152, -1333, -1333, 1023, -73, -1333, -1333, 631, -1333, 512,
- 762, -1333, -1333, 481, 365, 588, 454, -1333, 76, 104,
- 108, 108, 108, 108, 108, 108, 104, 437, 418, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, 51, -1333, -1333,
- 424, -1333, -1333, -1333, -1333, -1333, 150, 436, 561, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 523, -1333,
- -31, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- 523, -1333, -1333, -31, -1333, -1333, -1333, -1333, 150, 453,
- 150, -1333, -1333, -1333, -1333, 529, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, 148, 321, -1333, -1333,
- -1333, -1333, -1333, 711, 150, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- 726, 176, 529, 81, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, 620, 108, 152, -1333,
- -1333, -1333, -1333, -1333, -1333, 59, 454, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, 260, 150, 691, -1333, -1333,
- 751, -85, -1333, -1333, -1333, -115, -1333, 726, -1333, -1333,
- -1333, 568, 562, 635, -1333, -1333, 449, 1253, -1333, -1333,
- 97, -1333, -1333, -1333, 448, -1333, -1333, -1333, 150, -1333,
- 384, -24, -1333, -1333, -24, 150, -1333, -1333, 950, 950,
- -1333, -1333, -1333, 523, -1333, -1333, -1333, -1333, -1333, -122,
- -1333, -1333, 150, -1333, -1333, 150, 86, 148, 150, -1333,
- -77, -1333, -1333, -1333, 150, -1333, -90, -1333, -1333, -1333,
- -1333, 33, -1333, -1333, -1333, -1333, 33, -1333, -1333, 33,
- -1333, 148, 409, -1333, 530, 111, 150, -1333, -1333, 150,
- 260, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- 260, 260, 675, 553, 553, 675, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, 99, -1333, -1333,
- -1333, 812, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 679,
- -1333, -1333, 946, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 651, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, 34, 276, 104, 104, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, 1014, 671, -1333, -1333, 634,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, 150, -1333, -1333,
- -1333, -1333, -1333, -1333, 950, 150, 453, -1333, -1333, -119,
- -1333, -1333, -1333, -1333, -1333, 150, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, 684, 255, 255, -1333, -1333, -1333, -1333, -1333, 150,
- 624, -1333, -1333, -1333, -117, 260, -117, -1333, -1333, -1333,
- -117, -1333, -117, -1333, -1333, -117, -1333, -117, 269, -1333,
- -1333, -1333, 428, 529, 104, 560, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -98, -1333, -1333, -1333, -1333,
- -1333, -1333, 150, -1333, 255, 150, 255, -1333, -1333, -1333,
- -1333, 739, -1333, -64, -1333, -1333, 26, -1333, -1333, -31,
- -1333, -1333, -1333, -1333, -1333, 111, 111, -1333, -1333, -1333,
- 150, 114, 64, -1333, 150, -1333, -127, -1333, -1333, -1333,
- -1333, 150, -1333, -52, -1333, -1333, -1333, -52, -1333, -1333,
- -1333, -1333, -1333, 150, -1333, -1333, -1333, -1333, -1333, 28,
- -1333, -1333, -46, -1333, -1333, -1333, -1333, -1333, -1333, 383,
- 890, -1333, -1333, -1333, -1333, -1333, -1333, 1023, 657, -1333,
- -1333, 148, -1333, 564, -1333, -1333, -1333, 11, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, 684, -1333, -1333, -1333, -1333,
- -1333, -1333, 81, 26, -1333, -1333, -1333, -1333, -1333, 150,
- -1333, -1333, -1333, 150, 150, -1333, 150, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, 534, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, 113, -1333, -117, 260, -1333, -1333, -1333,
- -1333, -1333, 255, -1333, 890, -1333, -1333, 150, -1333, -1333,
- -1333, -1333, 26, 150, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -1333, 148, 148, -1333, 725,
- -1333, 150, -1333, -1333, -31, 376, -1333, -1333, 150, -1333,
- -1333, -1333, -1333, 577, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, 260, 950, -1333, -1333, -1333, 26, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, 150, -1333, 150, 148, -1333, -1333,
- 272, -1333, -1333, -1333, -1333, -1333, 150, -1333, 150, -1333,
- 260, -1333, -1333, -1333, 150, -1333, 150, -1333, -1333, -1333,
- 150, -46, -1333, 280, -1333, -1333, 150, -1333, -1333, -1333,
- -1333, -1333, -1333, 150, -1333, -1333
-};
-
-/* YYPGOTO[NTERM-NUM]. */
-static const yytype_int16 yypgoto[] = {
- -1333, -25, -1333, -1333, -1333, 8, -1333, -906, -1333, -1333,
- -1333, -265, -1333, -1333, -1333, -1333, 173, -1333, -1333, -1333,
- -1333, -1333, 223, 139, -1333, -1333, -996, -1333, -1333, -1333,
- -1333, 645, -1333, -1333, -1333, -1333, -168, 470, 473, -285,
- 599, -1333, -1333, -91, -1333, -1333, -1333, -1333, -557, -1333,
- -1333, -1333, -1333, 504, 1011, -1333, -878, -1333, -1333, -1333,
- -1333, -1333, -1333, -310, -1333, -316, -1333, -1333, -291, -1333,
- -1333, -1333, -1333, -1333, -902, -1333, -901, -1333, -896, -1333,
- -893, -1333, -891, -1333, -1333, -1333, -630, -1333, -1333, -1333,
- -666, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -26,
- -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -890, -1333,
- -1333, 527, -1333, -1333, -1333, -1333, -1333, -284, -1333, -1333,
- -1333, -1333, -1333, -1333, 528, -1333, -11, 3, 1663, -1333,
- -7, -1333, 1085, -1333, -880, -1333, -1333, -1333, 1301, -1333,
- -1333, -1333, -1333, 544, -1043, -1333, -1333, -1333, -1333, 716,
- -1333, -1333, 329, -1333, -570, -1333, -1333, -1333, -872, -1333,
- 308, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 4, -1333,
- 180, -1333, 745, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -1333, -834, -1333, -1333, -1333, -871,
- -1333, -1333, -1333, -1333, -1333, -1333, 263, 858, -1333, -1333,
- -1333, -517, -1333, -1333, -1333, -1333, -1202, -181, -428, -1333,
- -1333, -1333, -1333, -1333, -1109, -1333, -1333, -1333, -1333, -1333,
- -99, -514, -1097, -1333, -1333, -1333, -1333, -1333, -1332, -1333,
- -1333, -1333, -1227, -1333, -420, -1333, -1333, -1333, -1333, -1333,
- -665, -1333, 769, -1333, -193, -1333, -209, -1333, 90, -1333,
- -1333, -1333, -1333, 355, -1333, 903, 128, -1025, -1333, -1333,
- -1333, -141, -1333, -242, -1333, -287, -1333, -1333, -1333, 55,
- 123, -674, -1333, -502, -1333, -1333, -1333, -1333, -1333, -1333,
- 813, -1333, 472, -1333, -1333, -1333, -1333, -1333, -251, -1333,
- -1333, -560, -1333, -582, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, -83, 105, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, -1333, 656, -864, -1333, -1333, -1333, 830, -1333,
- -1333, -1333, -155, -1333, -210, -1333, -1333, -113, -1333, -1333,
- -1333, -105, -1333, -889, -1333, -213, -1333, -803, -1333, -1333,
- -1333, -874, -1333, -1333, -1333, -1333, -679, -882, 502, -1333,
- -1333, -1333, -699, -1333, 767, -1333, -1333, -1333, -1333, -1333,
- 845, 339, -1333, -942, -1333, -1333, -1333, -1333, -1333, -1333,
- -1333, -1333, 902, -1333, 141, -1333, -1333, -44, -1333, -1333,
- -1333, -1333, 213, -1333, -1333, -1333, 411, -1333, -1333, -1333,
- -1333, -1333, -1333, -1333, -189, -1333, -363, -1333, -1333, -214,
- 873, -1333, -1333, -1333, -1333, -1333, -195, -1333, -1300, -1333,
- -1333, -1333, -1333, 904, -1333, 712, -1333, -1333, -1333, -1333,
- -706, -1333, -1248, -1333, -1333, -1333, -1333, -1333, -980, -186,
- -1333, -1333, -1333, -912, -1333, -1333, -1333, -1333, -467, -1333,
- -1089, 1032, -1333, -1333, -241, 742, -1333, -1333, -235, -1333,
- -1333, -1333, -1333, -1333, -770, -1333, -1333, -1333, 727, -1333,
- -1333, -1333, 203, -1333, -1333, -1333, -1333, -1333, 1551, 12,
- 347, -1333
-};
-
-/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
- positive, shift that token. If negative, reduce the rule which
- number is the opposite. If zero, do what YYDEFACT says.
- If YYTABLE_NINF, syntax error. */
-#define YYTABLE_NINF -1
-static const yytype_uint16 yytable[] = {
- 41, 592, 275, 883, 261, 273, 785, 1147, 756, 514,
- 232, 1027, 771, 52, 51, 1351, 803, 1001, 54, 892,
- 260, 1036, 71, 1148, 1236, 1038, 1039, 1005, 97, 1288,
- 648, 1040, 99, 105, 1041, 46, 40, 656, 1044, 658,
- 864, 1290, 23, 250, 1138, 1023, 312, 335, 317, 3,
- 1058, 1419, 1057, 28, 1082, 28, 1081, 1102, 1059, 345,
- 1031, 1093, 1083, 1084, 1118, 23, 3, 3, 138, 3,
- 28, 183, 23, 151, 3, 28, 183, 23, 331, 3,
- 853, 1270, 417, 23, 3, 1022, 1138, 1133, 159, 3,
- 942, 1243, 162, 1486, 1516, 28, 164, 28, 1275, 881,
- 165, 1092, 167, 23, 3, 182, 184, 3, 190, 191,
- 192, 3, 1482, 608, 673, 28, 3, 3, 1528, 28,
- 1384, 67, 193, 1028, 196, 609, 1432, 1062, 1505, 163,
- 988, 1087, 203, 1155, 1189, 1296, 844, 735, 845, 737,
- 739, 741, 843, 187, 19, 887, 843, 37, 28, 11,
- 1531, 681, 28, 1355, 219, 3, 642, 1, 1213, 681,
- 37, 964, 200, 681, 201, 908, 929, 643, 20, 1220,
- 226, 869, 681, 20, 229, 920, 20, 1385, 20, 3,
- 1216, 612, 242, 243, 244, 245, 247, 252, 258, 265,
- 270, 274, 1577, 1000, 1488, 194, 1510, 20, 169, 251,
- 1512, 1216, 115, 988, 1371, 20, 114, 32, 114, 466,
- 309, 62, 314, 643, 993, 613, 323, 1196, 20, 62,
- 20, 62, 20, 771, 1580, 1197, 114, 754, 277, 278,
- 114, 320, 32, 4, 1285, 1088, 299, 1253, 1241, 1251,
- 677, 940, 1139, 20, 1242, 1254, 1255, 62, 1260, 20,
- 4, 4, 869, 346, 1496, 1496, 161, 321, 3, 114,
- 62, 1042, 1108, 4, 20, 1114, 1000, 754, 4, 194,
- 347, 20, 384, 4, 1303, 62, 348, 1228, 351, 747,
- 28, 1557, 357, 1285, 1139, 754, 1286, 1286, 4, 687,
- 171, 4, 264, 1386, 264, 4, 1309, 170, 256, 257,
- 4, 4, 209, 1502, 371, 370, 373, 372, 375, 374,
- 1329, 376, 377, 1246, 1500, 1599, 380, 379, 382, 381,
- 24, 5, 681, 20, 383, 228, 1350, 386, 20, 20,
- 1583, 20, 367, 368, 369, 1223, 650, 173, 24, 4,
- 681, 20, 401, 657, 20, 3, 20, 947, 1478, 1369,
- 1465, 1367, 1379, 5, 1378, 268, 7, 1370, 20, 20,
- 14, 20, 62, 781, 29, 677, 296, 412, 1383, 1544,
- 437, 453, 20, 463, 1607, 647, 42, 43, 472, 385,
- 473, 20, 474, 1394, 1397, 477, 20, 1174, 1184, 53,
- 1449, 114, 20, 410, 20, 322, 67, 5, 339, 62,
- 673, 1403, 98, 1491, 1566, 343, 112, 113, 20, 20,
- 20, 69, 126, 127, 471, 130, 1568, 20, 1256, 1492,
- 336, 337, 7, 17, 67, 20, 133, 20, 378, 1075,
- 350, 1422, 608, 609, 30, 507, 754, 610, 840, 69,
- 1425, 1429, 4, 23, 104, 20, 512, 936, 1424, 1428,
- 513, 478, 69, 20, 62, 937, 7, 7, 7, 158,
- 257, 160, 529, 1601, 28, 44, 20, 69, 407, 1384,
- 48, 1550, 1459, 166, 479, 1603, 55, 94, 188, 339,
- 554, 20, 518, 752, 611, 577, 148, 1552, 1016, 587,
- 588, 681, 938, 168, 246, 480, 593, 481, 62, 596,
- 612, 194, 1469, 600, 1473, 1487, 1275, 208, 197, 940,
- 1468, 1264, 1472, 634, 1016, 1362, 168, 681, 37, 339,
- 217, 234, 652, 613, 1051, 408, 409, 28, 308, 4,
- 62, 936, 3, 603, 62, 1450, 239, 62, 62, 937,
- 302, 225, 133, 305, 874, 1533, 1066, 20, 67, 475,
- 476, 482, 1535, 397, 69, 1358, 1537, 1538, 1593, 255,
- 1159, 685, 1539, 1522, 20, 1540, 686, 202, 20, 1542,
- 62, 300, 301, 849, 1594, 134, 20, 1076, 1322, 688,
- 1052, 895, 1456, 1323, 939, 1553, 319, 1276, 402, 218,
- 673, 530, 1556, 940, 702, 670, 946, 894, 333, 705,
- 218, 1401, 708, 67, 1053, 20, 714, 37, 62, 569,
- 251, 911, 717, 912, 673, 614, 1265, 913, 681, 677,
- 483, 728, 731, 732, 1289, 733, 734, 1266, 736, 738,
- 740, 742, 743, 744, 63, 62, 677, 942, 114, 943,
- 1574, 1582, 1386, 790, 745, 1055, 69, 748, 1573, 1079,
- 760, 766, 1007, 776, 876, 782, 20, 796, 37, 807,
- 20, 1076, 812, 7, 813, 988, 366, 816, 817, 1015,
- 62, 353, 821, 822, 823, 354, 824, 1009, 1048, 67,
- 946, 791, 792, 793, 794, 1605, 825, 673, 1174, 758,
- 69, 134, 1122, 790, 62, 828, 452, 1095, 831, 104,
- 774, 834, 836, 104, 20, 1130, 256, 257, 7, 7,
- 754, 20, 1220, 400, 869, 1067, 4, 1151, 1181, 790,
- 62, 850, 69, 20, 62, 840, 69, 1230, 869, 69,
- 69, 791, 792, 793, 794, 1563, 20, 1161, 1162, 758,
- 20, 1033, 62, 20, 20, 840, 62, 470, 1406, 692,
- 693, 1163, 697, 698, 699, 1075, 1275, 791, 792, 793,
- 794, 758, 69, 1016, 1016, 758, 355, 681, 62, 937,
- 875, 1068, 1338, 936, 774, 681, 20, 1341, 938, 1137,
- 62, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 1541, 1275, 910, 1136, 775, 62, 1406, 356,
- 69, 757, 1432, 207, 62, 772, 938, 7, 1461, 788,
- 795, 210, 1194, 1547, 20, 62, 7, 511, 938, 67,
- 869, 1016, 101, 940, 681, 869, 20, 69, 62, 525,
- 1588, 1239, 1193, 694, 818, 940, 315, 1276, 1200, 102,
- 62, 20, 949, 67, 936, 977, 971, 1281, 972, 1355,
- 1283, 62, 937, 979, 984, 457, 248, 986, 586, 987,
- 795, 1187, 413, 991, 1201, 414, 994, 942, 995, 67,
- 775, 996, 62, 67, 997, 939, 20, 998, 103, 1127,
- 999, 458, 868, 20, 1004, 1190, 795, 459, 1011, 938,
- 1012, 67, 1523, 1017, 1021, 67, 415, 1499, 1503, 1029,
- 20, 62, 1035, 973, 8, 1054, 940, 1265, 1069, 1077,
- 1091, 1034, 69, 1368, 1346, 1034, 69, 67, 1266, 418,
- 758, 1051, 62, 440, 759, 978, 20, 1098, 974, 67,
- 20, 1099, 898, 901, 904, 907, 419, 1034, 69, 696,
- 297, 975, 1125, 1565, 626, 629, 222, 633, 20, 1115,
- 639, 1129, 20, 3, 885, 1202, 62, 254, 820, 1121,
- 69, 156, 1295, 1479, 67, 1140, 231, 1203, 1555, 1185,
- 128, 1480, 69, 104, 20, 1244, 1204, 1052, 1146, 765,
- 1333, 673, 259, 1150, 768, 1154, 20, 1372, 1400, 69,
- 1335, 1337, 1405, 946, 1095, 1408, 69, 969, 1112, 1567,
- 67, 1053, 1205, 20, 153, 155, 155, 69, 328, 1165,
- 20, 992, 571, 806, 572, 921, 772, 118, 691, 681,
- 69, 20, 1578, 172, 269, 1167, 1353, 266, 1409, 62,
- 1612, 1622, 69, 1245, 20, 62, 937, 788, 1595, 1086,
- 122, 713, 194, 69, 1354, 271, 20, 119, 421, 1344,
- 67, 722, 725, 1313, 120, 1392, 573, 20, 1602, 839,
- 574, 1314, 1402, 870, 69, 835, 1482, 788, 100, 106,
- 123, 1191, 1192, 938, 788, 1206, 1261, 124, 20, 62,
- 963, 880, 1224, 759, 1355, 1527, 1526, 1188, 1233, 276,
- 111, 1238, 1249, 69, 575, 1259, 20, 889, 758, 1267,
- 168, 1417, 576, 1274, 423, 238, 1280, 20, 1414, 1282,
- 1284, 406, 1457, 1104, 69, 1109, 1109, 1455, 1104, 425,
- 1285, 886, 1025, 1286, 1297, 1436, 681, 1300, 20, 0,
- 1301, 1302, 1262, 1307, 0, 1308, 0, 4, 838, 1311,
- 0, 1312, 0, 788, 0, 1316, 1315, 840, 69, 0,
- 1318, 1317, 0, 1320, 1319, 1216, 0, 1324, 0, 422,
- 0, 1331, 20, 0, 1332, 465, 0, 0, 204, 0,
- 0, 0, 169, 0, 0, 0, 841, 0, 67, 0,
- 1175, 1178, 0, 0, 67, 0, 810, 985, 0, 205,
- 220, 0, 1349, 0, 0, 0, 1356, 7, 104, 7,
- 7, 0, 7, 842, 1365, 170, 781, 1376, 677, 843,
- 230, 365, 0, 0, 0, 968, 844, 0, 845, 0,
- 0, 69, 171, 461, 0, 462, 0, 69, 67, 1519,
- 846, 233, 1521, 0, 0, 20, 0, 0, 1387, 0,
- 0, 20, 847, 0, 806, 172, 311, 1016, 316, 0,
- 681, 0, 325, 848, 0, 0, 391, 394, 0, 0,
- 0, 759, 1413, 897, 900, 903, 906, 313, 0, 318,
- 1415, 69, 563, 329, 1418, 7, 0, 543, 0, 0,
- 1420, 0, 849, 173, 788, 20, 0, 62, 0, 544,
- 0, 890, 0, 7, 545, 7, 7, 7, 7, 7,
- 7, 0, 0, 0, 1431, 478, 1571, 0, 0, 1434,
- 546, 1437, 0, 0, 1126, 1440, 0, 1443, 358, 0,
- 1445, 0, 1447, 1451, 0, 0, 1330, 1454, 479, 494,
- 495, 496, 497, 498, 499, 500, 501, 502, 503, 363,
- 0, 0, 62, 937, 0, 1248, 0, 608, 609, 480,
- 1464, 481, 610, 0, 547, 506, 0, 1466, 0, 0,
- 1471, 1600, 0, 387, 508, 0, 1476, 0, 0, 548,
- 549, 0, 478, 1157, 1490, 0, 0, 0, 625, 628,
- 938, 632, 0, 0, 638, 1495, 1497, 1501, 0, 1504,
- 1616, 1506, 0, 788, 788, 479, 1508, 940, 1509, 611,
- 0, 1621, 1511, 416, 0, 482, 438, 454, 1514, 464,
- 0, 1006, 1051, 0, 1517, 612, 480, 1520, 481, 0,
- 1020, 1024, 7, 7, 424, 0, 1032, 451, 456, 0,
- 467, 0, 0, 1534, 0, 0, 67, 1094, 613, 751,
- 0, 1103, 763, 0, 550, 780, 0, 0, 1119, 805,
- 788, 788, 690, 0, 0, 0, 0, 0, 0, 700,
- 551, 0, 0, 0, 1559, 0, 0, 0, 1560, 1561,
- 0, 1562, 482, 0, 483, 712, 0, 0, 0, 69,
- 0, 1175, 788, 0, 0, 721, 724, 552, 1564, 553,
- 1569, 67, 1053, 20, 0, 0, 0, 0, 0, 0,
- 0, 0, 1581, 0, 1306, 0, 0, 0, 1585, 0,
- 0, 0, 788, 860, 788, 0, 556, 0, 0, 0,
- 0, 578, 59, 60, 0, 0, 1591, 0, 1321, 1592,
- 61, 62, 0, 1597, 69, 0, 63, 566, 0, 0,
- 0, 483, 585, 0, 0, 0, 1493, 1494, 20, 635,
- 0, 0, 10, 0, 0, 13, 16, 0, 20, 1608,
- 0, 1609, 64, 516, 0, 519, 522, 0, 526, 0,
- 636, 1614, 837, 1615, 0, 0, 0, 65, 0, 1617,
- 0, 1618, 0, 0, 411, 1619, 1620, 0, 59, 60,
- 0, 1624, 0, 0, 0, 0, 61, 62, 1625, 0,
- 589, 0, 63, 1218, 0, 0, 594, 0, 0, 0,
- 597, 0, 0, 601, 0, 605, 608, 609, 10, 0,
- 132, 610, 0, 139, 140, 141, 142, 0, 64, 0,
- 703, 143, 144, 145, 146, 706, 0, 0, 709, 0,
- 0, 0, 715, 65, 0, 0, 0, 0, 718, 0,
- 788, 704, 10, 10, 10, 0, 707, 729, 1304, 710,
- 66, 0, 1310, 716, 0, 0, 936, 0, 611, 719,
- 0, 0, 0, 62, 937, 0, 0, 0, 730, 0,
- 67, 0, 186, 749, 612, 0, 761, 767, 0, 777,
- 0, 783, 0, 798, 1045, 808, 0, 1064, 0, 0,
- 814, 1089, 0, 0, 753, 0, 0, 613, 770, 0,
- 68, 938, 786, 0, 0, 0, 811, 0, 0, 0,
- 939, 815, 826, 69, 0, 0, 66, 0, 940, 0,
- 70, 829, 0, 0, 832, 0, 0, 20, 0, 0,
- 0, 0, 0, 827, 0, 922, 67, 926, 926, 0,
- 931, 0, 830, 0, 0, 833, 0, 852, 0, 941,
- 0, 0, 0, 0, 0, 0, 0, 1395, 1398, 0,
- 0, 0, 942, 0, 943, 298, 68, 1404, 865, 517,
- 0, 520, 523, 0, 527, 0, 944, 0, 0, 69,
- 0, 84, 85, 86, 0, 945, 70, 0, 0, 614,
- 0, 0, 0, 20, 0, 0, 0, 0, 1546, 87,
- 88, 89, 0, 0, 0, 946, 590, 1169, 0, 0,
- 0, 0, 595, 1026, 1426, 1430, 598, 0, 0, 602,
- 0, 606, 0, 0, 947, 0, 847, 0, 90, 91,
- 92, 394, 0, 1106, 926, 1110, 1110, 926, 1106, 0,
- 0, 0, 0, 0, 0, 759, 1460, 0, 0, 10,
- 0, 0, 0, 0, 1198, 69, 0, 0, 0, 0,
- 0, 0, 0, 0, 1226, 0, 0, 948, 951, 20,
- 1235, 0, 0, 62, 1257, 0, 1470, 659, 1474, 980,
- 0, 0, 0, 1586, 1587, 1485, 0, 660, 0, 965,
- 0, 0, 0, 661, 10, 10, 0, 662, 0, 0,
- 983, 663, 0, 426, 0, 0, 0, 0, 664, 0,
- 665, 0, 427, 354, 0, 0, 1013, 428, 429, 0,
- 666, 667, 668, 0, 1610, 0, 0, 0, 1037, 0,
- 0, 1056, 0, 0, 1071, 1080, 430, 1014, 431, 0,
- 0, 0, 1530, 0, 0, 0, 0, 0, 0, 1047,
- 0, 0, 1065, 0, 0, 1073, 1090, 0, 0, 0,
- 926, 506, 0, 0, 0, 0, 0, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 1361, 0,
- 0, 432, 433, 0, 0, 0, 1373, 0, 0, 1380,
- 0, 434, 435, 10, 0, 0, 0, 0, 0, 0,
- 0, 0, 10, 279, 0, 0, 280, 0, 0, 0,
- 281, 282, 283, 284, 1575, 285, 1579, 286, 287, 0,
- 0, 288, 0, 0, 0, 0, 0, 0, 436, 289,
- 0, 0, 0, 0, 0, 0, 0, 0, 290, 0,
- 0, 0, 0, 0, 291, 0, 0, 0, 0, 0,
- 292, 1168, 293, 0, 0, 0, 0, 294, 0, 0,
- 0, 0, 0, 0, 0, 69, 0, 0, 0, 0,
- 0, 0, 1170, 0, 0, 0, 0, 0, 0, 20,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1435, 0, 1438, 0, 0, 0, 1441, 1195, 1444,
- 0, 1208, 1446, 0, 1448, 0, 0, 0, 1225, 0,
- 0, 0, 0, 0, 1234, 0, 0, 1240, 1250, 1199,
- 0, 0, 1215, 0, 0, 1269, 0, 0, 0, 1227,
- 0, 0, 0, 0, 0, 1237, 0, 0, 1247, 1258,
- 0, 0, 0, 0, 0, 0, 1273, 532, 533, 534,
- 535, 536, 537, 539, 540, 541, 542, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1325, 607, 0, 0, 0, 630, 0,
- 0, 0, 0, 640, 641, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1328, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1543, 0, 0, 0, 0,
- 0, 0, 1357, 0, 0, 0, 0, 0, 0, 0,
- 1366, 0, 0, 1377, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1364, 0, 0, 0, 0, 0, 0,
- 0, 1374, 0, 0, 1381, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1570, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 10, 0, 10, 10, 0, 10, 0,
- 0, 0, 1477, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1481, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1536,
- 0, 10, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,
- 1545, 10, 10, 10, 10, 10, 10, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1173, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 10, 10
-};
-
-static const yytype_int16 yycheck[] = {
- 25, 518, 216, 773, 213, 215, 680, 1003, 673, 476,
- 199, 923, 677, 39, 39, 1217, 682, 908, 43, 789,
- 213, 927, 47, 1003, 1113, 927, 927, 909, 53, 1138,
- 544, 927, 57, 58, 927, 32, 24, 551, 927, 553,
- 746, 1138, 6, 211, 75, 919, 235, 256, 237, 3,
- 930, 1299, 930, 4, 934, 4, 934, 939, 930, 269,
- 924, 935, 934, 934, 946, 6, 3, 3, 93, 3,
- 4, 5, 6, 98, 3, 4, 5, 6, 246, 3,
- 746, 1124, 392, 6, 3, 919, 75, 978, 113, 3,
- 188, 1116, 117, 1393, 66, 4, 121, 4, 122, 773,
- 125, 935, 127, 6, 3, 130, 131, 3, 133, 134,
- 135, 3, 176, 71, 148, 4, 3, 3, 1450, 4,
- 86, 238, 147, 196, 149, 72, 178, 930, 255, 117,
- 104, 934, 157, 1015, 1076, 257, 226, 651, 228, 653,
- 654, 655, 219, 131, 111, 775, 219, 19, 4, 0,
- 1450, 236, 4, 272, 179, 3, 185, 116, 1100, 236,
- 32, 867, 154, 236, 156, 795, 845, 242, 295, 284,
- 195, 286, 236, 295, 199, 67, 295, 143, 295, 3,
- 265, 139, 207, 208, 209, 210, 211, 212, 213, 214,
- 215, 216, 1524, 167, 1396, 241, 1423, 295, 149, 150,
- 1427, 265, 61, 104, 1229, 295, 115, 131, 115, 398,
- 235, 89, 237, 242, 888, 162, 241, 1097, 295, 89,
- 295, 89, 295, 888, 1524, 1097, 115, 181, 216, 217,
- 115, 73, 131, 187, 170, 934, 224, 1117, 1116, 1117,
- 194, 144, 273, 295, 1116, 1117, 1117, 89, 1120, 295,
- 187, 187, 286, 278, 141, 141, 115, 99, 3, 115,
- 89, 927, 941, 187, 295, 944, 167, 181, 187, 241,
- 295, 295, 140, 187, 1156, 89, 301, 1111, 303, 93,
- 4, 1483, 307, 170, 273, 181, 173, 173, 187, 599,
- 199, 187, 201, 259, 201, 187, 1160, 182, 183, 184,
- 187, 187, 161, 1412, 330, 330, 332, 332, 334, 334,
- 1184, 336, 337, 1116, 1411, 1563, 342, 342, 344, 344,
- 261, 245, 236, 295, 349, 197, 1217, 352, 295, 295,
- 1532, 295, 320, 321, 322, 1105, 545, 260, 261, 187,
- 236, 295, 367, 552, 295, 3, 295, 250, 1391, 1229,
- 1375, 1229, 1232, 245, 1232, 214, 1, 1229, 295, 295,
- 5, 295, 89, 192, 17, 194, 295, 392, 1248, 1458,
- 395, 396, 295, 398, 1576, 543, 29, 30, 403, 247,
- 405, 295, 407, 1265, 1266, 410, 295, 1052, 1067, 42,
- 121, 115, 295, 390, 295, 237, 238, 245, 257, 89,
- 148, 1275, 55, 1399, 1513, 264, 59, 60, 295, 295,
- 295, 281, 65, 66, 402, 68, 1513, 295, 1117, 1399,
- 276, 277, 67, 118, 238, 295, 126, 295, 338, 64,
- 302, 1321, 71, 72, 117, 460, 181, 76, 157, 281,
- 1322, 1323, 187, 6, 258, 295, 471, 82, 1322, 1323,
- 475, 109, 281, 295, 89, 90, 101, 102, 103, 112,
- 184, 114, 487, 1572, 4, 161, 295, 281, 378, 86,
- 158, 1467, 1354, 126, 132, 1572, 160, 205, 131, 338,
- 505, 295, 479, 672, 123, 510, 206, 1467, 233, 514,
- 515, 236, 127, 77, 78, 153, 521, 155, 89, 524,
- 139, 241, 1384, 528, 1386, 1396, 122, 160, 84, 144,
- 1384, 63, 1386, 538, 233, 1221, 77, 236, 390, 378,
- 210, 267, 547, 162, 159, 384, 385, 4, 83, 187,
- 89, 82, 3, 530, 89, 266, 270, 89, 89, 90,
- 164, 194, 126, 200, 758, 1457, 65, 295, 238, 408,
- 409, 209, 1458, 85, 281, 1221, 1458, 1458, 1554, 212,
- 1027, 586, 1458, 180, 295, 1458, 591, 294, 295, 1458,
- 89, 224, 225, 292, 1554, 275, 295, 212, 169, 604,
- 215, 790, 1352, 174, 136, 1475, 239, 203, 282, 279,
- 148, 130, 1483, 144, 619, 151, 231, 790, 251, 624,
- 279, 1275, 627, 238, 239, 295, 631, 479, 89, 287,
- 150, 68, 637, 70, 148, 254, 168, 74, 236, 194,
- 278, 646, 647, 648, 1138, 650, 651, 179, 653, 654,
- 655, 656, 657, 658, 94, 89, 194, 188, 115, 190,
- 1522, 1532, 259, 62, 669, 930, 281, 672, 1522, 934,
- 675, 676, 221, 678, 106, 680, 295, 682, 530, 684,
- 295, 212, 687, 308, 689, 104, 319, 692, 693, 138,
- 89, 125, 697, 698, 699, 129, 701, 256, 166, 238,
- 231, 100, 101, 102, 103, 1576, 711, 148, 1353, 108,
- 281, 275, 274, 62, 89, 720, 177, 243, 723, 258,
- 95, 726, 727, 258, 295, 269, 183, 184, 353, 354,
- 181, 295, 284, 366, 286, 234, 187, 264, 98, 62,
- 89, 746, 281, 295, 89, 157, 281, 165, 286, 281,
- 281, 100, 101, 102, 103, 1505, 295, 26, 27, 108,
- 295, 110, 89, 295, 295, 157, 89, 400, 114, 608,
- 609, 40, 611, 612, 613, 64, 122, 100, 101, 102,
- 103, 108, 281, 233, 233, 108, 220, 236, 89, 90,
- 758, 290, 97, 82, 95, 236, 295, 224, 127, 988,
- 89, 426, 427, 428, 429, 430, 431, 432, 433, 434,
- 435, 436, 1458, 122, 819, 988, 191, 89, 114, 253,
- 281, 673, 178, 158, 89, 677, 127, 452, 248, 681,
- 229, 166, 1097, 249, 295, 89, 461, 470, 127, 238,
- 286, 233, 107, 144, 236, 286, 295, 281, 89, 482,
- 105, 1116, 1097, 610, 695, 144, 237, 203, 87, 124,
- 89, 295, 867, 238, 82, 137, 871, 1131, 873, 272,
- 1134, 89, 90, 878, 879, 23, 211, 882, 511, 884,
- 229, 1075, 392, 888, 113, 392, 891, 188, 893, 238,
- 191, 896, 89, 238, 899, 136, 295, 902, 163, 970,
- 905, 49, 754, 295, 909, 1095, 229, 55, 913, 127,
- 915, 238, 1449, 918, 919, 238, 392, 1411, 1412, 924,
- 295, 89, 927, 9, 1, 930, 144, 168, 933, 934,
- 935, 280, 281, 1229, 1205, 280, 281, 238, 179, 392,
- 108, 159, 89, 395, 271, 217, 295, 938, 34, 238,
- 295, 938, 791, 792, 793, 794, 392, 280, 281, 610,
- 224, 47, 967, 1513, 533, 534, 179, 536, 295, 945,
- 539, 976, 295, 3, 774, 204, 89, 212, 695, 947,
- 281, 103, 1143, 1391, 238, 990, 199, 216, 1482, 1068,
- 67, 1391, 281, 258, 295, 1116, 225, 215, 1003, 146,
- 1190, 148, 213, 1008, 676, 1010, 295, 1229, 1275, 281,
- 1200, 1201, 1276, 231, 243, 1279, 281, 869, 943, 1513,
- 238, 239, 251, 295, 101, 102, 103, 281, 241, 1034,
- 295, 888, 145, 230, 147, 842, 888, 20, 607, 236,
- 281, 295, 1524, 222, 223, 1050, 214, 214, 1279, 89,
- 1590, 1613, 281, 1116, 295, 89, 90, 909, 1555, 934,
- 20, 630, 241, 281, 232, 215, 295, 50, 392, 1204,
- 238, 640, 641, 1166, 57, 1264, 189, 295, 1572, 69,
- 193, 1166, 1275, 755, 281, 726, 176, 939, 57, 58,
- 50, 1096, 1097, 127, 946, 1100, 1120, 57, 295, 89,
- 867, 773, 1107, 271, 272, 195, 1449, 1075, 1113, 216,
- 58, 1116, 1117, 281, 227, 1120, 295, 789, 108, 1124,
- 77, 1296, 235, 1128, 392, 201, 1131, 295, 1294, 1134,
- 1135, 369, 1353, 940, 281, 942, 943, 1352, 945, 392,
- 170, 774, 919, 173, 1149, 1335, 236, 1152, 295, -1,
- 1155, 1156, 1120, 1158, -1, 1160, -1, 187, 727, 1164,
- -1, 1166, -1, 1015, -1, 1171, 1171, 157, 281, -1,
- 1176, 1176, -1, 1179, 1179, 265, -1, 1182, -1, 392,
- -1, 1186, 295, -1, 1189, 398, -1, -1, 157, -1,
- -1, -1, 149, -1, -1, -1, 186, -1, 238, -1,
- 1052, 1053, -1, -1, 238, -1, 684, 879, -1, 157,
- 179, -1, 1217, -1, -1, -1, 1221, 842, 258, 844,
- 845, -1, 847, 213, 1229, 182, 192, 1232, 194, 219,
- 199, 308, -1, -1, -1, 868, 226, -1, 228, -1,
- -1, 281, 199, 283, -1, 285, -1, 281, 238, 1439,
- 240, 199, 1442, -1, -1, 295, -1, -1, 1263, -1,
- -1, 295, 252, -1, 230, 222, 235, 233, 237, -1,
- 236, -1, 241, 263, -1, -1, 353, 354, -1, -1,
- -1, 271, 1287, 791, 792, 793, 794, 235, -1, 237,
- 1295, 281, 505, 241, 1299, 920, -1, 79, -1, -1,
- 1305, -1, 292, 260, 1156, 295, -1, 89, -1, 91,
- -1, 789, -1, 938, 96, 940, 941, 942, 943, 944,
- 945, -1, -1, -1, 1329, 109, 1516, -1, -1, 1334,
- 112, 1336, -1, -1, 967, 1340, -1, 1342, 307, -1,
- 1345, -1, 1347, 1348, -1, -1, 1185, 1352, 132, 427,
- 428, 429, 430, 431, 432, 433, 434, 435, 436, 307,
- -1, -1, 89, 90, -1, 92, -1, 71, 72, 153,
- 1375, 155, 76, -1, 156, 452, -1, 1382, -1, -1,
- 1385, 1571, -1, 352, 461, -1, 1391, -1, -1, 171,
- 172, -1, 109, 1026, 1399, -1, -1, -1, 533, 534,
- 127, 536, -1, -1, 539, 1410, 1411, 1412, -1, 1414,
- 1600, 1416, -1, 1265, 1266, 132, 1421, 144, 1423, 123,
- -1, 1611, 1427, 392, -1, 209, 395, 396, 1433, 398,
- -1, 909, 159, -1, 1439, 139, 153, 1442, 155, -1,
- 918, 919, 1067, 1068, 392, -1, 924, 395, 396, -1,
- 398, -1, -1, 1458, -1, -1, 238, 935, 162, 672,
- -1, 939, 675, -1, 246, 678, -1, -1, 946, 682,
- 1322, 1323, 607, -1, -1, -1, -1, -1, -1, 614,
- 262, -1, -1, -1, 1489, -1, -1, -1, 1493, 1494,
- -1, 1496, 209, -1, 278, 630, -1, -1, -1, 281,
- -1, 1353, 1354, -1, -1, 640, 641, 289, 1513, 291,
- 1515, 238, 239, 295, -1, -1, -1, -1, -1, -1,
- -1, -1, 1527, -1, 1157, -1, -1, -1, 1533, -1,
- -1, -1, 1384, 746, 1386, -1, 505, -1, -1, -1,
- -1, 510, 80, 81, -1, -1, 1551, -1, 1181, 1554,
- 88, 89, -1, 1558, 281, -1, 94, 505, -1, -1,
- -1, 278, 510, -1, -1, -1, 1405, 1406, 295, 538,
- -1, -1, 1, -1, -1, 4, 5, -1, 295, 1584,
- -1, 1586, 120, 478, -1, 480, 481, -1, 483, -1,
- 538, 1596, 727, 1598, -1, -1, -1, 135, -1, 1604,
- -1, 1606, -1, -1, 142, 1610, 1611, -1, 80, 81,
- -1, 1616, -1, -1, -1, -1, 88, 89, 1623, -1,
- 515, -1, 94, 1101, -1, -1, 521, -1, -1, -1,
- 525, -1, -1, 528, -1, 530, 71, 72, 67, -1,
- 69, 76, -1, 35, 36, 37, 38, -1, 120, -1,
- 619, 43, 44, 45, 46, 624, -1, -1, 627, -1,
- -1, -1, 631, 135, -1, -1, -1, -1, 637, -1,
- 1522, 619, 101, 102, 103, -1, 624, 646, 1156, 627,
- 218, -1, 1160, 631, -1, -1, 82, -1, 123, 637,
- -1, -1, -1, 89, 90, -1, -1, -1, 646, -1,
- 238, -1, 131, 672, 139, -1, 675, 676, -1, 678,
- -1, 680, -1, 682, 927, 684, -1, 930, -1, -1,
- 689, 934, -1, -1, 672, -1, -1, 162, 676, -1,
- 268, 127, 680, -1, -1, -1, 684, -1, -1, -1,
- 136, 689, 711, 281, -1, -1, 218, -1, 144, -1,
- 288, 720, -1, -1, 723, -1, -1, 295, -1, -1,
- -1, -1, -1, 711, -1, 842, 238, 844, 845, -1,
- 847, -1, 720, -1, -1, 723, -1, 746, -1, 175,
- -1, -1, -1, -1, -1, -1, -1, 1265, 1266, -1,
- -1, -1, 188, -1, 190, 224, 268, 1275, 746, 478,
- -1, 480, 481, -1, 483, -1, 202, -1, -1, 281,
- -1, 11, 12, 13, -1, 211, 288, -1, -1, 254,
- -1, -1, -1, 295, -1, -1, -1, -1, 1461, 29,
- 30, 31, -1, -1, -1, 231, 515, 1050, -1, -1,
- -1, -1, 521, 920, 1322, 1323, 525, -1, -1, 528,
- -1, 530, -1, -1, 250, -1, 252, -1, 58, 59,
- 60, 938, -1, 940, 941, 942, 943, 944, 945, -1,
- -1, -1, -1, -1, -1, 271, 1354, -1, -1, 308,
- -1, -1, -1, -1, 1097, 281, -1, -1, -1, -1,
- -1, -1, -1, -1, 1107, -1, -1, 293, 867, 295,
- 1113, -1, -1, 89, 1117, -1, 1384, 8, 1386, 878,
- -1, -1, -1, 1546, 1547, 1393, -1, 18, -1, 867,
- -1, -1, -1, 24, 353, 354, -1, 28, -1, -1,
- 878, 32, -1, 119, -1, -1, -1, -1, 39, -1,
- 41, -1, 128, 129, -1, -1, 915, 133, 134, -1,
- 51, 52, 53, -1, 1587, -1, -1, -1, 927, -1,
- -1, 930, -1, -1, 933, 934, 152, 915, 154, -1,
- -1, -1, 1450, -1, -1, -1, -1, -1, -1, 927,
- -1, -1, 930, -1, -1, 933, 934, -1, -1, -1,
- 1067, 1068, -1, -1, -1, -1, -1, 426, 427, 428,
- 429, 430, 431, 432, 433, 434, 435, 436, 1221, -1,
- -1, 197, 198, -1, -1, -1, 1229, -1, -1, 1232,
- -1, 207, 208, 452, -1, -1, -1, -1, -1, -1,
- -1, -1, 461, 7, -1, -1, 10, -1, -1, -1,
- 14, 15, 16, 17, 1522, 19, 1524, 21, 22, -1,
- -1, 25, -1, -1, -1, -1, -1, -1, 244, 33,
- -1, -1, -1, -1, -1, -1, -1, -1, 42, -1,
- -1, -1, -1, -1, 48, -1, -1, -1, -1, -1,
- 54, 1050, 56, -1, -1, -1, -1, 61, -1, -1,
- -1, -1, -1, -1, -1, 281, -1, -1, -1, -1,
- -1, -1, 1050, -1, -1, -1, -1, -1, -1, 295,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 1334, -1, 1336, -1, -1, -1, 1340, 1097, 1342,
- -1, 1100, 1345, -1, 1347, -1, -1, -1, 1107, -1,
- -1, -1, -1, -1, 1113, -1, -1, 1116, 1117, 1097,
- -1, -1, 1100, -1, -1, 1124, -1, -1, -1, 1107,
- -1, -1, -1, -1, -1, 1113, -1, -1, 1116, 1117,
- -1, -1, -1, -1, -1, -1, 1124, 494, 495, 496,
- 497, 498, 499, 500, 501, 502, 503, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 1182, 531, -1, -1, -1, 535, -1,
- -1, -1, -1, 540, 541, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 1182, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 1458, -1, -1, -1, -1,
- -1, -1, 1221, -1, -1, -1, -1, -1, -1, -1,
- 1229, -1, -1, 1232, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 1221, -1, -1, -1, -1, -1, -1,
- -1, 1229, -1, -1, 1232, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 1515, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 842, -1, 844, 845, -1, 847, -1,
- -1, -1, 1391, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 1391, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 1458,
- -1, 920, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 938,
- 1458, 940, 941, 942, 943, 944, 945, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 1051, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 1067, 1068
-};
-
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
- symbol of state STATE-NUM. */
-static const yytype_uint16 yystos[] = {
- 0, 116, 298, 3, 187, 245, 300, 549, 551, 663,
- 764, 0, 550, 764, 549, 664, 764, 118, 302, 111,
- 295, 297, 395, 6, 261, 665, 695, 765, 4, 766,
- 117, 301, 131, 396, 423, 426, 549, 552, 764, 698,
- 765, 297, 766, 766, 161, 488, 423, 427, 158, 397,
- 483, 297, 395, 766, 297, 160, 487, 489, 299, 80,
- 81, 88, 89, 94, 120, 135, 218, 238, 268, 281,
- 288, 297, 333, 334, 349, 350, 359, 407, 439, 609,
- 650, 711, 737, 754, 11, 12, 13, 29, 30, 31,
- 58, 59, 60, 484, 205, 398, 587, 297, 766, 297,
- 350, 107, 124, 163, 258, 297, 350, 384, 416, 495,
- 690, 737, 766, 766, 115, 670, 766, 351, 20, 50,
- 57, 360, 20, 50, 57, 408, 766, 766, 551, 652,
- 766, 738, 764, 126, 275, 332, 419, 728, 297, 35,
- 36, 37, 38, 43, 44, 45, 46, 588, 206, 399,
- 589, 297, 388, 551, 493, 551, 493, 691, 766, 297,
- 766, 670, 297, 765, 297, 297, 766, 297, 77, 149,
- 182, 199, 222, 260, 327, 468, 538, 576, 614, 651,
- 696, 729, 297, 5, 297, 445, 764, 765, 766, 767,
- 297, 297, 297, 297, 241, 620, 297, 84, 339, 385,
- 301, 301, 294, 297, 350, 737, 762, 327, 766, 670,
- 327, 328, 469, 539, 577, 615, 697, 210, 279, 297,
- 350, 596, 650, 734, 446, 766, 297, 341, 552, 297,
- 350, 650, 690, 737, 267, 417, 709, 496, 709, 270,
- 715, 763, 297, 297, 297, 297, 78, 297, 327, 329,
- 332, 150, 297, 466, 468, 766, 183, 184, 297, 538,
- 540, 542, 543, 670, 201, 297, 576, 578, 670, 223,
- 297, 614, 616, 620, 297, 695, 696, 765, 765, 7,
- 10, 14, 15, 16, 17, 19, 21, 22, 25, 33,
- 42, 48, 54, 56, 61, 735, 295, 445, 764, 765,
- 766, 766, 164, 340, 497, 200, 580, 710, 83, 297,
- 336, 350, 690, 737, 297, 336, 350, 690, 737, 766,
- 73, 99, 237, 297, 320, 350, 368, 646, 650, 737,
- 330, 332, 467, 766, 541, 542, 276, 277, 544, 670,
- 730, 731, 579, 670, 617, 620, 297, 297, 297, 494,
- 552, 297, 581, 125, 129, 220, 253, 297, 350, 389,
- 418, 420, 680, 737, 338, 551, 766, 765, 765, 765,
- 297, 395, 297, 395, 297, 395, 297, 297, 544, 297,
- 395, 297, 395, 297, 140, 247, 297, 350, 449, 669,
- 491, 551, 421, 422, 551, 390, 681, 85, 337, 342,
- 766, 297, 282, 369, 741, 647, 741, 544, 670, 670,
- 423, 142, 297, 333, 334, 349, 350, 359, 407, 439,
- 451, 609, 650, 711, 737, 754, 119, 128, 133, 134,
- 152, 154, 197, 198, 207, 208, 244, 297, 350, 405,
- 420, 432, 435, 437, 472, 476, 572, 574, 590, 592,
- 661, 737, 177, 297, 350, 526, 737, 23, 49, 55,
- 343, 283, 285, 297, 350, 650, 690, 737, 742, 746,
- 766, 765, 297, 297, 297, 670, 670, 297, 109, 132,
- 153, 155, 209, 278, 391, 428, 434, 452, 474, 478,
- 594, 732, 551, 668, 668, 668, 668, 668, 668, 668,
- 668, 668, 668, 668, 516, 527, 551, 297, 551, 748,
- 747, 766, 297, 297, 734, 392, 428, 434, 423, 428,
- 434, 475, 428, 434, 479, 766, 428, 434, 733, 297,
- 130, 424, 424, 424, 424, 424, 424, 424, 573, 424,
- 424, 424, 424, 79, 91, 96, 112, 156, 171, 172,
- 246, 262, 289, 291, 297, 331, 350, 354, 363, 400,
- 480, 512, 514, 650, 666, 699, 737, 755, 757, 287,
- 752, 145, 147, 189, 193, 227, 235, 297, 350, 458,
- 462, 555, 563, 625, 640, 737, 766, 297, 297, 428,
- 434, 429, 497, 297, 428, 434, 297, 428, 434, 595,
- 297, 428, 434, 423, 425, 428, 434, 424, 71, 72,
- 76, 123, 139, 162, 254, 318, 319, 324, 415, 433,
- 448, 492, 656, 682, 436, 656, 682, 438, 656, 682,
- 424, 477, 656, 682, 297, 350, 737, 575, 656, 682,
- 424, 424, 185, 242, 545, 657, 662, 332, 517, 552,
- 542, 401, 297, 513, 515, 667, 517, 542, 517, 8,
- 18, 24, 28, 32, 39, 41, 51, 52, 53, 753,
- 151, 470, 743, 148, 456, 459, 463, 194, 556, 567,
- 564, 236, 626, 644, 641, 297, 297, 359, 297, 406,
- 656, 682, 670, 670, 318, 325, 448, 670, 670, 670,
- 656, 683, 297, 350, 737, 297, 350, 737, 297, 350,
- 737, 473, 656, 682, 297, 350, 737, 297, 350, 737,
- 591, 656, 682, 593, 656, 682, 546, 658, 297, 350,
- 737, 297, 297, 297, 297, 517, 297, 517, 297, 517,
- 297, 517, 297, 297, 297, 297, 471, 93, 297, 350,
- 355, 650, 690, 737, 181, 465, 536, 552, 108, 271,
- 297, 350, 386, 650, 716, 146, 297, 350, 456, 460,
- 737, 536, 552, 566, 95, 191, 297, 350, 361, 559,
- 650, 192, 297, 350, 561, 567, 737, 536, 552, 643,
- 62, 100, 101, 102, 103, 229, 297, 303, 350, 370,
- 372, 374, 376, 386, 629, 650, 230, 297, 350, 631,
- 644, 737, 297, 297, 350, 737, 297, 297, 319, 326,
- 492, 297, 297, 297, 297, 297, 350, 737, 297, 350,
- 737, 297, 350, 737, 297, 657, 297, 656, 682, 69,
- 157, 186, 213, 219, 226, 228, 240, 252, 263, 292,
- 297, 315, 350, 386, 481, 547, 602, 610, 623, 627,
- 650, 654, 678, 700, 716, 737, 758, 356, 552, 286,
- 456, 457, 750, 387, 695, 765, 106, 382, 717, 461,
- 456, 567, 568, 750, 362, 466, 766, 382, 562, 456,
- 644, 645, 750, 304, 540, 542, 371, 578, 670, 373,
- 578, 670, 375, 578, 670, 377, 578, 670, 382, 632,
- 297, 68, 70, 74, 314, 316, 317, 321, 482, 548,
- 67, 312, 551, 739, 611, 312, 551, 624, 642, 642,
- 655, 551, 677, 679, 701, 759, 82, 90, 127, 136,
- 144, 175, 188, 190, 202, 211, 231, 250, 293, 297,
- 335, 350, 352, 430, 440, 454, 522, 553, 557, 582,
- 597, 633, 673, 678, 716, 737, 760, 537, 766, 552,
- 749, 297, 297, 9, 34, 47, 383, 137, 217, 297,
- 350, 443, 607, 737, 297, 456, 297, 297, 104, 378,
- 560, 297, 566, 567, 297, 297, 297, 297, 297, 297,
- 167, 378, 502, 630, 297, 643, 644, 221, 612, 256,
- 686, 297, 297, 350, 737, 138, 233, 297, 447, 637,
- 644, 297, 481, 637, 644, 758, 551, 729, 196, 297,
- 570, 610, 644, 110, 280, 297, 303, 350, 370, 372,
- 374, 376, 386, 393, 629, 650, 736, 737, 166, 500,
- 628, 159, 215, 239, 297, 335, 350, 352, 430, 454,
- 485, 600, 633, 648, 650, 737, 65, 234, 290, 297,
- 309, 350, 639, 737, 756, 64, 212, 297, 307, 335,
- 350, 352, 430, 454, 485, 599, 600, 633, 648, 650,
- 737, 297, 481, 637, 644, 243, 659, 353, 422, 426,
- 431, 441, 643, 644, 312, 464, 551, 523, 642, 312,
- 551, 565, 565, 583, 642, 464, 598, 634, 643, 644,
- 674, 765, 274, 726, 761, 297, 766, 339, 751, 297,
- 269, 444, 712, 378, 608, 379, 540, 542, 75, 273,
- 297, 322, 724, 503, 540, 542, 297, 322, 724, 613,
- 297, 264, 687, 702, 297, 643, 638, 766, 603, 734,
- 571, 26, 27, 40, 394, 297, 501, 297, 350, 650,
- 737, 486, 490, 764, 536, 552, 601, 740, 552, 649,
- 653, 98, 310, 366, 642, 516, 308, 695, 765, 659,
- 620, 297, 297, 307, 335, 350, 430, 454, 650, 737,
- 87, 113, 204, 216, 225, 251, 297, 347, 350, 402,
- 585, 605, 621, 659, 675, 737, 265, 442, 644, 704,
- 284, 455, 744, 750, 297, 350, 650, 737, 481, 554,
- 165, 498, 558, 297, 350, 650, 736, 737, 297, 335,
- 350, 352, 454, 553, 557, 599, 633, 737, 92, 297,
- 350, 352, 357, 430, 454, 485, 648, 650, 737, 297,
- 454, 673, 765, 727, 63, 168, 179, 297, 305, 350,
- 440, 504, 530, 737, 297, 122, 203, 413, 584, 713,
- 297, 413, 297, 413, 297, 170, 173, 323, 510, 517,
- 518, 510, 517, 518, 725, 503, 257, 297, 688, 703,
- 297, 297, 297, 643, 644, 313, 766, 297, 297, 610,
- 644, 297, 297, 623, 627, 297, 395, 297, 395, 297,
- 395, 766, 169, 174, 297, 350, 508, 520, 737, 637,
- 670, 297, 297, 620, 660, 620, 403, 620, 97, 364,
- 586, 224, 606, 618, 618, 622, 364, 676, 705, 297,
- 378, 502, 745, 214, 232, 272, 297, 350, 386, 604,
- 635, 650, 716, 718, 737, 297, 350, 352, 361, 430,
- 454, 553, 559, 650, 737, 499, 297, 350, 352, 430,
- 650, 737, 358, 430, 86, 143, 259, 297, 344, 453,
- 692, 306, 542, 505, 643, 644, 531, 643, 644, 414,
- 561, 567, 631, 637, 644, 413, 114, 404, 413, 584,
- 714, 511, 519, 297, 725, 297, 689, 702, 297, 718,
- 297, 367, 404, 509, 637, 643, 644, 521, 637, 643,
- 644, 297, 178, 528, 297, 650, 620, 297, 650, 365,
- 297, 650, 619, 297, 650, 297, 650, 297, 650, 121,
- 266, 297, 409, 706, 297, 744, 750, 740, 636, 643,
- 644, 248, 671, 719, 297, 553, 297, 345, 637, 643,
- 644, 297, 637, 643, 644, 693, 297, 350, 440, 504,
- 530, 737, 176, 506, 524, 644, 704, 378, 502, 532,
- 297, 322, 724, 670, 670, 297, 141, 297, 450, 517,
- 518, 297, 510, 517, 297, 255, 297, 684, 297, 297,
- 528, 297, 528, 529, 297, 348, 66, 297, 311, 620,
- 297, 620, 180, 344, 410, 533, 692, 195, 524, 569,
- 644, 704, 707, 729, 297, 303, 350, 370, 372, 374,
- 376, 386, 629, 650, 736, 737, 766, 249, 672, 720,
- 322, 346, 724, 404, 694, 517, 378, 502, 507, 297,
- 297, 297, 297, 750, 297, 450, 510, 517, 518, 297,
- 650, 620, 534, 637, 643, 644, 411, 524, 569, 644,
- 704, 297, 378, 502, 708, 297, 766, 766, 105, 380,
- 721, 297, 297, 322, 724, 497, 525, 297, 685, 718,
- 620, 510, 517, 518, 535, 378, 412, 502, 297, 297,
- 766, 381, 587, 722, 297, 297, 620, 297, 297, 297,
- 297, 620, 589, 723, 297, 297
-};
-
-#define yyerrok (yyerrstatus = 0)
-#define yyclearin (yychar = YYEMPTY)
-#define YYEMPTY (-2)
-#define YYEOF 0
-
-#define YYACCEPT goto yyacceptlab
-#define YYABORT goto yyabortlab
-#define YYERROR goto yyerrorlab
-
-
-/* Like YYERROR except do call yyerror. This remains here temporarily
- to ease the transition to the new meaning of YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. However,
- YYFAIL appears to be in use. Nevertheless, it is formally deprecated
- in Bison 2.4.2's NEWS entry, where a plan to phase it out is
- discussed. */
-
-#define YYFAIL goto yyerrlab
-#if defined YYFAIL
- /* This is here to suppress warnings from the GCC cpp's
- -Wunused-macros. Normally we don't worry about that warning, but
- some users do, and we want to make it easy for users to remove
- YYFAIL uses, which will produce warnings from Bison 2.5. */
-#endif
-
-#define YYRECOVERING() (!!yyerrstatus)
-
-#define YYBACKUP(Token, Value) \
-do \
- if (yychar == YYEMPTY && yylen == 1) \
- { \
- yychar = (Token); \
- yylval = (Value); \
- yytoken = YYTRANSLATE (yychar); \
- YYPOPSTACK (1); \
- goto yybackup; \
- } \
- else \
- { \
- yyerror (YY_("syntax error: cannot back up")); \
- YYERROR; \
- } \
-while (YYID (0))
-
-
-#define YYTERROR 1
-#define YYERRCODE 256
-
-
-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
- If N is 0, then set CURRENT to the empty location which ends
- the previous symbol: RHS[0] (always defined). */
-
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
-#ifndef YYLLOC_DEFAULT
-#define YYLLOC_DEFAULT(Current, Rhs, N) \
- do \
- if (YYID (N)) \
- { \
- (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
- (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
- (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
- (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
- } \
- else \
- { \
- (Current).first_line = (Current).last_line = \
- YYRHSLOC (Rhs, 0).last_line; \
- (Current).first_column = (Current).last_column = \
- YYRHSLOC (Rhs, 0).last_column; \
- } \
- while (YYID (0))
-#endif
-
-
-/* YY_LOCATION_PRINT -- Print the location on the stream.
- This macro was not mandated originally: define only if we know
- we won't break user code: when these are the locations we know. */
-
-#ifndef YY_LOCATION_PRINT
-#if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
-#define YY_LOCATION_PRINT(File, Loc) \
- fprintf (File, "%d.%d-%d.%d", \
- (Loc).first_line, (Loc).first_column, \
- (Loc).last_line, (Loc).last_column)
-#else
-#define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-#endif
-#endif
-
-
-/* YYLEX -- calling `yylex' with the right arguments. */
-
-#ifdef YYLEX_PARAM
-#define YYLEX yylex (YYLEX_PARAM)
-#else
-#define YYLEX yylex ()
-#endif
-
-/* Enable debugging if requested. */
-#if YYDEBUG
-
-#ifndef YYFPRINTF
-#include /* INFRINGES ON USER NAME SPACE */
-#define YYFPRINTF fprintf
-#endif
-
-#define YYDPRINTF(Args) \
-do { \
- if (yydebug) \
- YYFPRINTF Args; \
-} while (YYID (0))
-
-#define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
-do { \
- if (yydebug) \
- { \
- YYFPRINTF (stderr, "%s ", Title); \
- yy_symbol_print (stderr, \
- Type, Value); \
- YYFPRINTF (stderr, "\n"); \
- } \
-} while (YYID (0))
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT. |
-`--------------------------------*/
-
- /*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static void yy_symbol_value_print(FILE * yyoutput, int yytype, YYSTYPE const *const yyvaluep)
-#else
-static void yy_symbol_value_print(yyoutput, yytype, yyvaluep)
- FILE *yyoutput;
- int yytype;
- YYSTYPE const *const yyvaluep;
-#endif
-{
- if (!yyvaluep)
- return;
-#ifdef YYPRINT
- if (yytype < YYNTOKENS)
- YYPRINT(yyoutput, yytoknum[yytype], *yyvaluep);
-#else
- YYUSE(yyoutput);
-#endif
- switch (yytype) {
- default:
- break;
- }
-}
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT. |
-`--------------------------------*/
-
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static void yy_symbol_print(FILE * yyoutput, int yytype, YYSTYPE const *const yyvaluep)
-#else
-static void yy_symbol_print(yyoutput, yytype, yyvaluep)
- FILE *yyoutput;
- int yytype;
- YYSTYPE const *const yyvaluep;
-#endif
-{
- if (yytype < YYNTOKENS)
- YYFPRINTF(yyoutput, "token %s (", yytname[yytype]);
- else
- YYFPRINTF(yyoutput, "nterm %s (", yytname[yytype]);
-
- yy_symbol_value_print(yyoutput, yytype, yyvaluep);
- YYFPRINTF(yyoutput, ")");
-}
-
-/*------------------------------------------------------------------.
-| yy_stack_print -- Print the state stack from its BOTTOM up to its |
-| TOP (included). |
-`------------------------------------------------------------------*/
-
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static void yy_stack_print(yytype_int16 * yybottom, yytype_int16 * yytop)
-#else
-static void yy_stack_print(yybottom, yytop)
- yytype_int16 *yybottom;
- yytype_int16 *yytop;
-#endif
-{
- YYFPRINTF(stderr, "Stack now");
- for (; yybottom <= yytop; yybottom++) {
- int yybot = *yybottom;
- YYFPRINTF(stderr, " %d", yybot);
- }
- YYFPRINTF(stderr, "\n");
-}
-
-#define YY_STACK_PRINT(Bottom, Top) \
-do { \
- if (yydebug) \
- yy_stack_print ((Bottom), (Top)); \
-} while (YYID (0))
-
-
-/*------------------------------------------------.
-| Report that the YYRULE is going to be reduced. |
-`------------------------------------------------*/
-
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static void yy_reduce_print(YYSTYPE * yyvsp, int yyrule)
-#else
-static void yy_reduce_print(yyvsp, yyrule)
- YYSTYPE *yyvsp;
- int yyrule;
-#endif
-{
- int yynrhs = yyr2[yyrule];
- int yyi;
- unsigned long int yylno = yyrline[yyrule];
- YYFPRINTF(stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno);
- /* The symbols being reduced. */
- for (yyi = 0; yyi < yynrhs; yyi++) {
- YYFPRINTF(stderr, " $%d = ", yyi + 1);
- yy_symbol_print(stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)])
- );
- YYFPRINTF(stderr, "\n");
- }
-}
-
-#define YY_REDUCE_PRINT(Rule) \
-do { \
- if (yydebug) \
- yy_reduce_print (yyvsp, Rule); \
-} while (YYID (0))
-
-/* Nonzero means print parse trace. It is left uninitialized so that
- multiple parsers can coexist. */
-int yydebug;
-#else /* !YYDEBUG */
-#define YYDPRINTF(Args)
-#define YY_SYMBOL_PRINT(Title, Type, Value, Location)
-#define YY_STACK_PRINT(Bottom, Top)
-#define YY_REDUCE_PRINT(Rule)
-#endif /* !YYDEBUG */
-
-
-/* YYINITDEPTH -- initial size of the parser's stacks. */
-#ifndef YYINITDEPTH
-#define YYINITDEPTH 200
-#endif
-
-/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
- if the built-in stack extension method is used).
-
- Do not make this value too large; the results are undefined if
- YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
- evaluated with infinite-precision integer arithmetic. */
-
-#ifndef YYMAXDEPTH
-#define YYMAXDEPTH 10000
-#endif
-
-
-
-#if YYERROR_VERBOSE
-
-#ifndef yystrlen
-#if defined __GLIBC__ && defined _STRING_H
-#define yystrlen strlen
-#else
-/* Return the length of YYSTR. */
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static YYSIZE_T yystrlen(const char *yystr)
-#else
-static YYSIZE_T yystrlen(yystr)
- const char *yystr;
-#endif
-{
- YYSIZE_T yylen;
- for (yylen = 0; yystr[yylen]; yylen++)
- continue;
- return yylen;
-}
-#endif
-#endif
-
-#ifndef yystpcpy
-#if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-#define yystpcpy stpcpy
-#else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
- YYDEST. */
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static char *yystpcpy(char *yydest, const char *yysrc)
-#else
-static char *yystpcpy(yydest, yysrc)
- char *yydest;
- const char *yysrc;
-#endif
-{
- char *yyd = yydest;
- const char *yys = yysrc;
-
- while ((*yyd++ = *yys++) != '\0')
- continue;
-
- return yyd - 1;
-}
-#endif
-#endif
-
-#ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
- quotes and backslashes, so that it's suitable for yyerror. The
- heuristic is that double-quoting is unnecessary unless the string
- contains an apostrophe, a comma, or backslash (other than
- backslash-backslash). YYSTR is taken from yytname. If YYRES is
- null, do not copy; instead, return the length of what the result
- would have been. */
-static YYSIZE_T yytnamerr(char *yyres, const char *yystr)
-{
- if (*yystr == '"') {
- YYSIZE_T yyn = 0;
- char const *yyp = yystr;
-
- for (;;)
- switch (*++yyp) {
- case '\'':
- case ',':
- goto do_not_strip_quotes;
-
- case '\\':
- if (*++yyp != '\\')
- goto do_not_strip_quotes;
- /* Fall through. */
- default:
- if (yyres)
- yyres[yyn] = *yyp;
- yyn++;
- break;
-
- case '"':
- if (yyres)
- yyres[yyn] = '\0';
- return yyn;
- }
- do_not_strip_quotes:;
- }
-
- if (!yyres)
- return yystrlen(yystr);
-
- return yystpcpy(yyres, yystr) - yyres;
-}
-#endif
-
-/* Copy into YYRESULT an error message about the unexpected token
- YYCHAR while in state YYSTATE. Return the number of bytes copied,
- including the terminating null byte. If YYRESULT is null, do not
- copy anything; just return the number of bytes that would be
- copied. As a special case, return 0 if an ordinary "syntax error"
- message will do. Return YYSIZE_MAXIMUM if overflow occurs during
- size calculation. */
-static YYSIZE_T yysyntax_error(char *yyresult, int yystate, int yychar)
-{
- int yyn = yypact[yystate];
-
- if (!(YYPACT_NINF < yyn && yyn <= YYLAST))
- return 0;
- else {
- int yytype = YYTRANSLATE(yychar);
- YYSIZE_T yysize0 = yytnamerr(0, yytname[yytype]);
- YYSIZE_T yysize = yysize0;
- YYSIZE_T yysize1;
- int yysize_overflow = 0;
- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
- int yyx;
-
-#if 0
- /* This is so xgettext sees the translatable formats that are
- constructed on the fly. */
- YY_("syntax error, unexpected %s");
- YY_("syntax error, unexpected %s, expecting %s");
- YY_("syntax error, unexpected %s, expecting %s or %s");
- YY_("syntax error, unexpected %s, expecting %s or %s or %s");
- YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-#endif
- char *yyfmt;
- char const *yyf;
- static char const yyunexpected[] = "syntax error, unexpected %s";
- static char const yyexpecting[] = ", expecting %s";
- static char const yyor[] = " or %s";
- char yyformat[sizeof yyunexpected + sizeof yyexpecting - 1 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
- * (sizeof yyor - 1))];
- char const *yyprefix = yyexpecting;
-
- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. */
- int yyxbegin = yyn < 0 ? -yyn : 0;
-
- /* Stay within bounds of both yycheck and yytname. */
- int yychecklim = YYLAST - yyn + 1;
- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
- int yycount = 1;
-
- yyarg[0] = yytname[yytype];
- yyfmt = yystpcpy(yyformat, yyunexpected);
-
- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) {
- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) {
- yycount = 1;
- yysize = yysize0;
- yyformat[sizeof yyunexpected - 1] = '\0';
- break;
- }
- yyarg[yycount++] = yytname[yyx];
- yysize1 = yysize + yytnamerr(0, yytname[yyx]);
- yysize_overflow |= (yysize1 < yysize);
- yysize = yysize1;
- yyfmt = yystpcpy(yyfmt, yyprefix);
- yyprefix = yyor;
- }
-
- yyf = YY_(yyformat);
- yysize1 = yysize + yystrlen(yyf);
- yysize_overflow |= (yysize1 < yysize);
- yysize = yysize1;
-
- if (yysize_overflow)
- return YYSIZE_MAXIMUM;
-
- if (yyresult) {
- /* Avoid sprintf, as that infringes on the user's name space.
- Don't have undefined behavior even if the translation
- produced a string with the wrong number of "%s"s. */
- char *yyp = yyresult;
- int yyi = 0;
- while ((*yyp = *yyf) != '\0') {
- if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) {
- yyp += yytnamerr(yyp, yyarg[yyi++]);
- yyf += 2;
- }
- else {
- yyp++;
- yyf++;
- }
- }
- }
- return yysize;
- }
-}
-#endif /* YYERROR_VERBOSE */
-
-
-/*-----------------------------------------------.
-| Release the memory associated to this symbol. |
-`-----------------------------------------------*/
-
- /*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static void yydestruct(const char *yymsg, int yytype, YYSTYPE * yyvaluep)
-#else
-static void yydestruct(yymsg, yytype, yyvaluep)
- const char *yymsg;
- int yytype;
- YYSTYPE *yyvaluep;
-#endif
-{
- YYUSE(yyvaluep);
-
- if (!yymsg)
- yymsg = "Deleting";
- YY_SYMBOL_PRINT(yymsg, yytype, yyvaluep, yylocationp);
-
- switch (yytype) {
-
- default:
- break;
- }
-}
-
-/* Prevent warnings from -Wmissing-prototypes. */
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse(void *YYPARSE_PARAM);
-#else
-int yyparse();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse(void);
-#else
-int yyparse();
-#endif
-#endif /* ! YYPARSE_PARAM */
-
-
-/* The lookahead symbol. */
-int yychar;
-
-/* The semantic value of the lookahead symbol. */
-YYSTYPE yylval;
-
-/* Number of syntax errors so far. */
-int yynerrs;
-
-
-
-/*-------------------------.
-| yyparse or yypush_parse. |
-`-------------------------*/
-
-#ifdef YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-int yyparse(void *YYPARSE_PARAM)
-#else
-int yyparse(YYPARSE_PARAM)
- void *YYPARSE_PARAM;
-#endif
-#else /* ! YYPARSE_PARAM */
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-int yyparse(void)
-#else
-int yyparse()
-#endif
-#endif
-{
-
-
- int yystate;
- /* Number of tokens to shift before error messages enabled. */
- int yyerrstatus;
-
- /* The stacks and their tools:
- `yyss': related to states.
- `yyvs': related to semantic values.
-
- Refer to the stacks thru separate pointers, to allow yyoverflow
- to reallocate them elsewhere. */
-
- /* The state stack. */
- yytype_int16 yyssa[YYINITDEPTH];
- yytype_int16 *yyss;
- yytype_int16 *yyssp;
-
- /* The semantic value stack. */
- YYSTYPE yyvsa[YYINITDEPTH];
- YYSTYPE *yyvs;
- YYSTYPE *yyvsp;
-
- YYSIZE_T yystacksize;
-
- int yyn;
- int yyresult;
- /* Lookahead token as an internal (translated) token number. */
- int yytoken;
- /* The variables used to return semantic value and location from the
- action routines. */
- YYSTYPE yyval;
-
-#if YYERROR_VERBOSE
- /* Buffer for error messages, and its allocated size. */
- char yymsgbuf[128];
- char *yymsg = yymsgbuf;
- YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
-
-#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
-
- /* The number of symbols on the RHS of the reduced rule.
- Keep to zero when no symbol should be popped. */
- int yylen = 0;
-
- yytoken = 0;
- yyss = yyssa;
- yyvs = yyvsa;
- yystacksize = YYINITDEPTH;
-
- YYDPRINTF((stderr, "Starting parse\n"));
-
- yystate = 0;
- yyerrstatus = 0;
- yynerrs = 0;
- yychar = YYEMPTY; /* Cause a token to be read. */
-
- /* Initialize stack pointers.
- Waste one element of value and location stack
- so that they stay on the same level as the state stack.
- The wasted elements are never initialized. */
- yyssp = yyss;
- yyvsp = yyvs;
-
- goto yysetstate;
-
-/*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate. |
-`------------------------------------------------------------*/
-yynewstate:
- /* In all cases, when you get here, the value and location stacks
- have just been pushed. So pushing a state here evens the stacks. */
- yyssp++;
-
-yysetstate:
- *yyssp = yystate;
-
- if (yyss + yystacksize - 1 <= yyssp) {
- /* Get the current used size of the three stacks, in elements. */
- YYSIZE_T yysize = yyssp - yyss + 1;
-
-#ifdef yyoverflow
- {
- /* Give user a chance to reallocate the stack. Use copies of
- these so that the &'s don't force the real ones into
- memory. */
- YYSTYPE *yyvs1 = yyvs;
- yytype_int16 *yyss1 = yyss;
-
- /* Each stack pointer address is followed by the size of the
- data in use in that stack, in bytes. This used to be a
- conditional around just the two extra args, but that might
- be undefined if yyoverflow is a macro. */
- yyoverflow(YY_("memory exhausted"), &yyss1, yysize * sizeof(*yyssp), &yyvs1, yysize * sizeof(*yyvsp), &yystacksize);
-
- yyss = yyss1;
- yyvs = yyvs1;
- }
-#else /* no yyoverflow */
-#ifndef YYSTACK_RELOCATE
- goto yyexhaustedlab;
-#else
- /* Extend the stack our own way. */
- if (YYMAXDEPTH <= yystacksize)
- goto yyexhaustedlab;
- yystacksize *= 2;
- if (YYMAXDEPTH < yystacksize)
- yystacksize = YYMAXDEPTH;
-
- {
- yytype_int16 *yyss1 = yyss;
- union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC(YYSTACK_BYTES(yystacksize));
- if (!yyptr)
- goto yyexhaustedlab;
- YYSTACK_RELOCATE(yyss_alloc, yyss);
- YYSTACK_RELOCATE(yyvs_alloc, yyvs);
-#undef YYSTACK_RELOCATE
- if (yyss1 != yyssa)
- YYSTACK_FREE(yyss1);
- }
-#endif
-#endif /* no yyoverflow */
-
- yyssp = yyss + yysize - 1;
- yyvsp = yyvs + yysize - 1;
-
- YYDPRINTF((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize));
-
- if (yyss + yystacksize - 1 <= yyssp)
- YYABORT;
- }
-
- YYDPRINTF((stderr, "Entering state %d\n", yystate));
-
- if (yystate == YYFINAL)
- YYACCEPT;
-
- goto yybackup;
-
-/*-----------.
-| yybackup. |
-`-----------*/
-yybackup:
-
- /* Do appropriate processing given the current state. Read a
- lookahead token if we need one and don't already have one. */
-
- /* First try to decide what to do without reference to lookahead token. */
- yyn = yypact[yystate];
- if (yyn == YYPACT_NINF)
- goto yydefault;
-
- /* Not known => get a lookahead token if don't already have one. */
-
- /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
- if (yychar == YYEMPTY) {
- YYDPRINTF((stderr, "Reading a token: "));
- yychar = YYLEX;
- }
-
- if (yychar <= YYEOF) {
- yychar = yytoken = YYEOF;
- YYDPRINTF((stderr, "Now at end of input.\n"));
- }
- else {
- yytoken = YYTRANSLATE(yychar);
- YY_SYMBOL_PRINT("Next token is", yytoken, &yylval, &yylloc);
- }
-
- /* If the proper action on seeing token YYTOKEN is to reduce or to
- detect an error, take that action. */
- yyn += yytoken;
- if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
- goto yydefault;
- yyn = yytable[yyn];
- if (yyn <= 0) {
- if (yyn == 0 || yyn == YYTABLE_NINF)
- goto yyerrlab;
- yyn = -yyn;
- goto yyreduce;
- }
-
- /* Count tokens shifted since error; after three, turn off error
- status. */
- if (yyerrstatus)
- yyerrstatus--;
-
- /* Shift the lookahead token. */
- YY_SYMBOL_PRINT("Shifting", yytoken, &yylval, &yylloc);
-
- /* Discard the shifted token. */
- yychar = YYEMPTY;
-
- yystate = yyn;
- *++yyvsp = yylval;
-
- goto yynewstate;
-
-
-/*-----------------------------------------------------------.
-| yydefault -- do the default action for the current state. |
-`-----------------------------------------------------------*/
-yydefault:
- yyn = yydefact[yystate];
- if (yyn == 0)
- goto yyerrlab;
- goto yyreduce;
-
-
-/*-----------------------------.
-| yyreduce -- Do a reduction. |
-`-----------------------------*/
-yyreduce:
- /* yyn is the number of a rule to reduce with. */
- yylen = yyr2[yyn];
-
- /* If YYLEN is nonzero, implement the default value of the action:
- `$$ = $1'.
-
- Otherwise, the following line sets YYVAL to garbage.
- This behavior is undocumented and Bison
- users should not rely upon it. Assigning to YYVAL
- unconditionally makes the parser a bit smaller, and it avoids a
- GCC warning that YYVAL may be used uninitialized. */
- yyval = yyvsp[1 - yylen];
-
-
- YY_REDUCE_PRINT(yyn);
- switch (yyn) {
- case 2:
-
-/* Line 1464 of yacc.c */
-#line 505 "edif.y"
- {
- PopC();
- }
- break;
-
- case 11:
-
-/* Line 1464 of yacc.c */
-#line 520 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 12:
-
-/* Line 1464 of yacc.c */
-#line 523 "edif.y"
- {
- free((yyvsp[(2) - (3)].s));
- }
- break;
-
- case 13:
-
-/* Line 1464 of yacc.c */
-#line 527 "edif.y"
- {
- free((yyvsp[(2) - (5)].s));
- free((yyvsp[(3) - (5)].s));
- free((yyvsp[(4) - (5)].s));
- }
- break;
-
- case 25:
-
-/* Line 1464 of yacc.c */
-#line 551 "edif.y"
- {
- free((yyvsp[(1) - (1)].s));
- }
- break;
-
- case 34:
-
-/* Line 1464 of yacc.c */
-#line 568 "edif.y"
- {
- str_pair_free((yyvsp[(2) - (5)].ps));
- free((yyvsp[(3) - (5)].s));
- }
- break;
-
- case 36:
-
-/* Line 1464 of yacc.c */
-#line 572 "edif.y"
- {
- free((yyvsp[(1) - (1)].s));
- }
- break;
-
- case 47:
-
-/* Line 1464 of yacc.c */
-#line 597 "edif.y"
- {
- free((yyvsp[(2) - (3)].s));
- }
- break;
-
- case 69:
-
-/* Line 1464 of yacc.c */
-#line 645 "edif.y"
- {
- free((yyvsp[(2) - (5)].s));
- free((yyvsp[(3) - (5)].s));
- }
- break;
-
- case 70:
-
-/* Line 1464 of yacc.c */
-#line 648 "edif.y"
- {
- free((yyvsp[(2) - (3)].s));
- }
- break;
-
- case 80:
-
-/* Line 1464 of yacc.c */
-#line 666 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 84:
-
-/* Line 1464 of yacc.c */
-#line 676 "edif.y"
- {
- free((yyvsp[(1) - (1)].s));
- }
- break;
-
- case 91:
-
-/* Line 1464 of yacc.c */
-#line 691 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 102:
-
-/* Line 1464 of yacc.c */
-#line 714 "edif.y"
- {
- free((yyvsp[(2) - (2)].s));
- }
- break;
-
- case 140:
-
-/* Line 1464 of yacc.c */
-#line 774 "edif.y"
- {
- free((yyvsp[(1) - (1)].s));
- }
- break;
-
- case 147:
-
-/* Line 1464 of yacc.c */
-#line 789 "edif.y"
- {
- free((yyvsp[(2) - (4)].s));
- }
- break;
-
- case 150:
-
-/* Line 1464 of yacc.c */
-#line 796 "edif.y"
- {
- free((yyvsp[(2) - (4)].s));
- }
- break;
-
- case 182:
-
-/* Line 1464 of yacc.c */
-#line 866 "edif.y"
- {
- free((yyvsp[(1) - (1)].s));
- }
- break;
-
- case 184:
-
-/* Line 1464 of yacc.c */
-#line 870 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 240:
-
-/* Line 1464 of yacc.c */
-#line 974 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 247:
-
-/* Line 1464 of yacc.c */
-#line 987 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 278:
-
-/* Line 1464 of yacc.c */
-#line 1034 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 279:
-
-/* Line 1464 of yacc.c */
-#line 1037 "edif.y"
- {
- free((yyvsp[(1) - (1)].s));
- }
- break;
-
- case 333:
-
-/* Line 1464 of yacc.c */
-#line 1123 "edif.y"
- {
- free((yyvsp[(2) - (5)].s));
- free((yyvsp[(3) - (5)].s));
- }
- break;
-
- case 336:
-
-/* Line 1464 of yacc.c */
-#line 1130 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 337:
-
-/* Line 1464 of yacc.c */
-#line 1133 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 344:
-
-/* Line 1464 of yacc.c */
-#line 1146 "edif.y"
- {
- free((yyvsp[(1) - (3)].s));
- }
- break;
-
- case 346:
-
-/* Line 1464 of yacc.c */
-#line 1150 "edif.y"
- {
- free((yyvsp[(2) - (2)].s));
- }
- break;
-
- case 347:
-
-/* Line 1464 of yacc.c */
-#line 1151 "edif.y"
- {
- free((yyvsp[(2) - (2)].s));
- }
- break;
-
- case 348:
-
-/* Line 1464 of yacc.c */
-#line 1152 "edif.y"
- {
- free((yyvsp[(2) - (2)].s));
- }
- break;
-
- case 369:
-
-/* Line 1464 of yacc.c */
-#line 1193 "edif.y"
- {
- (yyval.s) = (yyvsp[(2) - (4)].s);
- }
- break;
-
- case 371:
-
-/* Line 1464 of yacc.c */
-#line 1197 "edif.y"
- {
- free((yyvsp[(1) - (1)].s));
- }
- break;
-
- case 374:
-
-/* Line 1464 of yacc.c */
-#line 1204 "edif.y"
- {
- free((yyvsp[(1) - (1)].s));
- }
- break;
-
- case 381:
-
-/* Line 1464 of yacc.c */
-#line 1215 "edif.y"
- {
- free((yyvsp[(2) - (2)].s));
- }
- break;
-
- case 384:
-
-/* Line 1464 of yacc.c */
-#line 1222 "edif.y"
- {
- free((yyvsp[(2) - (2)].s));
- }
- break;
-
- case 388:
-
-/* Line 1464 of yacc.c */
-#line 1228 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 390:
-
-/* Line 1464 of yacc.c */
-#line 1232 "edif.y"
- {
- (yyval.s) = (yyvsp[(1) - (1)].s);
- }
- break;
-
- case 393:
-
-/* Line 1464 of yacc.c */
-#line 1239 "edif.y"
- {
- free((yyvsp[(1) - (1)].s));
- }
- break;
-
- case 397:
-
-/* Line 1464 of yacc.c */
-#line 1247 "edif.y"
- {
- free((yyvsp[(2) - (2)].s));
- }
- break;
-
- case 408:
-
-/* Line 1464 of yacc.c */
-#line 1262 "edif.y"
- {
- pair_list_free((yyvsp[(2) - (2)].pl));
- }
- break;
-
- case 437:
-
-/* Line 1464 of yacc.c */
-#line 1312 "edif.y"
- {
- (yyval.pl) = new_pair_list((yyvsp[(2) - (3)].ps));
- }
- break;
-
- case 438:
-
-/* Line 1464 of yacc.c */
-#line 1315 "edif.y"
- {
- (yyval.ps) = NULL;
- }
- break;
-
- case 439:
-
-/* Line 1464 of yacc.c */
-#line 1316 "edif.y"
- {
- (yyvsp[(2) - (2)].ps)->next = (yyvsp[(1) - (2)].ps);
- (yyval.ps) = (yyvsp[(2) - (2)].ps);
- }
- break;
-
- case 455:
-
-/* Line 1464 of yacc.c */
-#line 1342 "edif.y"
- {
- free((yyvsp[(2) - (3)].s));
- }
- break;
-
- case 459:
-
-/* Line 1464 of yacc.c */
-#line 1352 "edif.y"
- {
- free((yyvsp[(1) - (1)].s));
- }
- break;
-
- case 460:
-
-/* Line 1464 of yacc.c */
-#line 1355 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 462:
-
-/* Line 1464 of yacc.c */
-#line 1361 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 463:
-
-/* Line 1464 of yacc.c */
-#line 1364 "edif.y"
- {
- free((yyvsp[(1) - (1)].s));
- }
- break;
-
- case 483:
-
-/* Line 1464 of yacc.c */
-#line 1406 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 484:
-
-/* Line 1464 of yacc.c */
-#line 1409 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 492:
-
-/* Line 1464 of yacc.c */
-#line 1423 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 506:
-
-/* Line 1464 of yacc.c */
-#line 1451 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 507:
-
-/* Line 1464 of yacc.c */
-#line 1454 "edif.y"
- {
- free((yyvsp[(1) - (1)].s));
- }
- break;
-
- case 514:
-
-/* Line 1464 of yacc.c */
-#line 1469 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 549:
-
-/* Line 1464 of yacc.c */
-#line 1524 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 555:
-
-/* Line 1464 of yacc.c */
-#line 1536 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 560:
-
-/* Line 1464 of yacc.c */
-#line 1545 "edif.y"
- {
- free((yyvsp[(2) - (4)].s));
- }
- break;
-
- case 561:
-
-/* Line 1464 of yacc.c */
-#line 1548 "edif.y"
- {
- free((yyvsp[(1) - (1)].s));
- }
- break;
-
- case 562:
-
-/* Line 1464 of yacc.c */
-#line 1549 "edif.y"
- {
- free((yyvsp[(2) - (2)].s));
- }
- break;
-
- case 582:
-
-/* Line 1464 of yacc.c */
-#line 1591 "edif.y"
- {
- str_pair_free((yyvsp[(2) - (2)].ps));
- }
- break;
-
- case 585:
-
-/* Line 1464 of yacc.c */
-#line 1594 "edif.y"
- {
- pair_list_free((yyvsp[(2) - (2)].pl));
- }
- break;
-
- case 586:
-
-/* Line 1464 of yacc.c */
-#line 1597 "edif.y"
- {
- (yyval.s) = (yyvsp[(2) - (3)].s);
- }
- break;
-
- case 587:
-
-/* Line 1464 of yacc.c */
-#line 1600 "edif.y"
- {
- (yyval.s) = (yyvsp[(1) - (1)].s);
- }
- break;
-
- case 589:
-
-/* Line 1464 of yacc.c */
-#line 1604 "edif.y"
- {
- (yyval.ps) = new_str_pair((yyvsp[(1) - (1)].s), NULL);
- }
- break;
-
- case 590:
-
-/* Line 1464 of yacc.c */
-#line 1605 "edif.y"
- {
- (yyval.ps) = new_str_pair((yyvsp[(1) - (1)].s), NULL);
- }
- break;
-
- case 591:
-
-/* Line 1464 of yacc.c */
-#line 1606 "edif.y"
- {
- (yyval.ps) = (yyvsp[(1) - (1)].ps);
- }
- break;
-
- case 592:
-
-/* Line 1464 of yacc.c */
-#line 1609 "edif.y"
- {
- (yyval.s) = (yyvsp[(1) - (1)].s);
- }
- break;
-
- case 593:
-
-/* Line 1464 of yacc.c */
-#line 1610 "edif.y"
- {
- (yyval.s) = (yyvsp[(1) - (1)].s);
- }
- break;
-
- case 594:
-
-/* Line 1464 of yacc.c */
-#line 1613 "edif.y"
- {
- define_pcb_net((yyvsp[(2) - (4)].ps), (yyvsp[(3) - (4)].pl));
- }
- break;
-
- case 595:
-
-/* Line 1464 of yacc.c */
-#line 1616 "edif.y"
- {
- (yyval.pl) = (yyvsp[(1) - (1)].pl);
- }
- break;
-
- case 611:
-
-/* Line 1464 of yacc.c */
-#line 1638 "edif.y"
- {
- str_pair_free((yyvsp[(2) - (4)].ps));
- }
- break;
-
- case 632:
-
-/* Line 1464 of yacc.c */
-#line 1675 "edif.y"
- {
- (yyval.ps) = (yyvsp[(1) - (1)].ps);
- }
- break;
-
- case 633:
-
-/* Line 1464 of yacc.c */
-#line 1676 "edif.y"
- {
- (yyval.ps) = NULL;
- }
- break;
-
- case 634:
-
-/* Line 1464 of yacc.c */
-#line 1680 "edif.y"
- {
- free((yyvsp[(1) - (1)].s));
- }
- break;
-
- case 639:
-
-/* Line 1464 of yacc.c */
-#line 1689 "edif.y"
- {
- free((yyvsp[(1) - (1)].s));
- }
- break;
-
- case 644:
-
-/* Line 1464 of yacc.c */
-#line 1700 "edif.y"
- {
- str_pair_free((yyvsp[(2) - (2)].ps));
- }
- break;
-
- case 698:
-
-/* Line 1464 of yacc.c */
-#line 1802 "edif.y"
- {
- free((yyvsp[(2) - (5)].s));
- }
- break;
-
- case 701:
-
-/* Line 1464 of yacc.c */
-#line 1809 "edif.y"
- {
- free((yyvsp[(2) - (3)].s));
- }
- break;
-
- case 727:
-
-/* Line 1464 of yacc.c */
-#line 1861 "edif.y"
- {
- free((yyvsp[(2) - (3)].s));
- }
- break;
-
- case 730:
-
-/* Line 1464 of yacc.c */
-#line 1868 "edif.y"
- {
- str_pair_free((yyvsp[(2) - (2)].ps));
- }
- break;
-
- case 747:
-
-/* Line 1464 of yacc.c */
-#line 1903 "edif.y"
- {
- free((yyvsp[(2) - (4)].s));
- free((yyvsp[(3) - (4)].s));
- }
- break;
-
- case 766:
-
-/* Line 1464 of yacc.c */
-#line 1934 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 789:
-
-/* Line 1464 of yacc.c */
-#line 1969 "edif.y"
- {
- str_pair_free((yyvsp[(2) - (2)].ps));
- }
- break;
-
- case 791:
-
-/* Line 1464 of yacc.c */
-#line 1975 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 803:
-
-/* Line 1464 of yacc.c */
-#line 1991 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 818:
-
-/* Line 1464 of yacc.c */
-#line 2010 "edif.y"
- {
- str_pair_free((yyvsp[(2) - (2)].ps));
- }
- break;
-
- case 823:
-
-/* Line 1464 of yacc.c */
-#line 2021 "edif.y"
- {
- str_pair_free((yyvsp[(2) - (2)].ps));
- }
- break;
-
- case 827:
-
-/* Line 1464 of yacc.c */
-#line 2027 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 829:
-
-/* Line 1464 of yacc.c */
-#line 2031 "edif.y"
- {
- (yyval.s) = (yyvsp[(1) - (1)].s);
- }
- break;
-
- case 831:
-
-/* Line 1464 of yacc.c */
-#line 2036 "edif.y"
- {
- if ((yyvsp[(3) - (4)].ps)) {
- (yyval.ps) = new_str_pair((yyvsp[(3) - (4)].ps)->str1, (yyvsp[(2) - (4)].s));
- free((yyvsp[(3) - (4)].ps));
- }
- else {
- /* handle port with no instance by passing up the chain */
- (yyval.ps) = new_str_pair(NULL, (yyvsp[(2) - (4)].s));
- }
- }
- break;
-
- case 832:
-
-/* Line 1464 of yacc.c */
-#line 2050 "edif.y"
- {
- (yyval.ps) = NULL;
- }
- break;
-
- case 833:
-
-/* Line 1464 of yacc.c */
-#line 2051 "edif.y"
- {
- (yyval.ps) = (yyvsp[(1) - (1)].ps);
- }
- break;
-
- case 834:
-
-/* Line 1464 of yacc.c */
-#line 2052 "edif.y"
- {
- (yyval.ps) = new_str_pair((yyvsp[(1) - (1)].s), NULL);
- }
- break;
-
- case 835:
-
-/* Line 1464 of yacc.c */
-#line 2053 "edif.y"
- {
- (yyval.ps) = NULL;
- }
- break;
-
- case 848:
-
-/* Line 1464 of yacc.c */
-#line 2080 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 849:
-
-/* Line 1464 of yacc.c */
-#line 2083 "edif.y"
- {
- free((yyvsp[(1) - (1)].s));
- }
- break;
-
- case 881:
-
-/* Line 1464 of yacc.c */
-#line 2136 "edif.y"
- {
- (yyval.ps) = new_str_pair((yyvsp[(2) - (4)].s), (yyvsp[(3) - (4)].s));
- }
- break;
-
- case 882:
-
-/* Line 1464 of yacc.c */
-#line 2139 "edif.y"
- {
- (yyval.s) = (yyvsp[(1) - (1)].s);
- }
- break;
-
- case 883:
-
-/* Line 1464 of yacc.c */
-#line 2140 "edif.y"
- {
- (yyval.s) = (yyvsp[(1) - (1)].s);
- }
- break;
-
- case 884:
-
-/* Line 1464 of yacc.c */
-#line 2143 "edif.y"
- {
- (yyval.s) = (yyvsp[(1) - (1)].s);
- }
- break;
-
- case 885:
-
-/* Line 1464 of yacc.c */
-#line 2144 "edif.y"
- {
- (yyval.s) = NULL;
- }
- break;
-
- case 889:
-
-/* Line 1464 of yacc.c */
-#line 2154 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 891:
-
-/* Line 1464 of yacc.c */
-#line 2160 "edif.y"
- {
- free((yyvsp[(1) - (1)].s));
- }
- break;
-
- case 892:
-
-/* Line 1464 of yacc.c */
-#line 2161 "edif.y"
- {
- free((yyvsp[(2) - (4)].s));
- free((yyvsp[(3) - (4)].s));
- }
- break;
-
- case 893:
-
-/* Line 1464 of yacc.c */
-#line 2164 "edif.y"
- {
- free((yyvsp[(2) - (4)].s));
- free((yyvsp[(3) - (4)].s));
- }
- break;
-
- case 894:
-
-/* Line 1464 of yacc.c */
-#line 2167 "edif.y"
- {
- free((yyvsp[(2) - (4)].s));
- free((yyvsp[(3) - (4)].s));
- }
- break;
-
- case 896:
-
-/* Line 1464 of yacc.c */
-#line 2173 "edif.y"
- {
- free((yyvsp[(1) - (1)].s));
- }
- break;
-
- case 898:
-
-/* Line 1464 of yacc.c */
-#line 2175 "edif.y"
- {
- free((yyvsp[(2) - (2)].s));
- }
- break;
-
- case 903:
-
-/* Line 1464 of yacc.c */
-#line 2186 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 935:
-
-/* Line 1464 of yacc.c */
-#line 2250 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 943:
-
-/* Line 1464 of yacc.c */
-#line 2266 "edif.y"
- {
- free((yyvsp[(2) - (2)].s));
- }
- break;
-
- case 946:
-
-/* Line 1464 of yacc.c */
-#line 2271 "edif.y"
- {
- free((yyvsp[(1) - (1)].s));
- }
- break;
-
- case 973:
-
-/* Line 1464 of yacc.c */
-#line 2316 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 987:
-
-/* Line 1464 of yacc.c */
-#line 2338 "edif.y"
- {
- free((yyvsp[(2) - (3)].s));
- }
- break;
-
- case 994:
-
-/* Line 1464 of yacc.c */
-#line 2354 "edif.y"
- {
- 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));
- }
- break;
-
- case 1054:
-
-/* Line 1464 of yacc.c */
-#line 2461 "edif.y"
- {
- free((yyvsp[(1) - (1)].s));
- }
- break;
-
- case 1055:
-
-/* Line 1464 of yacc.c */
-#line 2462 "edif.y"
- {
- free((yyvsp[(2) - (2)].s));
- }
- break;
-
- case 1056:
-
-/* Line 1464 of yacc.c */
-#line 2463 "edif.y"
- {
- free((yyvsp[(2) - (2)].s));
- }
- break;
-
- case 1057:
-
-/* Line 1464 of yacc.c */
-#line 2464 "edif.y"
- {
- free((yyvsp[(2) - (2)].s));
- }
- break;
-
- case 1059:
-
-/* Line 1464 of yacc.c */
-#line 2468 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 1061:
-
-/* Line 1464 of yacc.c */
-#line 2472 "edif.y"
- {
- free((yyvsp[(1) - (1)].s));
- }
- break;
-
- case 1063:
-
-/* Line 1464 of yacc.c */
-#line 2476 "edif.y"
- {
- free((yyvsp[(2) - (3)].s));
- }
- break;
-
- case 1085:
-
-/* Line 1464 of yacc.c */
-#line 2512 "edif.y"
- {
- str_pair_free((yyvsp[(1) - (1)].ps));
- }
- break;
-
- case 1086:
-
-/* Line 1464 of yacc.c */
-#line 2515 "edif.y"
- {
- free((yyvsp[(1) - (1)].s));
- }
- break;
-
- case 1107:
-
-/* Line 1464 of yacc.c */
-#line 2556 "edif.y"
- {
- str_pair_free((yyvsp[(2) - (2)].ps));
- }
- break;
-
- case 1109:
-
-/* Line 1464 of yacc.c */
-#line 2558 "edif.y"
- {
- pair_list_free((yyvsp[(2) - (2)].pl));
- }
- break;
-
- case 1126:
-
-/* Line 1464 of yacc.c */
-#line 2585 "edif.y"
- {
- (yyval.s) = (yyvsp[(1) - (1)].s);
- }
- break;
-
- case 1127:
-
-/* Line 1464 of yacc.c */
-#line 2588 "edif.y"
- {
- (yyval.s) = (yyvsp[(1) - (1)].s);
- }
- break;
-
- case 1128:
-
-/* Line 1464 of yacc.c */
-#line 2591 "edif.y"
- {
- (yyval.s) = (yyvsp[(1) - (1)].s);
- }
- break;
-
- case 1129:
-
-/* Line 1464 of yacc.c */
-#line 2594 "edif.y"
- {
- (yyval.s) = (yyvsp[(1) - (1)].s);
- }
- break;
-
-
-
-/* Line 1464 of yacc.c */
-#line 5138 "edif.c"
- default:
- break;
- }
- YY_SYMBOL_PRINT("-> $$ =", yyr1[yyn], &yyval, &yyloc);
-
- YYPOPSTACK(yylen);
- yylen = 0;
- YY_STACK_PRINT(yyss, yyssp);
-
- *++yyvsp = yyval;
-
- /* Now `shift' the result of the reduction. Determine what state
- that goes to, based on the state we popped back to and the rule
- number reduced by. */
-
- yyn = yyr1[yyn];
-
- yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
- if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
- yystate = yytable[yystate];
- else
- yystate = yydefgoto[yyn - YYNTOKENS];
-
- goto yynewstate;
-
-
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
-yyerrlab:
- /* If not already recovering from an error, report this error. */
- if (!yyerrstatus) {
- ++yynerrs;
-#if ! YYERROR_VERBOSE
- yyerror(YY_("syntax error"));
-#else
- {
- YYSIZE_T yysize = yysyntax_error(0, yystate, yychar);
- if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) {
- YYSIZE_T yyalloc = 2 * yysize;
- if (!(yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
- yyalloc = YYSTACK_ALLOC_MAXIMUM;
- if (yymsg != yymsgbuf)
- YYSTACK_FREE(yymsg);
- yymsg = (char *) YYSTACK_ALLOC(yyalloc);
- if (yymsg)
- yymsg_alloc = yyalloc;
- else {
- yymsg = yymsgbuf;
- yymsg_alloc = sizeof yymsgbuf;
- }
- }
-
- if (0 < yysize && yysize <= yymsg_alloc) {
- (void) yysyntax_error(yymsg, yystate, yychar);
- yyerror(yymsg);
- }
- else {
- yyerror(YY_("syntax error"));
- if (yysize != 0)
- goto yyexhaustedlab;
- }
- }
-#endif
- }
-
-
-
- if (yyerrstatus == 3) {
- /* If just tried and failed to reuse lookahead token after an
- error, discard it. */
-
- if (yychar <= YYEOF) {
- /* Return failure if at end of input. */
- if (yychar == YYEOF)
- YYABORT;
- }
- else {
- yydestruct("Error: discarding", yytoken, &yylval);
- yychar = YYEMPTY;
- }
- }
-
- /* Else will try to reuse lookahead token after shifting the error
- token. */
- goto yyerrlab1;
-
-
-/*---------------------------------------------------.
-| yyerrorlab -- error raised explicitly by YYERROR. |
-`---------------------------------------------------*/
-yyerrorlab:
-
- /* Pacify compilers like GCC when the user code never invokes
- YYERROR and the label yyerrorlab therefore never appears in user
- code. */
- if ( /*CONSTCOND*/ 0)
- goto yyerrorlab;
-
- /* Do not reclaim the symbols of the rule which action triggered
- this YYERROR. */
- YYPOPSTACK(yylen);
- yylen = 0;
- YY_STACK_PRINT(yyss, yyssp);
- yystate = *yyssp;
- goto yyerrlab1;
-
-
-/*-------------------------------------------------------------.
-| yyerrlab1 -- common code for both syntax error and YYERROR. |
-`-------------------------------------------------------------*/
-yyerrlab1:
- yyerrstatus = 3; /* Each real token shifted decrements this. */
-
- for (;;) {
- yyn = yypact[yystate];
- if (yyn != YYPACT_NINF) {
- yyn += YYTERROR;
- if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) {
- yyn = yytable[yyn];
- if (0 < yyn)
- break;
- }
- }
-
- /* Pop the current state because it cannot handle the error token. */
- if (yyssp == yyss)
- YYABORT;
-
-
- yydestruct("Error: popping", yystos[yystate], yyvsp);
- YYPOPSTACK(1);
- yystate = *yyssp;
- YY_STACK_PRINT(yyss, yyssp);
- }
-
- *++yyvsp = yylval;
-
-
- /* Shift the error token. */
- YY_SYMBOL_PRINT("Shifting", yystos[yyn], yyvsp, yylsp);
-
- yystate = yyn;
- goto yynewstate;
-
-
-/*-------------------------------------.
-| yyacceptlab -- YYACCEPT comes here. |
-`-------------------------------------*/
-yyacceptlab:
- yyresult = 0;
- goto yyreturn;
-
-/*-----------------------------------.
-| yyabortlab -- YYABORT comes here. |
-`-----------------------------------*/
-yyabortlab:
- yyresult = 1;
- goto yyreturn;
-
-#if !defined(yyoverflow) || YYERROR_VERBOSE
-/*-------------------------------------------------.
-| yyexhaustedlab -- memory exhaustion comes here. |
-`-------------------------------------------------*/
-yyexhaustedlab:
- yyerror(YY_("memory exhausted"));
- yyresult = 2;
- /* Fall through. */
-#endif
-
-yyreturn:
- if (yychar != YYEMPTY)
- yydestruct("Cleanup: discarding lookahead", yytoken, &yylval);
- /* Do not reclaim the symbols of the rule which action triggered
- this YYABORT or YYACCEPT. */
- YYPOPSTACK(yylen);
- YY_STACK_PRINT(yyss, yyssp);
- while (yyssp != yyss) {
- yydestruct("Cleanup: popping", yystos[*yyssp], yyvsp);
- YYPOPSTACK(1);
- }
-#ifndef yyoverflow
- if (yyss != yyssa)
- YYSTACK_FREE(yyss);
-#endif
-#if YYERROR_VERBOSE
- if (yymsg != yymsgbuf)
- YYSTACK_FREE(yymsg);
-#endif
- /* Make sure YYID is used. */
- return YYID(yyresult);
-}
-
-
-
-/* Line 1684 of yacc.c */
-#line 2597 "edif.y"
-
-/*
- * xmalloc:
- *
- * Garbage function for 'alloca()'.
- */
-char *xmalloc(int siz)
-{
- return ((char *) Malloc(siz));
-}
-
-/*
- * Token & context carriers:
- *
- * These are the linkage pointers for threading this context garbage
- * for converting identifiers into parser tokens.
- */
-typedef struct TokenCar {
- struct TokenCar *Next; /* pointer to next carrier */
- struct Token *Token; /* associated token */
-} TokenCar;
-typedef struct UsedCar {
- struct UsedCar *Next; /* pointer to next carrier */
- short Code; /* used '%token' value */
-} UsedCar;
-typedef struct ContextCar {
- struct ContextCar *Next; /* pointer to next carrier */
- struct Context *Context; /* associated context */
- union {
- int Single; /* single usage flag (context tree) */
- struct UsedCar *Used; /* single used list (context stack) */
- } u;
-} ContextCar;
-/*
- * Token definitions:
- *
- * This associates the '%token' codings with strings which are to
- * be free standing tokens. Doesn't have to be in sorted order but the
- * strings must be in lower case.
- */
-typedef struct Token {
- char *Name; /* token name */
- int Code; /* '%token' value */
- struct Token *Next; /* hash table linkage */
-} Token;
-static Token TokenDef[] = {
- {"angle", EDIF_TOK_ANGLE},
- {"behavior", EDIF_TOK_BEHAVIOR},
- {"calculated", EDIF_TOK_CALCULATED},
- {"capacitance", EDIF_TOK_CAPACITANCE},
- {"centercenter", EDIF_TOK_CENTERCENTER},
- {"centerleft", EDIF_TOK_CENTERLEFT},
- {"centerright", EDIF_TOK_CENTERRIGHT},
- {"charge", EDIF_TOK_CHARGE},
- {"conductance", EDIF_TOK_CONDUCTANCE},
- {"current", EDIF_TOK_CURRENT},
- {"distance", EDIF_TOK_DISTANCE},
- {"document", EDIF_TOK_DOCUMENT},
- {"energy", EDIF_TOK_ENERGY},
- {"extend", EDIF_TOK_EXTEND},
- {"flux", EDIF_TOK_FLUX},
- {"frequency", EDIF_TOK_FREQUENCY},
- {"generic", EDIF_TOK_GENERIC},
- {"graphic", EDIF_TOK_GRAPHIC},
- {"inductance", EDIF_TOK_INDUCTANCE},
- {"inout", EDIF_TOK_INOUT},
- {"input", EDIF_TOK_INPUT},
- {"logicmodel", EDIF_TOK_LOGICMODEL},
- {"lowercenter", EDIF_TOK_LOWERCENTER},
- {"lowerleft", EDIF_TOK_LOWERLEFT},
- {"lowerright", EDIF_TOK_LOWERRIGHT},
- {"masklayout", EDIF_TOK_MASKLAYOUT},
- {"mass", EDIF_TOK_MASS},
- {"measured", EDIF_TOK_MEASURED},
- {"mx", EDIF_TOK_MX},
- {"mxr90", EDIF_TOK_MXR90},
- {"my", EDIF_TOK_MY},
- {"myr90", EDIF_TOK_MYR90},
- {"netlist", EDIF_TOK_NETLIST},
- {"output", EDIF_TOK_OUTPUT},
- {"pcblayout", EDIF_TOK_PCBLAYOUT},
- {"power", EDIF_TOK_POWER},
- {"r0", EDIF_TOK_R0},
- {"r180", EDIF_TOK_R180},
- {"r270", EDIF_TOK_R270},
- {"r90", EDIF_TOK_R90},
- {"required", EDIF_TOK_REQUIRED},
- {"resistance", EDIF_TOK_RESISTANCE},
- {"ripper", EDIF_TOK_RIPPER},
- {"round", EDIF_TOK_ROUND},
- {"schematic", EDIF_TOK_SCHEMATIC},
- {"stranger", EDIF_TOK_STRANGER},
- {"symbolic", EDIF_TOK_SYMBOLIC},
- {"temperature", EDIF_TOK_TEMPERATURE},
- {"tie", EDIF_TOK_TIE},
- {"time", EDIF_TOK_TIME},
- {"truncate", EDIF_TOK_TRUNCATE},
- {"uppercenter", EDIF_TOK_UPPERCENTER},
- {"upperleft", EDIF_TOK_UPPERLEFT},
- {"upperright", EDIF_TOK_UPPERRIGHT},
- {"voltage", EDIF_TOK_VOLTAGE}
-};
-
-static int TokenDefSize = sizeof(TokenDef) / sizeof(Token);
-/*
- * Token enable definitions:
- *
- * There is one array for each set of tokens enabled by a
- * particular context (barf). Another array is used to bind
- * these arrays to a context.
- */
-static short e_CellType[] = { EDIF_TOK_TIE, EDIF_TOK_RIPPER, EDIF_TOK_GENERIC };
-
-static short e_CornerType[] = { EDIF_TOK_EXTEND, EDIF_TOK_TRUNCATE,
- EDIF_TOK_ROUND
-};
-
-static short e_Derivation[] = { EDIF_TOK_CALCULATED, EDIF_TOK_MEASURED,
- EDIF_TOK_REQUIRED
-};
-
-static short e_Direction[] = { EDIF_TOK_INPUT, EDIF_TOK_OUTPUT,
- EDIF_TOK_INOUT
-};
-
-static short e_EndType[] = { EDIF_TOK_EXTEND, EDIF_TOK_TRUNCATE,
- EDIF_TOK_ROUND
-};
-
-static short e_Justify[] = { EDIF_TOK_CENTERCENTER, EDIF_TOK_CENTERLEFT,
- EDIF_TOK_CENTERRIGHT, EDIF_TOK_LOWERCENTER,
- EDIF_TOK_LOWERLEFT, EDIF_TOK_LOWERRIGHT,
- EDIF_TOK_UPPERCENTER, EDIF_TOK_UPPERLEFT,
- EDIF_TOK_UPPERRIGHT
-};
-
-static short e_Orientation[] = { EDIF_TOK_R0, EDIF_TOK_R90, EDIF_TOK_R180,
- EDIF_TOK_R270, EDIF_TOK_MX, EDIF_TOK_MY,
- EDIF_TOK_MXR90, EDIF_TOK_MYR90
-};
-
-static short e_Unit[] = { EDIF_TOK_DISTANCE, EDIF_TOK_CAPACITANCE,
- EDIF_TOK_CURRENT, EDIF_TOK_RESISTANCE,
- EDIF_TOK_TEMPERATURE, EDIF_TOK_TIME,
- EDIF_TOK_VOLTAGE, EDIF_TOK_MASS, EDIF_TOK_FREQUENCY,
- EDIF_TOK_INDUCTANCE, EDIF_TOK_ENERGY,
- EDIF_TOK_POWER, EDIF_TOK_CHARGE,
- EDIF_TOK_CONDUCTANCE, EDIF_TOK_FLUX, EDIF_TOK_ANGLE
-};
-
-static short e_ViewType[] = { EDIF_TOK_MASKLAYOUT, EDIF_TOK_PCBLAYOUT,
- EDIF_TOK_NETLIST, EDIF_TOK_SCHEMATIC,
- EDIF_TOK_SYMBOLIC, EDIF_TOK_BEHAVIOR,
- EDIF_TOK_LOGICMODEL, EDIF_TOK_DOCUMENT,
- EDIF_TOK_GRAPHIC, EDIF_TOK_STRANGER
-};
-
-/*
- * Token tying table:
- *
- * This binds enabled tokens to a context.
- */
-typedef struct Tie {
- short *Enable; /* pointer to enable array */
- short Origin; /* '%token' value of context */
- short EnableSize; /* size of enabled array */
-} Tie;
-#define TE(e,o) {e,o,sizeof(e)/sizeof(short)}
-static Tie TieDef[] = {
- TE(e_CellType, EDIF_TOK_CELLTYPE),
- TE(e_CornerType, EDIF_TOK_CORNERTYPE),
- TE(e_Derivation, EDIF_TOK_DERIVATION),
- TE(e_Direction, EDIF_TOK_DIRECTION),
- TE(e_EndType, EDIF_TOK_ENDTYPE),
- TE(e_Justify, EDIF_TOK_JUSTIFY),
- TE(e_Orientation, EDIF_TOK_ORIENTATION),
- TE(e_Unit, EDIF_TOK_UNIT),
- TE(e_ViewType, EDIF_TOK_VIEWTYPE)
-};
-
-static int TieDefSize = sizeof(TieDef) / sizeof(Tie);
-/*
- * Context definitions:
- *
- * This associates keyword strings with '%token' values. It
- * also creates a pretty much empty header for later building of
- * the context tree. Again they needn't be sorted, but strings
- * must be lower case.
- */
-typedef struct Context {
- char *Name; /* keyword name */
- short Code; /* '%token' value */
- short Flags; /* special operation flags */
- struct ContextCar *Context; /* contexts which can be moved to */
- struct TokenCar *Token; /* active tokens */
- struct Context *Next; /* hash table linkage */
-} Context;
-static Context ContextDef[] = {
- {"", 0}, /* start context */
- {"acload", EDIF_TOK_ACLOAD},
- {"after", EDIF_TOK_AFTER},
- {"annotate", EDIF_TOK_ANNOTATE},
- {"apply", EDIF_TOK_APPLY},
- {"arc", EDIF_TOK_ARC},
- {"array", EDIF_TOK_ARRAY},
- {"arraymacro", EDIF_TOK_ARRAYMACRO},
- {"arrayrelatedinfo", EDIF_TOK_ARRAYRELATEDINFO},
- {"arraysite", EDIF_TOK_ARRAYSITE},
- {"atleast", EDIF_TOK_ATLEAST},
- {"atmost", EDIF_TOK_ATMOST},
- {"author", EDIF_TOK_AUTHOR},
- {"basearray", EDIF_TOK_BASEARRAY},
- {"becomes", EDIF_TOK_BECOMES},
- {"between", EDIF_TOK_BETWEEN},
- {"boolean", EDIF_TOK_BOOLEAN},
- {"booleandisplay", EDIF_TOK_BOOLEANDISPLAY},
- {"booleanmap", EDIF_TOK_BOOLEANMAP},
- {"borderpattern", EDIF_TOK_BORDERPATTERN},
- {"borderwidth", EDIF_TOK_BORDERWIDTH},
- {"boundingbox", EDIF_TOK_BOUNDINGBOX},
- {"cell", EDIF_TOK_CELL},
- {"cellref", EDIF_TOK_CELLREF},
- {"celltype", EDIF_TOK_CELLTYPE},
- {"change", EDIF_TOK_CHANGE},
- {"circle", EDIF_TOK_CIRCLE},
- {"color", EDIF_TOK_COLOR},
- {"comment", EDIF_TOK_COMMENT},
- {"commentgraphics", EDIF_TOK_COMMENTGRAPHICS},
- {"compound", EDIF_TOK_COMPOUND},
- {"connectlocation", EDIF_TOK_CONNECTLOCATION},
- {"contents", EDIF_TOK_CONTENTS},
- {"cornertype", EDIF_TOK_CORNERTYPE},
- {"criticality", EDIF_TOK_CRITICALITY},
- {"currentmap", EDIF_TOK_CURRENTMAP},
- {"curve", EDIF_TOK_CURVE},
- {"cycle", EDIF_TOK_CYCLE},
- {"dataorigin", EDIF_TOK_DATAORIGIN},
- {"dcfaninload", EDIF_TOK_DCFANINLOAD},
- {"dcfanoutload", EDIF_TOK_DCFANOUTLOAD},
- {"dcmaxfanin", EDIF_TOK_DCMAXFANIN},
- {"dcmaxfanout", EDIF_TOK_DCMAXFANOUT},
- {"delay", EDIF_TOK_DELAY},
- {"delta", EDIF_TOK_DELTA},
- {"derivation", EDIF_TOK_DERIVATION},
- {"design", EDIF_TOK_DESIGN},
- {"designator", EDIF_TOK_DESIGNATOR},
- {"difference", EDIF_TOK_DIFFERENCE},
- {"direction", EDIF_TOK_DIRECTION},
- {"display", EDIF_TOK_DISPLAY},
- {"dominates", EDIF_TOK_DOMINATES},
- {"dot", EDIF_TOK_DOT},
- {"duration", EDIF_TOK_DURATION},
- {"e", EDIF_TOK_E},
- {"edif", EDIF_TOK_EDIF},
- {"ediflevel", EDIF_TOK_EDIFLEVEL},
- {"edifversion", EDIF_TOK_EDIFVERSION},
- {"enclosuredistance", EDIF_TOK_ENCLOSUREDISTANCE},
- {"endtype", EDIF_TOK_ENDTYPE},
- {"entry", EDIF_TOK_ENTRY},
- {"exactly", EDIF_TOK_EXACTLY},
- {"external", EDIF_TOK_EXTERNAL},
- {"fabricate", EDIF_TOK_FABRICATE},
- {"false", EDIF_TOK_FALSE},
- {"figure", EDIF_TOK_FIGURE},
- {"figurearea", EDIF_TOK_FIGUREAREA},
- {"figuregroup", EDIF_TOK_FIGUREGROUP},
- {"figuregroupobject", EDIF_TOK_FIGUREGROUPOBJECT},
- {"figuregroupoverride", EDIF_TOK_FIGUREGROUPOVERRIDE},
- {"figuregroupref", EDIF_TOK_FIGUREGROUPREF},
- {"figureperimeter", EDIF_TOK_FIGUREPERIMETER},
- {"figurewidth", EDIF_TOK_FIGUREWIDTH},
- {"fillpattern", EDIF_TOK_FILLPATTERN},
- {"follow", EDIF_TOK_FOLLOW},
- {"forbiddenevent", EDIF_TOK_FORBIDDENEVENT},
- {"globalportref", EDIF_TOK_GLOBALPORTREF},
- {"greaterthan", EDIF_TOK_GREATERTHAN},
- {"gridmap", EDIF_TOK_GRIDMAP},
- {"ignore", EDIF_TOK_IGNORE},
- {"includefiguregroup", EDIF_TOK_INCLUDEFIGUREGROUP},
- {"initial", EDIF_TOK_INITIAL},
- {"instance", EDIF_TOK_INSTANCE},
- {"instancebackannotate", EDIF_TOK_INSTANCEBACKANNOTATE},
- {"instancegroup", EDIF_TOK_INSTANCEGROUP},
- {"instancemap", EDIF_TOK_INSTANCEMAP},
- {"instanceref", EDIF_TOK_INSTANCEREF},
- {"integer", EDIF_TOK_INTEGER},
- {"integerdisplay", EDIF_TOK_INTEGERDISPLAY},
- {"interface", EDIF_TOK_INTERFACE},
- {"interfiguregroupspacing", EDIF_TOK_INTERFIGUREGROUPSPACING},
- {"intersection", EDIF_TOK_INTERSECTION},
- {"intrafiguregroupspacing", EDIF_TOK_INTRAFIGUREGROUPSPACING},
- {"inverse", EDIF_TOK_INVERSE},
- {"isolated", EDIF_TOK_ISOLATED},
- {"joined", EDIF_TOK_JOINED},
- {"justify", EDIF_TOK_JUSTIFY},
- {"keyworddisplay", EDIF_TOK_KEYWORDDISPLAY},
- {"keywordlevel", EDIF_TOK_KEYWORDLEVEL},
- {"keywordmap", EDIF_TOK_KEYWORDMAP},
- {"lessthan", EDIF_TOK_LESSTHAN},
- {"library", EDIF_TOK_LIBRARY},
- {"libraryref", EDIF_TOK_LIBRARYREF},
- {"listofnets", EDIF_TOK_LISTOFNETS},
- {"listofports", EDIF_TOK_LISTOFPORTS},
- {"loaddelay", EDIF_TOK_LOADDELAY},
- {"logicassign", EDIF_TOK_LOGICASSIGN},
- {"logicinput", EDIF_TOK_LOGICINPUT},
- {"logiclist", EDIF_TOK_LOGICLIST},
- {"logicmapinput", EDIF_TOK_LOGICMAPINPUT},
- {"logicmapoutput", EDIF_TOK_LOGICMAPOUTPUT},
- {"logiconeof", EDIF_TOK_LOGICONEOF},
- {"logicoutput", EDIF_TOK_LOGICOUTPUT},
- {"logicport", EDIF_TOK_LOGICPORT},
- {"logicref", EDIF_TOK_LOGICREF},
- {"logicvalue", EDIF_TOK_LOGICVALUE},
- {"logicwaveform", EDIF_TOK_LOGICWAVEFORM},
- {"maintain", EDIF_TOK_MAINTAIN},
- {"match", EDIF_TOK_MATCH},
- {"member", EDIF_TOK_MEMBER},
- {"minomax", EDIF_TOK_MINOMAX},
- {"minomaxdisplay", EDIF_TOK_MINOMAXDISPLAY},
- {"mnm", EDIF_TOK_MNM},
- {"multiplevalueset", EDIF_TOK_MULTIPLEVALUESET},
- {"mustjoin", EDIF_TOK_MUSTJOIN},
- {"name", EDIF_TOK_NAME},
- {"net", EDIF_TOK_NET},
- {"netbackannotate", EDIF_TOK_NETBACKANNOTATE},
- {"netbundle", EDIF_TOK_NETBUNDLE},
- {"netdelay", EDIF_TOK_NETDELAY},
- {"netgroup", EDIF_TOK_NETGROUP},
- {"netmap", EDIF_TOK_NETMAP},
- {"netref", EDIF_TOK_NETREF},
- {"nochange", EDIF_TOK_NOCHANGE},
- {"nonpermutable", EDIF_TOK_NONPERMUTABLE},
- {"notallowed", EDIF_TOK_NOTALLOWED},
- {"notchspacing", EDIF_TOK_NOTCHSPACING},
- {"number", EDIF_TOK_NUMBER},
- {"numberdefinition", EDIF_TOK_NUMBERDEFINITION},
- {"numberdisplay", EDIF_TOK_NUMBERDISPLAY},
- {"offpageconnector", EDIF_TOK_OFFPAGECONNECTOR},
- {"offsetevent", EDIF_TOK_OFFSETEVENT},
- {"openshape", EDIF_TOK_OPENSHAPE},
- {"orientation", EDIF_TOK_ORIENTATION},
- {"origin", EDIF_TOK_ORIGIN},
- {"overhangdistance", EDIF_TOK_OVERHANGDISTANCE},
- {"overlapdistance", EDIF_TOK_OVERLAPDISTANCE},
- {"oversize", EDIF_TOK_OVERSIZE},
- {"owner", EDIF_TOK_OWNER},
- {"page", EDIF_TOK_PAGE},
- {"pagesize", EDIF_TOK_PAGESIZE},
- {"parameter", EDIF_TOK_PARAMETER},
- {"parameterassign", EDIF_TOK_PARAMETERASSIGN},
- {"parameterdisplay", EDIF_TOK_PARAMETERDISPLAY},
- {"path", EDIF_TOK_PATH},
- {"pathdelay", EDIF_TOK_PATHDELAY},
- {"pathwidth", EDIF_TOK_PATHWIDTH},
- {"permutable", EDIF_TOK_PERMUTABLE},
- {"physicaldesignrule", EDIF_TOK_PHYSICALDESIGNRULE},
- {"plug", EDIF_TOK_PLUG},
- {"point", EDIF_TOK_POINT},
- {"pointdisplay", EDIF_TOK_POINTDISPLAY},
- {"pointlist", EDIF_TOK_POINTLIST},
- {"polygon", EDIF_TOK_POLYGON},
- {"port", EDIF_TOK_PORT},
- {"portbackannotate", EDIF_TOK_PORTBACKANNOTATE},
- {"portbundle", EDIF_TOK_PORTBUNDLE},
- {"portdelay", EDIF_TOK_PORTDELAY},
- {"portgroup", EDIF_TOK_PORTGROUP},
- {"portimplementation", EDIF_TOK_PORTIMPLEMENTATION},
- {"portinstance", EDIF_TOK_PORTINSTANCE},
- {"portlist", EDIF_TOK_PORTLIST},
- {"portlistalias", EDIF_TOK_PORTLISTALIAS},
- {"portmap", EDIF_TOK_PORTMAP},
- {"portref", EDIF_TOK_PORTREF},
- {"program", EDIF_TOK_PROGRAM},
- {"property", EDIF_TOK_PROPERTY},
- {"propertydisplay", EDIF_TOK_PROPERTYDISPLAY},
- {"protectionframe", EDIF_TOK_PROTECTIONFRAME},
- {"pt", EDIF_TOK_PT},
- {"rangevector", EDIF_TOK_RANGEVECTOR},
- {"rectangle", EDIF_TOK_RECTANGLE},
- {"rectanglesize", EDIF_TOK_RECTANGLESIZE},
- {"rename", EDIF_TOK_RENAME},
- {"resolves", EDIF_TOK_RESOLVES},
- {"scale", EDIF_TOK_SCALE},
- {"scalex", EDIF_TOK_SCALEX},
- {"scaley", EDIF_TOK_SCALEY},
- {"section", EDIF_TOK_SECTION},
- {"shape", EDIF_TOK_SHAPE},
- {"simulate", EDIF_TOK_SIMULATE},
- {"simulationinfo", EDIF_TOK_SIMULATIONINFO},
- {"singlevalueset", EDIF_TOK_SINGLEVALUESET},
- {"site", EDIF_TOK_SITE},
- {"socket", EDIF_TOK_SOCKET},
- {"socketset", EDIF_TOK_SOCKETSET},
- {"status", EDIF_TOK_STATUS},
- {"steady", EDIF_TOK_STEADY},
- {"string", EDIF_TOK_STRING},
- {"stringdisplay", EDIF_TOK_STRINGDISPLAY},
- {"strong", EDIF_TOK_STRONG},
- {"symbol", EDIF_TOK_SYMBOL},
- {"symmetry", EDIF_TOK_SYMMETRY},
- {"table", EDIF_TOK_TABLE},
- {"tabledefault", EDIF_TOK_TABLEDEFAULT},
- {"technology", EDIF_TOK_TECHNOLOGY},
- {"textheight", EDIF_TOK_TEXTHEIGHT},
- {"timeinterval", EDIF_TOK_TIMEINTERVAL},
- {"timestamp", EDIF_TOK_TIMESTAMP},
- {"timing", EDIF_TOK_TIMING},
- {"transform", EDIF_TOK_TRANSFORM},
- {"transition", EDIF_TOK_TRANSITION},
- {"trigger", EDIF_TOK_TRIGGER},
- {"true", EDIF_TOK_TRUE},
- {"unconstrained", EDIF_TOK_UNCONSTRAINED},
- {"undefined", EDIF_TOK_UNDEFINED},
- {"union", EDIF_TOK_UNION},
- {"unit", EDIF_TOK_UNIT},
- {"unused", EDIF_TOK_UNUSED},
- {"userdata", EDIF_TOK_USERDATA},
- {"version", EDIF_TOK_VERSION},
- {"view", EDIF_TOK_VIEW},
- {"viewlist", EDIF_TOK_VIEWLIST},
- {"viewmap", EDIF_TOK_VIEWMAP},
- {"viewref", EDIF_TOK_VIEWREF},
- {"viewtype", EDIF_TOK_VIEWTYPE},
- {"visible", EDIF_TOK_VISIBLE},
- {"voltagemap", EDIF_TOK_VOLTAGEMAP},
- {"wavevalue", EDIF_TOK_WAVEVALUE},
- {"weak", EDIF_TOK_WEAK},
- {"weakjoined", EDIF_TOK_WEAKJOINED},
- {"when", EDIF_TOK_WHEN},
- {"written", EDIF_TOK_WRITTEN}
-};
-
-static int ContextDefSize = sizeof(ContextDef) / sizeof(Context);
-/*
- * Context follower tables:
- *
- * This is pretty ugly, an array is defined for each context
- * which has following context levels. Yet another table is used
- * to bind these arrays to the originating contexts.
- * Arrays are declared as:
- *
- * static short f_[] = { ... };
- *
- * The array entries are the '%token' values for all keywords which
- * can be reached from the context. Like I said, ugly,
- * but it works.
- * A negative entry means that the follow can only occur once within
- * the specified context.
- */
-static short f_NULL[] = { EDIF_TOK_EDIF };
-
-static short f_Edif[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_EDIFVERSION,
- EDIF_TOK_EDIFLEVEL, EDIF_TOK_KEYWORDMAP,
- -EDIF_TOK_STATUS, EDIF_TOK_EXTERNAL,
- EDIF_TOK_LIBRARY, EDIF_TOK_DESIGN, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA
-};
-static short f_AcLoad[] = { EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_MINOMAXDISPLAY };
-
-static short f_After[] = { EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_FOLLOW,
- EDIF_TOK_MAINTAIN, EDIF_TOK_LOGICASSIGN,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA
-};
-static short f_Annotate[] = { EDIF_TOK_STRINGDISPLAY };
-
-static short f_Apply[] = { EDIF_TOK_CYCLE, EDIF_TOK_LOGICINPUT,
- EDIF_TOK_LOGICOUTPUT, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA
-};
-static short f_Arc[] = { EDIF_TOK_PT };
-static short f_Array[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME };
-static short f_ArrayMacro[] = { EDIF_TOK_PLUG };
-
-static short f_ArrayRelatedInfo[] = { EDIF_TOK_BASEARRAY, EDIF_TOK_ARRAYSITE,
- EDIF_TOK_ARRAYMACRO, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA
-};
-static short f_ArraySite[] = { EDIF_TOK_SOCKET };
-static short f_AtLeast[] = { EDIF_TOK_E };
-static short f_AtMost[] = { EDIF_TOK_E };
-
-static short f_Becomes[] = { EDIF_TOK_NAME, EDIF_TOK_LOGICLIST,
- EDIF_TOK_LOGICONEOF
-};
-
-/*
-static short f_Between[] = {EDIF_TOK_ATLEAST, EDIF_TOK_GREATERTHAN,
- EDIF_TOK_ATMOST, EDIF_TOK_LESSTHAN};
-*/
-static short f_Boolean[] = { EDIF_TOK_FALSE, EDIF_TOK_TRUE,
- EDIF_TOK_BOOLEANDISPLAY, EDIF_TOK_BOOLEAN
-};
-
-static short f_BooleanDisplay[] = { EDIF_TOK_FALSE, EDIF_TOK_TRUE,
- EDIF_TOK_DISPLAY
-};
-static short f_BooleanMap[] = { EDIF_TOK_FALSE, EDIF_TOK_TRUE };
-static short f_BorderPattern[] = { EDIF_TOK_BOOLEAN };
-static short f_BoundingBox[] = { EDIF_TOK_RECTANGLE };
-
-static short f_Cell[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_CELLTYPE,
- -EDIF_TOK_STATUS, -EDIF_TOK_VIEWMAP, EDIF_TOK_VIEW,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA,
- EDIF_TOK_PROPERTY
-};
-static short f_CellRef[] = { EDIF_TOK_NAME, EDIF_TOK_LIBRARYREF };
-
-static short f_Change[] = { EDIF_TOK_NAME, EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
- EDIF_TOK_BECOMES, EDIF_TOK_TRANSITION
-};
-static short f_Circle[] = { EDIF_TOK_PT, EDIF_TOK_PROPERTY };
-static short f_Color[] = { EDIF_TOK_E };
-
-static short f_CommentGraphics[] = { EDIF_TOK_ANNOTATE, EDIF_TOK_FIGURE,
- EDIF_TOK_INSTANCE, -EDIF_TOK_BOUNDINGBOX,
- EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA
-};
-static short f_Compound[] = { EDIF_TOK_NAME };
-static short f_ConnectLocation[] = { EDIF_TOK_FIGURE };
-
-static short f_Contents[] = { EDIF_TOK_INSTANCE, EDIF_TOK_OFFPAGECONNECTOR,
- EDIF_TOK_FIGURE, EDIF_TOK_SECTION, EDIF_TOK_NET,
- EDIF_TOK_NETBUNDLE, EDIF_TOK_PAGE,
- EDIF_TOK_COMMENTGRAPHICS,
- EDIF_TOK_PORTIMPLEMENTATION,
- EDIF_TOK_TIMING, EDIF_TOK_SIMULATE,
- EDIF_TOK_WHEN, EDIF_TOK_FOLLOW,
- EDIF_TOK_LOGICPORT, -EDIF_TOK_BOUNDINGBOX,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA
-};
-static short f_Criticality[] = { EDIF_TOK_INTEGERDISPLAY };
-static short f_CurrentMap[] = { EDIF_TOK_MNM, EDIF_TOK_E };
-static short f_Curve[] = { EDIF_TOK_ARC, EDIF_TOK_PT };
-static short f_Cycle[] = { EDIF_TOK_DURATION };
-static short f_DataOrigin[] = { EDIF_TOK_VERSION };
-static short f_DcFanInLoad[] = { EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY };
-static short f_DcFanOutLoad[] = { EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY };
-static short f_DcMaxFanIn[] = { EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY };
-static short f_DcMaxFanOut[] = { EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY };
-static short f_Delay[] = { EDIF_TOK_MNM, EDIF_TOK_E };
-static short f_Delta[] = { EDIF_TOK_PT };
-
-static short f_Design[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_CELLREF,
- EDIF_TOK_STATUS, EDIF_TOK_COMMENT,
- EDIF_TOK_PROPERTY, EDIF_TOK_USERDATA
-};
-static short f_Designator[] = { EDIF_TOK_STRINGDISPLAY };
-
-static short f_Difference[] = { EDIF_TOK_FIGUREGROUPREF, EDIF_TOK_INTERSECTION,
- EDIF_TOK_UNION, EDIF_TOK_DIFFERENCE,
- EDIF_TOK_INVERSE, EDIF_TOK_OVERSIZE
-};
-
-static short f_Display[] = { EDIF_TOK_NAME, EDIF_TOK_FIGUREGROUPOVERRIDE,
- EDIF_TOK_JUSTIFY, EDIF_TOK_ORIENTATION,
- EDIF_TOK_ORIGIN
-};
-static short f_Dominates[] = { EDIF_TOK_NAME };
-static short f_Dot[] = { EDIF_TOK_PT, EDIF_TOK_PROPERTY };
-static short f_Duration[] = { EDIF_TOK_E };
-
-static short f_EnclosureDistance[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_FIGUREGROUPOBJECT,
- EDIF_TOK_LESSTHAN, EDIF_TOK_GREATERTHAN,
- EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
- EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN,
- EDIF_TOK_SINGLEVALUESET,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA
-};
-
-static short f_Entry[] = { EDIF_TOK_MATCH, EDIF_TOK_CHANGE, EDIF_TOK_STEADY,
- EDIF_TOK_LOGICREF, EDIF_TOK_PORTREF,
- EDIF_TOK_NOCHANGE, EDIF_TOK_TABLE,
- EDIF_TOK_DELAY, EDIF_TOK_LOADDELAY
-};
-static short f_Exactly[] = { EDIF_TOK_E };
-
-static short f_External[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_EDIFLEVEL, EDIF_TOK_TECHNOLOGY,
- -EDIF_TOK_STATUS, EDIF_TOK_CELL, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA
-};
-static short f_Fabricate[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME };
-
-static short f_Figure[] = { EDIF_TOK_NAME, EDIF_TOK_FIGUREGROUPOVERRIDE,
- EDIF_TOK_CIRCLE, EDIF_TOK_DOT, EDIF_TOK_OPENSHAPE,
- EDIF_TOK_PATH, EDIF_TOK_POLYGON,
- EDIF_TOK_RECTANGLE, EDIF_TOK_SHAPE,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA
-};
-
-static short f_FigureArea[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
- EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
- EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
- EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA
-};
-
-static short f_FigureGroup[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME,
- -EDIF_TOK_CORNERTYPE, -EDIF_TOK_ENDTYPE,
- -EDIF_TOK_PATHWIDTH, -EDIF_TOK_BORDERWIDTH,
- -EDIF_TOK_COLOR, -EDIF_TOK_FILLPATTERN,
- -EDIF_TOK_BORDERPATTERN, -EDIF_TOK_TEXTHEIGHT,
- -EDIF_TOK_VISIBLE, EDIF_TOK_INCLUDEFIGUREGROUP,
- EDIF_TOK_COMMENT, EDIF_TOK_PROPERTY,
- EDIF_TOK_USERDATA
-};
-
-static short f_FigureGroupObject[] = { EDIF_TOK_NAME,
- EDIF_TOK_FIGUREGROUPOBJECT,
- EDIF_TOK_INTERSECTION, EDIF_TOK_UNION,
- EDIF_TOK_DIFFERENCE, EDIF_TOK_INVERSE,
- EDIF_TOK_OVERSIZE
-};
-
-static short f_FigureGroupOverride[] = { EDIF_TOK_NAME, -EDIF_TOK_CORNERTYPE,
- -EDIF_TOK_ENDTYPE, -EDIF_TOK_PATHWIDTH,
- -EDIF_TOK_BORDERWIDTH, -EDIF_TOK_COLOR,
- -EDIF_TOK_FILLPATTERN,
- -EDIF_TOK_TEXTHEIGHT,
- -EDIF_TOK_BORDERPATTERN,
- EDIF_TOK_VISIBLE, EDIF_TOK_COMMENT,
- EDIF_TOK_PROPERTY, EDIF_TOK_USERDATA
-};
-static short f_FigureGroupRef[] = { EDIF_TOK_NAME, EDIF_TOK_LIBRARYREF };
-
-static short f_FigurePerimeter[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_FIGUREGROUPOBJECT,
- EDIF_TOK_LESSTHAN, EDIF_TOK_GREATERTHAN,
- EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
- EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN,
- EDIF_TOK_SINGLEVALUESET, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA
-};
-
-static short f_FigureWidth[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
- EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
- EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
- EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA
-};
-static short f_FillPattern[] = { EDIF_TOK_BOOLEAN };
-
-static short f_Follow[] = { EDIF_TOK_NAME, EDIF_TOK_PORTREF, EDIF_TOK_TABLE,
- EDIF_TOK_DELAY, EDIF_TOK_LOADDELAY
-};
-static short f_ForbiddenEvent[] = { EDIF_TOK_TIMEINTERVAL, EDIF_TOK_EVENT };
-static short f_GlobalPortRef[] = { EDIF_TOK_NAME };
-static short f_GreaterThan[] = { EDIF_TOK_E };
-static short f_GridMap[] = { EDIF_TOK_E };
-
-static short f_IncludeFigureGroup[] = { EDIF_TOK_FIGUREGROUPREF,
- EDIF_TOK_INTERSECTION, EDIF_TOK_UNION,
- EDIF_TOK_DIFFERENCE, EDIF_TOK_INVERSE,
- EDIF_TOK_OVERSIZE
-};
-
-static short f_Instance[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
- EDIF_TOK_VIEWREF, EDIF_TOK_VIEWLIST,
- -EDIF_TOK_TRANSFORM, EDIF_TOK_PARAMETERASSIGN,
- EDIF_TOK_PORTINSTANCE, EDIF_TOK_TIMING,
- -EDIF_TOK_DESIGNATOR, EDIF_TOK_PROPERTY,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA
-};
-
-static short f_InstanceBackAnnotate[] = { EDIF_TOK_INSTANCEREF,
- -EDIF_TOK_DESIGNATOR, EDIF_TOK_TIMING,
- EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT
-};
-static short f_InstanceGroup[] = { EDIF_TOK_INSTANCEREF };
-
-static short f_InstanceMap[] = { EDIF_TOK_INSTANCEREF, EDIF_TOK_INSTANCEGROUP,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA
-};
-
-static short f_InstanceRef[] = { EDIF_TOK_NAME, EDIF_TOK_MEMBER,
- EDIF_TOK_INSTANCEREF, EDIF_TOK_VIEWREF
-};
-static short f_Integer[] = { EDIF_TOK_INTEGERDISPLAY, EDIF_TOK_INTEGER };
-static short f_IntegerDisplay[] = { EDIF_TOK_DISPLAY };
-
-static short f_Interface[] = { EDIF_TOK_PORT, EDIF_TOK_PORTBUNDLE,
- -EDIF_TOK_SYMBOL, -EDIF_TOK_PROTECTIONFRAME,
- -EDIF_TOK_ARRAYRELATEDINFO, EDIF_TOK_PARAMETER,
- EDIF_TOK_JOINED, EDIF_TOK_MUSTJOIN,
- EDIF_TOK_WEAKJOINED, EDIF_TOK_PERMUTABLE,
- EDIF_TOK_TIMING, EDIF_TOK_SIMULATE,
- -EDIF_TOK_DESIGNATOR, EDIF_TOK_PROPERTY,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA
-};
-
-static short f_InterFigureGroupSpacing[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_FIGUREGROUPOBJECT,
- EDIF_TOK_LESSTHAN,
- EDIF_TOK_GREATERTHAN,
- EDIF_TOK_ATMOST,
- EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
- EDIF_TOK_BETWEEN,
- EDIF_TOK_SINGLEVALUESET,
- EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA
-};
-
-static short f_Intersection[] = { EDIF_TOK_FIGUREGROUPREF,
- EDIF_TOK_INTERSECTION, EDIF_TOK_UNION,
- EDIF_TOK_DIFFERENCE, EDIF_TOK_INVERSE,
- EDIF_TOK_OVERSIZE
-};
-
-static short f_IntraFigureGroupSpacing[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_FIGUREGROUPOBJECT,
- EDIF_TOK_LESSTHAN,
- EDIF_TOK_GREATERTHAN,
- EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
- EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN,
- EDIF_TOK_SINGLEVALUESET,
- EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA
-};
-
-static short f_Inverse[] = { EDIF_TOK_FIGUREGROUPREF, EDIF_TOK_INTERSECTION,
- EDIF_TOK_UNION, EDIF_TOK_DIFFERENCE,
- EDIF_TOK_INVERSE, EDIF_TOK_OVERSIZE
-};
-
-static short f_Joined[] = { EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
- EDIF_TOK_GLOBALPORTREF
-};
-static short f_KeywordDisplay[] = { EDIF_TOK_DISPLAY };
-static short f_KeywordMap[] = { EDIF_TOK_KEYWORDLEVEL, EDIF_TOK_COMMENT };
-static short f_LessThan[] = { EDIF_TOK_E };
-
-static short f_Library[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_EDIFLEVEL,
- EDIF_TOK_TECHNOLOGY, -EDIF_TOK_STATUS,
- EDIF_TOK_CELL, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA
-};
-static short f_LibraryRef[] = { EDIF_TOK_NAME };
-static short f_ListOfNets[] = { EDIF_TOK_NET };
-static short f_ListOfPorts[] = { EDIF_TOK_PORT, EDIF_TOK_PORTBUNDLE };
-static short f_LoadDelay[] = { EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_MINOMAXDISPLAY };
-
-static short f_LogicAssign[] = { EDIF_TOK_NAME, EDIF_TOK_PORTREF,
- EDIF_TOK_LOGICREF, EDIF_TOK_TABLE,
- EDIF_TOK_DELAY, EDIF_TOK_LOADDELAY
-};
-
-static short f_LogicInput[] = { EDIF_TOK_PORTLIST, EDIF_TOK_PORTREF,
- EDIF_TOK_NAME, EDIF_TOK_LOGICWAVEFORM
-};
-
-static short f_LogicList[] = { EDIF_TOK_NAME, EDIF_TOK_LOGICONEOF,
- EDIF_TOK_IGNORE
-};
-static short f_LogicMapInput[] = { EDIF_TOK_LOGICREF };
-static short f_LogicMapOutput[] = { EDIF_TOK_LOGICREF };
-static short f_LogicOneOf[] = { EDIF_TOK_NAME, EDIF_TOK_LOGICLIST };
-
-static short f_LogicOutput[] = { EDIF_TOK_PORTLIST, EDIF_TOK_PORTREF,
- EDIF_TOK_NAME, EDIF_TOK_LOGICWAVEFORM
-};
-
-static short f_LogicPort[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA
-};
-static short f_LogicRef[] = { EDIF_TOK_NAME, EDIF_TOK_LIBRARYREF };
-
-static short f_LogicValue[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME,
- -EDIF_TOK_VOLTAGEMAP, -EDIF_TOK_CURRENTMAP,
- -EDIF_TOK_BOOLEANMAP, -EDIF_TOK_COMPOUND,
- -EDIF_TOK_WEAK, -EDIF_TOK_STRONG,
- -EDIF_TOK_DOMINATES, -EDIF_TOK_LOGICMAPOUTPUT,
- -EDIF_TOK_LOGICMAPINPUT,
- -EDIF_TOK_ISOLATED, EDIF_TOK_RESOLVES,
- EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA
-};
-
-static short f_LogicWaveform[] = { EDIF_TOK_NAME, EDIF_TOK_LOGICLIST,
- EDIF_TOK_LOGICONEOF, EDIF_TOK_IGNORE
-};
-
-static short f_Maintain[] = { EDIF_TOK_NAME, EDIF_TOK_PORTREF, EDIF_TOK_DELAY,
- EDIF_TOK_LOADDELAY
-};
-
-static short f_Match[] = { EDIF_TOK_NAME, EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
- EDIF_TOK_LOGICLIST, EDIF_TOK_LOGICONEOF
-};
-static short f_Member[] = { EDIF_TOK_NAME };
-
-static short f_MiNoMax[] = { EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_MINOMAXDISPLAY,
- EDIF_TOK_MINOMAX
-};
-static short f_MiNoMaxDisplay[] = { EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_DISPLAY };
-
-static short f_Mnm[] = { EDIF_TOK_E, EDIF_TOK_UNDEFINED,
- EDIF_TOK_UNCONSTRAINED
-};
-static short f_MultipleValueSet[] = { EDIF_TOK_RANGEVECTOR };
-
-static short f_MustJoin[] = { EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
- EDIF_TOK_WEAKJOINED, EDIF_TOK_JOINED
-};
-static short f_Name[] = { EDIF_TOK_DISPLAY };
-
-static short f_Net[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME, -EDIF_TOK_CRITICALITY,
- EDIF_TOK_NETDELAY, EDIF_TOK_FIGURE, EDIF_TOK_NET,
- EDIF_TOK_INSTANCE, EDIF_TOK_COMMENTGRAPHICS,
- EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA, EDIF_TOK_JOINED, EDIF_TOK_ARRAY
-};
-
-static short f_NetBackAnnotate[] = { EDIF_TOK_NETREF, EDIF_TOK_NETDELAY,
- -EDIF_TOK_CRITICALITY, EDIF_TOK_PROPERTY,
- EDIF_TOK_COMMENT
-};
-
-static short f_NetBundle[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
- EDIF_TOK_LISTOFNETS, EDIF_TOK_FIGURE,
- EDIF_TOK_COMMENTGRAPHICS, EDIF_TOK_PROPERTY,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA
-};
-
-static short f_NetDelay[] = { EDIF_TOK_DERIVATION, EDIF_TOK_DELAY,
- EDIF_TOK_TRANSITION, EDIF_TOK_BECOMES
-};
-static short f_NetGroup[] = { EDIF_TOK_NAME, EDIF_TOK_MEMBER, EDIF_TOK_NETREF };
-
-static short f_NetMap[] = { EDIF_TOK_NETREF, EDIF_TOK_NETGROUP,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA
-};
-
-static short f_NetRef[] = { EDIF_TOK_NAME, EDIF_TOK_MEMBER, EDIF_TOK_NETREF,
- EDIF_TOK_INSTANCEREF, EDIF_TOK_VIEWREF
-};
-static short f_NonPermutable[] = { EDIF_TOK_PORTREF, EDIF_TOK_PERMUTABLE };
-
-static short f_NotAllowed[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA
-};
-
-static short f_NotchSpacing[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
- EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
- EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
- EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA
-};
-static short f_Number[] = { EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY, EDIF_TOK_NUMBER };
-
-static short f_NumberDefinition[] = { EDIF_TOK_SCALE, -EDIF_TOK_GRIDMAP,
- EDIF_TOK_COMMENT
-};
-static short f_NumberDisplay[] = { EDIF_TOK_E, EDIF_TOK_DISPLAY };
-
-static short f_OffPageConnector[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME,
- -EDIF_TOK_UNUSED, EDIF_TOK_PROPERTY,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA
-};
-static short f_OffsetEvent[] = { EDIF_TOK_EVENT, EDIF_TOK_E };
-static short f_OpenShape[] = { EDIF_TOK_CURVE, EDIF_TOK_PROPERTY };
-static short f_Origin[] = { EDIF_TOK_PT };
-
-static short f_OverhangDistance[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
- EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
- EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
- EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA
-};
-
-static short f_OverlapDistance[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
- EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
- EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
- EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA
-};
-
-static short f_Oversize[] = { EDIF_TOK_FIGUREGROUPREF, EDIF_TOK_INTERSECTION,
- EDIF_TOK_UNION, EDIF_TOK_DIFFERENCE,
- EDIF_TOK_INVERSE, EDIF_TOK_OVERSIZE,
- EDIF_TOK_CORNERTYPE
-};
-
-static short f_Page[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
- EDIF_TOK_INSTANCE, EDIF_TOK_NET, EDIF_TOK_NETBUNDLE,
- EDIF_TOK_COMMENTGRAPHICS, EDIF_TOK_PORTIMPLEMENTATION,
- -EDIF_TOK_PAGESIZE, -EDIF_TOK_BOUNDINGBOX,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA
-};
-static short f_PageSize[] = { EDIF_TOK_RECTANGLE };
-
-static short f_Parameter[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
- EDIF_TOK_BOOLEAN, EDIF_TOK_INTEGER,
- EDIF_TOK_MINOMAX, EDIF_TOK_NUMBER,
- EDIF_TOK_POINT, EDIF_TOK_STRING
-};
-
-static short f_ParameterAssign[] = { EDIF_TOK_NAME, EDIF_TOK_MEMBER,
- EDIF_TOK_BOOLEAN, EDIF_TOK_INTEGER,
- EDIF_TOK_MINOMAX, EDIF_TOK_NUMBER, EDIF_TOK_POINT,
- EDIF_TOK_STRING
-};
-
-static short f_ParameterDisplay[] = { EDIF_TOK_NAME, EDIF_TOK_MEMBER,
- EDIF_TOK_DISPLAY
-};
-static short f_Path[] = { EDIF_TOK_POINTLIST, EDIF_TOK_PROPERTY };
-static short f_PathDelay[] = { EDIF_TOK_DELAY, EDIF_TOK_EVENT };
-
-static short f_Permutable[] = { EDIF_TOK_PORTREF, EDIF_TOK_PERMUTABLE,
- EDIF_TOK_NONPERMUTABLE
-};
-
-static short f_PhysicalDesignRule[] = { EDIF_TOK_FIGUREWIDTH,
- EDIF_TOK_FIGUREAREA,
- EDIF_TOK_RECTANGLESIZE,
- EDIF_TOK_FIGUREPERIMETER,
- EDIF_TOK_OVERLAPDISTANCE,
- EDIF_TOK_OVERHANGDISTANCE,
- EDIF_TOK_ENCLOSUREDISTANCE,
- EDIF_TOK_INTERFIGUREGROUPSPACING,
- EDIF_TOK_NOTCHSPACING,
- EDIF_TOK_INTRAFIGUREGROUPSPACING,
- EDIF_TOK_NOTALLOWED,
- EDIF_TOK_FIGUREGROUP, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA
-};
-static short f_Plug[] = { EDIF_TOK_SOCKETSET };
-
-static short f_Point[] = { EDIF_TOK_PT, EDIF_TOK_POINTDISPLAY,
- EDIF_TOK_POINT
-};
-static short f_PointDisplay[] = { EDIF_TOK_PT, EDIF_TOK_DISPLAY };
-static short f_PointList[] = { EDIF_TOK_PT };
-static short f_Polygon[] = { EDIF_TOK_POINTLIST, EDIF_TOK_PROPERTY };
-
-static short f_Port[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
- -EDIF_TOK_DIRECTION, -EDIF_TOK_UNUSED,
- EDIF_TOK_PORTDELAY, -EDIF_TOK_DESIGNATOR,
- -EDIF_TOK_DCFANINLOAD, -EDIF_TOK_DCFANOUTLOAD,
- -EDIF_TOK_DCMAXFANIN, -EDIF_TOK_DCMAXFANOUT,
- -EDIF_TOK_ACLOAD, EDIF_TOK_PROPERTY,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA
-};
-
-static short f_PortBackAnnotate[] = { EDIF_TOK_PORTREF, -EDIF_TOK_DESIGNATOR,
- EDIF_TOK_PORTDELAY, -EDIF_TOK_DCFANINLOAD,
- -EDIF_TOK_DCFANOUTLOAD,
- -EDIF_TOK_DCMAXFANIN,
- -EDIF_TOK_DCMAXFANOUT, -EDIF_TOK_ACLOAD,
- EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT
-};
-
-static short f_PortBundle[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
- EDIF_TOK_LISTOFPORTS, EDIF_TOK_PROPERTY,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA
-};
-
-static short f_PortDelay[] = { EDIF_TOK_DERIVATION, EDIF_TOK_DELAY,
- EDIF_TOK_LOADDELAY, EDIF_TOK_TRANSITION,
- EDIF_TOK_BECOMES
-};
-
-static short f_PortGroup[] = { EDIF_TOK_NAME, EDIF_TOK_MEMBER,
- EDIF_TOK_PORTREF
-};
-
-static short f_PortImplementation[] = { EDIF_TOK_PORTREF, EDIF_TOK_NAME, EDIF_TOK_MEMBER,
- -EDIF_TOK_CONNECTLOCATION,
- EDIF_TOK_FIGURE, EDIF_TOK_INSTANCE,
- EDIF_TOK_COMMENTGRAPHICS,
- EDIF_TOK_PROPERTYDISPLAY,
- EDIF_TOK_KEYWORDDISPLAY,
- EDIF_TOK_PROPERTY,
- EDIF_TOK_USERDATA, EDIF_TOK_COMMENT
-};
-
-static short f_PortInstance[] = { EDIF_TOK_PORTREF, EDIF_TOK_NAME,
- EDIF_TOK_MEMBER, -EDIF_TOK_UNUSED,
- EDIF_TOK_PORTDELAY, -EDIF_TOK_DESIGNATOR,
- -EDIF_TOK_DCFANINLOAD,
- -EDIF_TOK_DCFANOUTLOAD, -EDIF_TOK_DCMAXFANIN,
- -EDIF_TOK_DCMAXFANOUT, -EDIF_TOK_ACLOAD,
- EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA
-};
-
-static short f_PortList[] = { EDIF_TOK_PORTREF, EDIF_TOK_NAME,
- EDIF_TOK_MEMBER
-};
-
-static short f_PortListAlias[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_ARRAY, EDIF_TOK_PORTLIST
-};
-
-static short f_PortMap[] = { EDIF_TOK_PORTREF, EDIF_TOK_PORTGROUP,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA
-};
-
-static short f_PortRef[] = { EDIF_TOK_NAME, EDIF_TOK_MEMBER,
- EDIF_TOK_PORTREF, EDIF_TOK_INSTANCEREF,
- EDIF_TOK_VIEWREF
-};
-static short f_Program[] = { EDIF_TOK_VERSION };
-
-static short f_Property[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_BOOLEAN,
- EDIF_TOK_INTEGER, EDIF_TOK_MINOMAX,
- EDIF_TOK_NUMBER, EDIF_TOK_POINT, EDIF_TOK_STRING,
- -EDIF_TOK_OWNER, -EDIF_TOK_UNIT,
- EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT
-};
-static short f_PropertyDisplay[] = { EDIF_TOK_NAME, EDIF_TOK_DISPLAY };
-
-static short f_ProtectionFrame[] = { EDIF_TOK_PORTIMPLEMENTATION,
- EDIF_TOK_FIGURE, EDIF_TOK_INSTANCE,
- EDIF_TOK_COMMENTGRAPHICS,
- -EDIF_TOK_BOUNDINGBOX,
- EDIF_TOK_PROPERTYDISPLAY,
- EDIF_TOK_KEYWORDDISPLAY,
- EDIF_TOK_PARAMETERDISPLAY,
- EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA
-};
-
-static short f_RangeVector[] = { EDIF_TOK_LESSTHAN, EDIF_TOK_GREATERTHAN,
- EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
- EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN,
- EDIF_TOK_SINGLEVALUESET
-};
-static short f_Rectangle[] = { EDIF_TOK_PT, EDIF_TOK_PROPERTY };
-
-static short f_RectangleSize[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_FIGUREGROUPOBJECT,
- EDIF_TOK_RANGEVECTOR,
- EDIF_TOK_MULTIPLEVALUESET, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA
-};
-static short f_Rename[] = { EDIF_TOK_NAME, EDIF_TOK_STRINGDISPLAY };
-static short f_Resolves[] = { EDIF_TOK_NAME };
-static short f_Scale[] = { EDIF_TOK_E, EDIF_TOK_UNIT };
-static short f_Section[] = { EDIF_TOK_SECTION, EDIF_TOK_INSTANCE };
-static short f_Shape[] = { EDIF_TOK_CURVE, EDIF_TOK_PROPERTY };
-
-static short f_Simulate[] = { EDIF_TOK_NAME, EDIF_TOK_PORTLISTALIAS,
- EDIF_TOK_WAVEVALUE, EDIF_TOK_APPLY,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA
-};
-
-static short f_SimulationInfo[] = { EDIF_TOK_LOGICVALUE, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA
-};
-
-static short f_SingleValueSet[] = { EDIF_TOK_LESSTHAN, EDIF_TOK_GREATERTHAN,
- EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
- EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN
-};
-static short f_Site[] = { EDIF_TOK_VIEWREF, EDIF_TOK_TRANSFORM };
-static short f_Socket[] = { EDIF_TOK_SYMMETRY };
-static short f_SocketSet[] = { EDIF_TOK_SYMMETRY, EDIF_TOK_SITE };
-
-static short f_Status[] = { EDIF_TOK_WRITTEN, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA
-};
-
-static short f_Steady[] = { EDIF_TOK_NAME, EDIF_TOK_MEMBER, EDIF_TOK_PORTREF,
- EDIF_TOK_PORTLIST, EDIF_TOK_DURATION,
- EDIF_TOK_TRANSITION, EDIF_TOK_BECOMES
-};
-static short f_String[] = { EDIF_TOK_STRINGDISPLAY, EDIF_TOK_STRING };
-static short f_StringDisplay[] = { EDIF_TOK_DISPLAY };
-static short f_Strong[] = { EDIF_TOK_NAME };
-
-static short f_Symbol[] = { EDIF_TOK_PORTIMPLEMENTATION, EDIF_TOK_FIGURE,
- EDIF_TOK_INSTANCE, EDIF_TOK_COMMENTGRAPHICS,
- EDIF_TOK_ANNOTATE, -EDIF_TOK_PAGESIZE,
- -EDIF_TOK_BOUNDINGBOX, EDIF_TOK_PROPERTYDISPLAY,
- EDIF_TOK_KEYWORDDISPLAY, EDIF_TOK_PARAMETERDISPLAY,
- EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA
-};
-static short f_Symmetry[] = { EDIF_TOK_TRANSFORM };
-static short f_Table[] = { EDIF_TOK_ENTRY, EDIF_TOK_TABLEDEFAULT };
-
-static short f_TableDefault[] = { EDIF_TOK_LOGICREF, EDIF_TOK_PORTREF,
- EDIF_TOK_NOCHANGE, EDIF_TOK_TABLE,
- EDIF_TOK_DELAY, EDIF_TOK_LOADDELAY
-};
-
-static short f_Technology[] = { EDIF_TOK_NUMBERDEFINITION, EDIF_TOK_FIGUREGROUP,
- EDIF_TOK_FABRICATE, -EDIF_TOK_SIMULATIONINFO,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA,
- -EDIF_TOK_PHYSICALDESIGNRULE
-};
-
-static short f_TimeInterval[] = { EDIF_TOK_EVENT, EDIF_TOK_OFFSETEVENT,
- EDIF_TOK_DURATION
-};
-
-static short f_Timing[] = { EDIF_TOK_DERIVATION, EDIF_TOK_PATHDELAY,
- EDIF_TOK_FORBIDDENEVENT, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA
-};
-
-static short f_Transform[] = { EDIF_TOK_SCALEX, EDIF_TOK_SCALEY, EDIF_TOK_DELTA,
- EDIF_TOK_ORIENTATION, EDIF_TOK_ORIGIN
-};
-
-static short f_Transition[] = { EDIF_TOK_NAME, EDIF_TOK_LOGICLIST,
- EDIF_TOK_LOGICONEOF
-};
-
-static short f_Trigger[] = { EDIF_TOK_CHANGE, EDIF_TOK_STEADY,
- EDIF_TOK_INITIAL
-};
-
-static short f_Union[] = { EDIF_TOK_FIGUREGROUPREF, EDIF_TOK_INTERSECTION,
- EDIF_TOK_UNION, EDIF_TOK_DIFFERENCE,
- EDIF_TOK_INVERSE, EDIF_TOK_OVERSIZE
-};
-
-static short f_View[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_VIEWTYPE,
- EDIF_TOK_INTERFACE, -EDIF_TOK_STATUS,
- -EDIF_TOK_CONTENTS, EDIF_TOK_COMMENT,
- EDIF_TOK_PROPERTY, EDIF_TOK_USERDATA
-};
-static short f_ViewList[] = { EDIF_TOK_VIEWREF, EDIF_TOK_VIEWLIST };
-
-static short f_ViewMap[] = { EDIF_TOK_PORTMAP, EDIF_TOK_PORTBACKANNOTATE,
- EDIF_TOK_INSTANCEMAP,
- EDIF_TOK_INSTANCEBACKANNOTATE, EDIF_TOK_NETMAP,
- EDIF_TOK_NETBACKANNOTATE, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA
-};
-static short f_ViewRef[] = { EDIF_TOK_NAME, EDIF_TOK_CELLREF };
-static short f_Visible[] = { EDIF_TOK_FALSE, EDIF_TOK_TRUE };
-static short f_VoltageMap[] = { EDIF_TOK_MNM, EDIF_TOK_E };
-
-static short f_WaveValue[] = { EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_E,
- EDIF_TOK_LOGICWAVEFORM
-};
-static short f_Weak[] = { EDIF_TOK_NAME };
-
-static short f_WeakJoined[] = { EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
- EDIF_TOK_JOINED
-};
-
-static short f_When[] = { EDIF_TOK_TRIGGER, EDIF_TOK_AFTER,
- EDIF_TOK_FOLLOW, EDIF_TOK_MAINTAIN,
- EDIF_TOK_LOGICASSIGN, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA
-};
-
-static short f_Written[] = { EDIF_TOK_TIMESTAMP, EDIF_TOK_AUTHOR,
- EDIF_TOK_PROGRAM, EDIF_TOK_DATAORIGIN,
- EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA
-};
-
-/*
- * Context binding table:
- *
- * This binds context follower arrays to their originating context.
- */
-typedef struct Binder {
- short *Follower; /* pointer to follower array */
- short Origin; /* '%token' value of origin */
- short FollowerSize; /* size of follower array */
-} Binder;
-#define BE(f,o) {f,o,sizeof(f)/sizeof(short)}
-static Binder BinderDef[] = {
- BE(f_NULL, 0),
- BE(f_Edif, EDIF_TOK_EDIF),
- BE(f_AcLoad, EDIF_TOK_ACLOAD),
- BE(f_After, EDIF_TOK_AFTER),
- BE(f_Annotate, EDIF_TOK_ANNOTATE),
- BE(f_Apply, EDIF_TOK_APPLY),
- BE(f_Arc, EDIF_TOK_ARC),
- BE(f_Array, EDIF_TOK_ARRAY),
- BE(f_ArrayMacro, EDIF_TOK_ARRAYMACRO),
- BE(f_ArrayRelatedInfo, EDIF_TOK_ARRAYRELATEDINFO),
- BE(f_ArraySite, EDIF_TOK_ARRAYSITE),
- BE(f_AtLeast, EDIF_TOK_ATLEAST),
- BE(f_AtMost, EDIF_TOK_ATMOST),
- BE(f_Becomes, EDIF_TOK_BECOMES),
- BE(f_Boolean, EDIF_TOK_BOOLEAN),
- BE(f_BooleanDisplay, EDIF_TOK_BOOLEANDISPLAY),
- BE(f_BooleanMap, EDIF_TOK_BOOLEANMAP),
- BE(f_BorderPattern, EDIF_TOK_BORDERPATTERN),
- BE(f_BoundingBox, EDIF_TOK_BOUNDINGBOX),
- BE(f_Cell, EDIF_TOK_CELL),
- BE(f_CellRef, EDIF_TOK_CELLREF),
- BE(f_Change, EDIF_TOK_CHANGE),
- BE(f_Circle, EDIF_TOK_CIRCLE),
- BE(f_Color, EDIF_TOK_COLOR),
- BE(f_CommentGraphics, EDIF_TOK_COMMENTGRAPHICS),
- BE(f_Compound, EDIF_TOK_COMPOUND),
- BE(f_ConnectLocation, EDIF_TOK_CONNECTLOCATION),
- BE(f_Contents, EDIF_TOK_CONTENTS),
- BE(f_Criticality, EDIF_TOK_CRITICALITY),
- BE(f_CurrentMap, EDIF_TOK_CURRENTMAP),
- BE(f_Curve, EDIF_TOK_CURVE),
- BE(f_Cycle, EDIF_TOK_CYCLE),
- BE(f_DataOrigin, EDIF_TOK_DATAORIGIN),
- BE(f_DcFanInLoad, EDIF_TOK_DCFANINLOAD),
- BE(f_DcFanOutLoad, EDIF_TOK_DCFANOUTLOAD),
- BE(f_DcMaxFanIn, EDIF_TOK_DCMAXFANIN),
- BE(f_DcMaxFanOut, EDIF_TOK_DCMAXFANOUT),
- BE(f_Delay, EDIF_TOK_DELAY),
- BE(f_Delta, EDIF_TOK_DELTA),
- BE(f_Design, EDIF_TOK_DESIGN),
- BE(f_Designator, EDIF_TOK_DESIGNATOR),
- BE(f_Difference, EDIF_TOK_DIFFERENCE),
- BE(f_Display, EDIF_TOK_DISPLAY),
- BE(f_Dominates, EDIF_TOK_DOMINATES),
- BE(f_Dot, EDIF_TOK_DOT),
- BE(f_Duration, EDIF_TOK_DURATION),
- BE(f_EnclosureDistance, EDIF_TOK_ENCLOSUREDISTANCE),
- BE(f_Entry, EDIF_TOK_ENTRY),
- BE(f_Exactly, EDIF_TOK_EXACTLY),
- BE(f_External, EDIF_TOK_EXTERNAL),
- BE(f_Fabricate, EDIF_TOK_FABRICATE),
- BE(f_Figure, EDIF_TOK_FIGURE),
- BE(f_FigureArea, EDIF_TOK_FIGUREAREA),
- BE(f_FigureGroup, EDIF_TOK_FIGUREGROUP),
- BE(f_FigureGroupObject, EDIF_TOK_FIGUREGROUPOBJECT),
- BE(f_FigureGroupOverride, EDIF_TOK_FIGUREGROUPOVERRIDE),
- BE(f_FigureGroupRef, EDIF_TOK_FIGUREGROUPREF),
- BE(f_FigurePerimeter, EDIF_TOK_FIGUREPERIMETER),
- BE(f_FigureWidth, EDIF_TOK_FIGUREWIDTH),
- BE(f_FillPattern, EDIF_TOK_FILLPATTERN),
- BE(f_Follow, EDIF_TOK_FOLLOW),
- BE(f_ForbiddenEvent, EDIF_TOK_FORBIDDENEVENT),
- BE(f_GlobalPortRef, EDIF_TOK_GLOBALPORTREF),
- BE(f_GreaterThan, EDIF_TOK_GREATERTHAN),
- BE(f_GridMap, EDIF_TOK_GRIDMAP),
- BE(f_IncludeFigureGroup, EDIF_TOK_INCLUDEFIGUREGROUP),
- BE(f_Instance, EDIF_TOK_INSTANCE),
- BE(f_InstanceBackAnnotate, EDIF_TOK_INSTANCEBACKANNOTATE),
- BE(f_InstanceGroup, EDIF_TOK_INSTANCEGROUP),
- BE(f_InstanceMap, EDIF_TOK_INSTANCEMAP),
- BE(f_InstanceRef, EDIF_TOK_INSTANCEREF),
- BE(f_Integer, EDIF_TOK_INTEGER),
- BE(f_IntegerDisplay, EDIF_TOK_INTEGERDISPLAY),
- BE(f_InterFigureGroupSpacing, EDIF_TOK_INTERFIGUREGROUPSPACING),
- BE(f_Interface, EDIF_TOK_INTERFACE),
- BE(f_Intersection, EDIF_TOK_INTERSECTION),
- BE(f_IntraFigureGroupSpacing, EDIF_TOK_INTRAFIGUREGROUPSPACING),
- BE(f_Inverse, EDIF_TOK_INVERSE),
- BE(f_Joined, EDIF_TOK_JOINED),
- BE(f_KeywordDisplay, EDIF_TOK_KEYWORDDISPLAY),
- BE(f_KeywordMap, EDIF_TOK_KEYWORDMAP),
- BE(f_LessThan, EDIF_TOK_LESSTHAN),
- BE(f_Library, EDIF_TOK_LIBRARY),
- BE(f_LibraryRef, EDIF_TOK_LIBRARYREF),
- BE(f_ListOfNets, EDIF_TOK_LISTOFNETS),
- BE(f_ListOfPorts, EDIF_TOK_LISTOFPORTS),
- BE(f_LoadDelay, EDIF_TOK_LOADDELAY),
- BE(f_LogicAssign, EDIF_TOK_LOGICASSIGN),
- BE(f_LogicInput, EDIF_TOK_LOGICINPUT),
- BE(f_LogicList, EDIF_TOK_LOGICLIST),
- BE(f_LogicMapInput, EDIF_TOK_LOGICMAPINPUT),
- BE(f_LogicMapOutput, EDIF_TOK_LOGICMAPOUTPUT),
- BE(f_LogicOneOf, EDIF_TOK_LOGICONEOF),
- BE(f_LogicOutput, EDIF_TOK_LOGICOUTPUT),
- BE(f_LogicPort, EDIF_TOK_LOGICPORT),
- BE(f_LogicRef, EDIF_TOK_LOGICREF),
- BE(f_LogicValue, EDIF_TOK_LOGICVALUE),
- BE(f_LogicWaveform, EDIF_TOK_LOGICWAVEFORM),
- BE(f_Maintain, EDIF_TOK_MAINTAIN),
- BE(f_Match, EDIF_TOK_MATCH),
- BE(f_Member, EDIF_TOK_MEMBER),
- BE(f_MiNoMax, EDIF_TOK_MINOMAX),
- BE(f_MiNoMaxDisplay, EDIF_TOK_MINOMAXDISPLAY),
- BE(f_Mnm, EDIF_TOK_MNM),
- BE(f_MultipleValueSet, EDIF_TOK_MULTIPLEVALUESET),
- BE(f_MustJoin, EDIF_TOK_MUSTJOIN),
- BE(f_Name, EDIF_TOK_NAME),
- BE(f_Net, EDIF_TOK_NET),
- BE(f_NetBackAnnotate, EDIF_TOK_NETBACKANNOTATE),
- BE(f_NetBundle, EDIF_TOK_NETBUNDLE),
- BE(f_NetDelay, EDIF_TOK_NETDELAY),
- BE(f_NetGroup, EDIF_TOK_NETGROUP),
- BE(f_NetMap, EDIF_TOK_NETMAP),
- BE(f_NetRef, EDIF_TOK_NETREF),
- BE(f_NonPermutable, EDIF_TOK_NONPERMUTABLE),
- BE(f_NotAllowed, EDIF_TOK_NOTALLOWED),
- BE(f_NotchSpacing, EDIF_TOK_NOTCHSPACING),
- BE(f_Number, EDIF_TOK_NUMBER),
- BE(f_NumberDefinition, EDIF_TOK_NUMBERDEFINITION),
- BE(f_NumberDisplay, EDIF_TOK_NUMBERDISPLAY),
- BE(f_OffPageConnector, EDIF_TOK_OFFPAGECONNECTOR),
- BE(f_OffsetEvent, EDIF_TOK_OFFSETEVENT),
- BE(f_OpenShape, EDIF_TOK_OPENSHAPE),
- BE(f_Origin, EDIF_TOK_ORIGIN),
- BE(f_OverhangDistance, EDIF_TOK_OVERHANGDISTANCE),
- BE(f_OverlapDistance, EDIF_TOK_OVERLAPDISTANCE),
- BE(f_Oversize, EDIF_TOK_OVERSIZE),
- BE(f_Page, EDIF_TOK_PAGE),
- BE(f_PageSize, EDIF_TOK_PAGESIZE),
- BE(f_Parameter, EDIF_TOK_PARAMETER),
- BE(f_ParameterAssign, EDIF_TOK_PARAMETERASSIGN),
- BE(f_ParameterDisplay, EDIF_TOK_PARAMETERDISPLAY),
- BE(f_Path, EDIF_TOK_PATH),
- BE(f_PathDelay, EDIF_TOK_PATHDELAY),
- BE(f_Permutable, EDIF_TOK_PERMUTABLE),
- BE(f_PhysicalDesignRule, EDIF_TOK_PHYSICALDESIGNRULE),
- BE(f_Plug, EDIF_TOK_PLUG),
- BE(f_Point, EDIF_TOK_POINT),
- BE(f_PointDisplay, EDIF_TOK_POINTDISPLAY),
- BE(f_PointList, EDIF_TOK_POINTLIST),
- BE(f_Polygon, EDIF_TOK_POLYGON),
- BE(f_Port, EDIF_TOK_PORT),
- BE(f_PortBackAnnotate, EDIF_TOK_PORTBACKANNOTATE),
- BE(f_PortBundle, EDIF_TOK_PORTBUNDLE),
- BE(f_PortDelay, EDIF_TOK_PORTDELAY),
- BE(f_PortGroup, EDIF_TOK_PORTGROUP),
- BE(f_PortImplementation, EDIF_TOK_PORTIMPLEMENTATION),
- BE(f_PortInstance, EDIF_TOK_PORTINSTANCE),
- BE(f_PortList, EDIF_TOK_PORTLIST),
- BE(f_PortListAlias, EDIF_TOK_PORTLISTALIAS),
- BE(f_PortMap, EDIF_TOK_PORTMAP),
- BE(f_PortRef, EDIF_TOK_PORTREF),
- BE(f_Program, EDIF_TOK_PROGRAM),
- BE(f_Property, EDIF_TOK_PROPERTY),
- BE(f_PropertyDisplay, EDIF_TOK_PROPERTYDISPLAY),
- BE(f_ProtectionFrame, EDIF_TOK_PROTECTIONFRAME),
- BE(f_RangeVector, EDIF_TOK_RANGEVECTOR),
- BE(f_Rectangle, EDIF_TOK_RECTANGLE),
- BE(f_RectangleSize, EDIF_TOK_RECTANGLESIZE),
- BE(f_Rename, EDIF_TOK_RENAME),
- BE(f_Resolves, EDIF_TOK_RESOLVES),
- BE(f_Scale, EDIF_TOK_SCALE),
- BE(f_Section, EDIF_TOK_SECTION),
- BE(f_Shape, EDIF_TOK_SHAPE),
- BE(f_Simulate, EDIF_TOK_SIMULATE),
- BE(f_SimulationInfo, EDIF_TOK_SIMULATIONINFO),
- BE(f_SingleValueSet, EDIF_TOK_SINGLEVALUESET),
- BE(f_Site, EDIF_TOK_SITE),
- BE(f_Socket, EDIF_TOK_SOCKET),
- BE(f_SocketSet, EDIF_TOK_SOCKETSET),
- BE(f_Status, EDIF_TOK_STATUS),
- BE(f_Steady, EDIF_TOK_STEADY),
- BE(f_String, EDIF_TOK_STRING),
- BE(f_StringDisplay, EDIF_TOK_STRINGDISPLAY),
- BE(f_Strong, EDIF_TOK_STRONG),
- BE(f_Symbol, EDIF_TOK_SYMBOL),
- BE(f_Symmetry, EDIF_TOK_SYMMETRY),
- BE(f_Table, EDIF_TOK_TABLE),
- BE(f_TableDefault, EDIF_TOK_TABLEDEFAULT),
- BE(f_Technology, EDIF_TOK_TECHNOLOGY),
- BE(f_TimeInterval, EDIF_TOK_TIMEINTERVAL),
- BE(f_Timing, EDIF_TOK_TIMING),
- BE(f_Transform, EDIF_TOK_TRANSFORM),
- BE(f_Transition, EDIF_TOK_TRANSITION),
- BE(f_Trigger, EDIF_TOK_TRIGGER),
- BE(f_Union, EDIF_TOK_UNION),
- BE(f_View, EDIF_TOK_VIEW),
- BE(f_ViewList, EDIF_TOK_VIEWLIST),
- BE(f_ViewMap, EDIF_TOK_VIEWMAP),
- BE(f_ViewRef, EDIF_TOK_VIEWREF),
- BE(f_Visible, EDIF_TOK_VISIBLE),
- BE(f_VoltageMap, EDIF_TOK_VOLTAGEMAP),
- BE(f_WaveValue, EDIF_TOK_WAVEVALUE),
- BE(f_Weak, EDIF_TOK_WEAK),
- BE(f_WeakJoined, EDIF_TOK_WEAKJOINED),
- BE(f_When, EDIF_TOK_WHEN),
- BE(f_Written, EDIF_TOK_WRITTEN)
-};
-
-static int BinderDefSize = sizeof(BinderDef) / sizeof(Binder);
-/*
- * Keyword table:
- *
- * This hash table holds all strings which may have to be matched
- * to. WARNING: it is assumed that there is no overlap of the 'token'
- * and 'context' strings.
- */
-typedef struct Keyword {
- struct Keyword *Next; /* pointer to next entry */
- char *String; /* pointer to associated string */
-} Keyword;
-#define KEYWORD_HASH 127 /* hash table size */
-static Keyword *KeywordTable[KEYWORD_HASH];
-/*
- * Enter keyword:
- *
- * The passed string is entered into the keyword hash table.
- */
-static void EnterKeyword(char *str)
-{
- /*
- * Locals.
- */
- register Keyword *key;
- register unsigned int hsh;
- register char *cp;
- /*
- * Create the hash code, and add an entry to the table.
- */
- for (hsh = 0, cp = str; *cp; hsh += hsh + *cp++);
- hsh %= KEYWORD_HASH;
- key = (Keyword *) Malloc(sizeof(Keyword));
- key->Next = KeywordTable[hsh];
- (KeywordTable[hsh] = key)->String = str;
-}
-
-/*
- * Find keyword:
- *
- * The passed string is located within the keyword table. If an
- * entry exists, then the value of the keyword string is returned. This
- * is real useful for doing string comparisons by pointer value later.
- * If there is no match, a NULL is returned.
- */
-static char *FindKeyword(char *str)
-{
- /*
- * Locals.
- */
- register Keyword *wlk, *owk;
- register unsigned int hsh;
- register char *cp;
- char lower[IDENT_LENGTH + 1];
- /*
- * Create a lower case copy of the string.
- */
- for (cp = lower; *str;)
- if (isupper((int) *str))
- *cp++ = tolower((int) *str++);
- else
- *cp++ = *str++;
- *cp = '\0';
- /*
- * Search the hash table for a match.
- */
- for (hsh = 0, cp = lower; *cp; hsh += hsh + *cp++);
- hsh %= KEYWORD_HASH;
- for (owk = NULL, wlk = KeywordTable[hsh]; wlk; wlk = (owk = wlk)->Next)
- if (!strcmp(wlk->String, lower)) {
- /*
- * Readjust the LRU.
- */
- if (owk) {
- owk->Next = wlk->Next;
- wlk->Next = KeywordTable[hsh];
- KeywordTable[hsh] = wlk;
- }
- return (wlk->String);
- }
- return (NULL);
-}
-
-/*
- * Token hash table.
- */
-#define TOKEN_HASH 51
-static Token *TokenHash[TOKEN_HASH];
-/*
- * Find token:
- *
- * A pointer to the token of the passed code is returned. If
- * no such beastie is present a NULL is returned instead.
- */
-static Token *FindToken(register int cod)
-{
- /*
- * Locals.
- */
- register Token *wlk, *owk;
- register unsigned int hsh;
- /*
- * Search the hash table for a matching token.
- */
- hsh = cod % TOKEN_HASH;
- for (owk = NULL, wlk = TokenHash[hsh]; wlk; wlk = (owk = wlk)->Next)
- if (cod == wlk->Code) {
- if (owk) {
- owk->Next = wlk->Next;
- wlk->Next = TokenHash[hsh];
- TokenHash[hsh] = wlk;
- }
- break;
- }
- return (wlk);
-}
-
-/*
- * Context hash table.
- */
-#define CONTEXT_HASH 127
-static Context *ContextHash[CONTEXT_HASH];
-/*
- * Find context:
- *
- * A pointer to the context of the passed code is returned. If
- * no such beastie is present a NULL is returned instead.
- */
-static Context *FindContext(register int cod)
-{
- /*
- * Locals.
- */
- register Context *wlk, *owk;
- register unsigned int hsh;
- /*
- * Search the hash table for a matching context.
- */
- hsh = cod % CONTEXT_HASH;
- for (owk = NULL, wlk = ContextHash[hsh]; wlk; wlk = (owk = wlk)->Next)
- if (cod == wlk->Code) {
- if (owk) {
- owk->Next = wlk->Next;
- wlk->Next = ContextHash[hsh];
- ContextHash[hsh] = wlk;
- }
- break;
- }
- return (wlk);
-}
-
-/*
- * Token stacking variables.
- */
-#ifdef DEBUG
-#define TS_DEPTH 8
-#define TS_MASK (TS_DEPTH - 1)
-static unsigned int TSP = 0; /* token stack pointer */
-static char *TokenStack[TS_DEPTH]; /* token name strings */
-static short TokenType[TS_DEPTH]; /* token types */
-/*
- * Stack:
- *
- * Add a token to the debug stack. The passed string and type are
- * what is to be pushed.
- */
-static Stack(char *str, int typ)
-{
- /*
- * Free any previous string, then push.
- */
- if (TokenStack[TSP & TS_MASK])
- Free(TokenStack[TSP & TS_MASK]);
- TokenStack[TSP & TS_MASK] = strcpy((char *) Malloc(strlen(str) + 1), str);
- TokenType[TSP & TS_MASK] = typ;
- TSP += 1;
-}
-
-/*
- * Dump stack:
- *
- * This displays the last set of accumulated tokens.
- */
-static DumpStack()
-{
- /*
- * Locals.
- */
- register int i;
- register Context *cxt;
- register Token *tok;
- register char *nam;
- /*
- * Run through the list displaying the oldest first.
- */
- fprintf(Error, "\n\n");
- for (i = 0; i < TS_DEPTH; i += 1)
- if (TokenStack[(TSP + i) & TS_MASK]) {
- /*
- * Get the type name string.
- */
- if (cxt = FindContext(TokenType[(TSP + i) & TS_MASK]))
- nam = cxt->Name;
- else if (tok = FindToken(TokenType[(TSP + i) & TS_MASK]))
- nam = tok->Name;
- else
- switch (TokenType[(TSP + i) & TS_MASK]) {
- case IDENT:
- nam = "IDENT";
- break;
- case INT:
- nam = "INT";
- break;
- case KEYWORD:
- nam = "KEYWORD";
- break;
- case STR:
- nam = "STR";
- break;
- default:
- nam = "?";
- break;
- }
- /*
- * Now print the token state.
- */
- fprintf(Error, "%2d %-16.16s '%s'\n", TS_DEPTH - i, nam, TokenStack[(TSP + i) & TS_MASK]);
- }
- fprintf(Error, "\n");
-}
-#else
-#define Stack(s,t)
-#endif /* DEBUG */
-/*
- * Parser state variables.
- */
-static FILE *Input = NULL; /* input stream */
-static FILE *Error = NULL; /* error stream */
-static char *InFile; /* file name on the input stream */
-static long LineNumber; /* current input line number */
-static ContextCar *CSP = NULL; /* top of context stack */
-static char yytext[IDENT_LENGTH + 1]; /* token buffer */
-static char CharBuf[IDENT_LENGTH + 1]; /* garbage buffer */
-/*
- * yyerror:
- *
- * Standard error reporter, it prints out the passed string
- * preceeded by the current filename and line number.
- */
-static void yyerror(const char *ers)
-{
-#ifdef DEBUG
- DumpStack();
-#endif /* DEBUG */
- fprintf(Error, "%s, line %ld: %s\n", InFile, LineNumber, ers);
-}
-
-/*
- * String bucket definitions.
- */
-#define BUCKET_SIZE 64
-typedef struct Bucket {
- struct Bucket *Next; /* pointer to next bucket */
- int Index; /* pointer to next free slot */
- char Data[BUCKET_SIZE]; /* string data */
-} Bucket;
-static Bucket *CurrentBucket = NULL; /* string bucket list */
-static int StringSize = 0; /* current string length */
-/*
- * Push string:
- *
- * This adds the passed charater to the current string bucket.
- */
-static void PushString(char chr)
-{
- /*
- * Locals.
- */
- register Bucket *bck;
- /*
- * Make sure there is room for the push.
- */
- if ((bck = CurrentBucket)->Index >= BUCKET_SIZE) {
- bck = (Bucket *) Malloc(sizeof(Bucket));
- bck->Next = CurrentBucket;
- (CurrentBucket = bck)->Index = 0;
- }
- /*
- * Push the character.
- */
- bck->Data[bck->Index++] = chr;
- StringSize += 1;
-}
-
-/*
- * Form string:
- *
- * This converts the current string bucket into a real live string,
- * whose pointer is returned.
- */
-static char *FormString()
-{
- /*
- * Locals.
- */
- register Bucket *bck;
- register char *cp;
- /*
- * Allocate space for the string, set the pointer at the end.
- */
- cp = (char *) Malloc(StringSize + 1);
-
- cp += StringSize;
- *cp-- = '\0';
- /*
- * Yank characters out of the bucket.
- */
- for (bck = CurrentBucket; bck->Index || bck->Next;) {
- if (!bck->Index) {
- CurrentBucket = bck->Next;
- Free(bck);
- bck = CurrentBucket;
- }
- *cp-- = bck->Data[--bck->Index];
- }
- /* reset buffer size to zero */
- StringSize = 0;
- return (cp + 1);
-}
-
-/*
- * Parse EDIF:
- *
- * This builds the context tree and then calls the real parser.
- * It is passed two file streams, the first is where the input comes
- * from; the second is where error messages get printed.
- */
-void ParseEDIF(char *filename, FILE * err)
-{
- /*
- * Locals.
- */
- register int i;
- static int ContextDefined = 1;
- /*
- * Set up the file state to something useful.
- */
- InFile = filename;
- Input = fopen(filename, "r");
- Error = err;
- LineNumber = 1;
- /*
- * Define both the enabled token and context strings.
- */
- if (ContextDefined) {
- for (i = TokenDefSize; i--; EnterKeyword(TokenDef[i].Name)) {
- register unsigned int hsh;
- hsh = TokenDef[i].Code % TOKEN_HASH;
- TokenDef[i].Next = TokenHash[hsh];
- TokenHash[hsh] = &TokenDef[i];
- }
- for (i = ContextDefSize; i--; EnterKeyword(ContextDef[i].Name)) {
- register unsigned int hsh;
- hsh = ContextDef[i].Code % CONTEXT_HASH;
- ContextDef[i].Next = ContextHash[hsh];
- ContextHash[hsh] = &ContextDef[i];
- }
- /*
- * Build the context tree.
- */
- for (i = BinderDefSize; i--;) {
- register Context *cxt;
- register int j;
- /*
- * Define the current context to have carriers bound to it.
- */
- cxt = FindContext(BinderDef[i].Origin);
- for (j = BinderDef[i].FollowerSize; j--;) {
- register ContextCar *cc;
- /*
- * Add carriers to the current context.
- */
- cc = (ContextCar *) Malloc(sizeof(ContextCar));
- cc->Next = cxt->Context;
- (cxt->Context = cc)->Context = FindContext(ABS(BinderDef[i].Follower[j]));
- cc->u.Single = BinderDef[i].Follower[j] < 0;
- }
- }
- /*
- * Build the token tree.
- */
- for (i = TieDefSize; i--;) {
- register Context *cxt;
- register int j;
- /*
- * Define the current context to have carriers bound to it.
- */
- cxt = FindContext(TieDef[i].Origin);
- for (j = TieDef[i].EnableSize; j--;) {
- register TokenCar *tc;
- /*
- * Add carriers to the current context.
- */
- tc = (TokenCar *) Malloc(sizeof(TokenCar));
- tc->Next = cxt->Token;
- (cxt->Token = tc)->Token = FindToken(TieDef[i].Enable[j]);
- }
- }
- /*
- * Put a bogus context on the stack which has 'EDIF' as its
- * follower.
- */
- CSP = (ContextCar *) Malloc(sizeof(ContextCar));
- CSP->Next = NULL;
- CSP->Context = FindContext(0);
- CSP->u.Used = NULL;
- ContextDefined = 0;
- }
- /*
- * Create an initial, empty string bucket.
- */
- CurrentBucket = (Bucket *) Malloc(sizeof(Bucket));
- CurrentBucket->Next = 0;
- CurrentBucket->Index = 0;
- /*
- * Fill the token stack with NULLs if debugging is enabled.
- */
-#ifdef DEBUG
- for (i = TS_DEPTH; i--; TokenStack[i] = NULL)
- if (TokenStack[i])
- Free(TokenStack[i]);
- TSP = 0;
-#endif /* DEBUG */
- /*
- * Go parse things!
- */
- edifparse();
-}
-
-/*
- * Match token:
- *
- * The passed string is looked up in the current context's token
- * list to see if it is enabled. If so the token value is returned,
- * if not then zero.
- */
-static int MatchToken(register char *str)
-{
- /*
- * Locals.
- */
- register TokenCar *wlk, *owk;
- /*
- * Convert the string to the proper form, then search the token
- * carrier list for a match.
- */
- str = FindKeyword(str);
- for (owk = NULL, wlk = CSP->Context->Token; wlk; wlk = (owk = wlk)->Next)
- if (str == wlk->Token->Name) {
- if (owk) {
- owk->Next = wlk->Next;
- wlk->Next = CSP->Context->Token;
- CSP->Context->Token = wlk;
- }
- return (wlk->Token->Code);
- }
- return (0);
-}
-
-/*
- * Match context:
- *
- * If the passed keyword string is within the current context, the
- * new context is pushed and token value is returned. A zero otherwise.
- */
-static int MatchContext(register char *str)
-{
- /*
- * Locals.
- */
- register ContextCar *wlk, *owk;
- /*
- * See if the context is present.
- */
- str = FindKeyword(str);
- for (owk = NULL, wlk = CSP->Context->Context; wlk; wlk = (owk = wlk)->Next)
- if (str == wlk->Context->Name) {
- if (owk) {
- owk->Next = wlk->Next;
- wlk->Next = CSP->Context->Context;
- CSP->Context->Context = wlk;
- }
- /*
- * If a single context, make sure it isn't already used.
- */
- if (wlk->u.Single) {
- register UsedCar *usc;
- for (usc = CSP->u.Used; usc; usc = usc->Next)
- if (usc->Code == wlk->Context->Code)
- break;
- if (usc) {
- sprintf(CharBuf, "'%s' is used more than once within '%s'", str, CSP->Context->Name);
- yyerror(CharBuf);
- }
- else {
- usc = (UsedCar *) Malloc(sizeof(UsedCar));
- usc->Next = CSP->u.Used;
- (CSP->u.Used = usc)->Code = wlk->Context->Code;
- }
- }
- /*
- * Push the new context.
- */
- owk = (ContextCar *) Malloc(sizeof(ContextCar));
- owk->Next = CSP;
- (CSP = owk)->Context = wlk->Context;
- owk->u.Used = NULL;
- return (wlk->Context->Code);
- }
- return (0);
-}
-
-/*
- * PopC:
- *
- * This pops the current context.
- */
-static void PopC()
-{
- /*
- * Locals.
- */
- register UsedCar *usc;
- register ContextCar *csp;
- /*
- * Release single markers and pop context.
- */
- while ((usc = CSP->u.Used)) {
- CSP->u.Used = usc->Next;
- Free(usc);
- }
- csp = CSP->Next;
- Free(CSP);
- CSP = csp;
-}
-
-/*
- * Lexical analyzer states.
- */
-#define L_START 0
-#define L_INT 1
-#define L_IDENT 2
-#define L_KEYWORD 3
-#define L_STRING 4
-#define L_KEYWORD2 5
-#define L_ASCIICHAR 6
-#define L_ASCIICHAR2 7
-/*
- * yylex:
- *
- * This is the lexical analyzer called by the YACC/BISON parser.
- * It returns a pretty restricted set of token types and does the
- * context movement when acceptable keywords are found. The token
- * value returned is a NULL terminated string to allocated storage
- * (ie - it should get released some time) with some restrictions.
- * The token value for integers is strips a leading '+' if present.
- * String token values have the leading and trailing '"'-s stripped.
- * '%' conversion characters in string values are passed converted.
- * The '(' and ')' characters do not have a token value.
- */
-static int yylex()
-{
- /*
- * Locals.
- */
- register int c, s, l;
- /*
- * Keep on sucking up characters until we find something which
- * explicitly forces us out of this function.
- */
- for (s = L_START, l = 0; 1;) {
- yytext[l++] = c = Getc(Input);
- switch (s) {
- /*
- * Starting state, look for something resembling a token.
- */
- case L_START:
- if (isdigit(c) || c == '-')
- s = L_INT;
- else if (isalpha(c) || c == '&')
- s = L_IDENT;
- else if (isspace(c)) {
- if (c == '\n')
- LineNumber += 1;
- l = 0;
- }
- else if (c == '(') {
- l = 0;
- s = L_KEYWORD;
- }
- else if (c == '"')
- s = L_STRING;
- else if (c == '+') {
- l = 0; /* strip '+' */
- s = L_INT;
- }
- else if (c == EOF)
- return ('\0');
- else {
- yytext[1] = '\0';
- Stack(yytext, c);
- return (c);
- }
- break;
- /*
- * Suck up the integer digits.
- */
- case L_INT:
- if (isdigit(c))
- break;
- Ungetc(c);
- yytext[--l] = '\0';
- yylval.s = strcpy((char *) Malloc(l + 1), yytext);
- Stack(yytext, EDIF_TOK_INT);
- return (EDIF_TOK_INT);
- /*
- * Grab an identifier, see if the current context enables
- * it with a specific token value.
- */
- case L_IDENT:
- if (isalpha(c) || isdigit(c) || c == '_')
- break;
- Ungetc(c);
- yytext[--l] = '\0';
- if (CSP->Context->Token && (c = MatchToken(yytext))) {
- Stack(yytext, c);
- return (c);
- }
- yylval.s = strcpy((char *) Malloc(l + 1), yytext);
- Stack(yytext, EDIF_TOK_IDENT);
- return (EDIF_TOK_IDENT);
- /*
- * Scan until you find the start of an identifier, discard
- * any whitespace found. On no identifier, return a '('.
- */
- case L_KEYWORD:
- if (isalpha(c) || c == '&') {
- s = L_KEYWORD2;
- break;
- }
- else if (isspace(c)) {
- l = 0;
- break;
- }
- Ungetc(c);
- Stack("(", '(');
- return ('(');
- /*
- * Suck up the keyword identifier, if it matches the set of
- * allowable contexts then return its token value and push
- * the context, otherwise just return the identifier string.
- */
- case L_KEYWORD2:
- if (isalpha(c) || isdigit(c) || c == '_')
- break;
- Ungetc(c);
- yytext[--l] = '\0';
- if ((c = MatchContext(yytext))) {
- Stack(yytext, c);
- return (c);
- }
- yylval.s = strcpy((char *) Malloc(l + 1), yytext);
- Stack(yytext, EDIF_TOK_KEYWORD);
- return (EDIF_TOK_KEYWORD);
- /*
- * Suck up string characters but once resolved they should
- * be deposited in the string bucket because they can be
- * arbitrarily long.
- */
- case L_STRING:
- if (c == '\n')
- LineNumber += 1;
- else if (c == '\r');
- else if (c == '"' || c == EOF) {
- yylval.s = FormString();
- Stack(yylval.s, EDIF_TOK_STR);
- return (EDIF_TOK_STR);
- }
- else if (c == '%')
- s = L_ASCIICHAR;
- else
- PushString(c);
- l = 0;
- break;
- /*
- * Skip white space and look for integers to be pushed
- * as characters.
- */
- case L_ASCIICHAR:
- if (isdigit(c)) {
- s = L_ASCIICHAR2;
- break;
- }
- else if (c == '%' || c == EOF)
- s = L_STRING;
- else if (c == '\n')
- LineNumber += 1;
- l = 0;
- break;
- /*
- * Convert the accumulated integer into a char and push.
- */
- case L_ASCIICHAR2:
- if (isdigit(c))
- break;
- Ungetc(c);
- yytext[--l] = '\0';
- PushString(atoi(yytext));
- s = L_ASCIICHAR;
- l = 0;
- break;
- }
- }
-}
Index: trunk/src/edif.h
===================================================================
--- trunk/src/edif.h (revision 1053)
+++ trunk/src/edif.h (nonexistent)
@@ -1,652 +0,0 @@
-/* A Bison parser, made by GNU Bison 2.4.3. */
-
-/* Skeleton interface for Bison's Yacc-like parsers in C
-
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2009, 2010 Free Software Foundation, Inc.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see . */
-
-/* As a special exception, you may create a larger work that contains
- part or all of the Bison parser skeleton and distribute that work
- under terms of your choice, so long as that work isn't itself a
- parser generator using the skeleton or a modified version thereof
- as a parser skeleton. Alternatively, if you modify or redistribute
- the parser skeleton itself, you may (at your option) remove this
- special exception, which will cause the skeleton and the resulting
- Bison output files to be licensed under the GNU General Public
- License without this special exception.
-
- This special exception was added by the Free Software Foundation in
- version 2.2 of Bison. */
-
-
-/* Tokens. */
-#ifndef YYTOKENTYPE
-#define YYTOKENTYPE
- /* Put the tokens into the symbol table, so that GDB and other debuggers
- know about them. */
-enum yytokentype {
- EDIF_TOK_IDENT = 258,
- EDIF_TOK_INT = 259,
- EDIF_TOK_KEYWORD = 260,
- EDIF_TOK_STR = 261,
- EDIF_TOK_ANGLE = 262,
- EDIF_TOK_BEHAVIOR = 263,
- EDIF_TOK_CALCULATED = 264,
- EDIF_TOK_CAPACITANCE = 265,
- EDIF_TOK_CENTERCENTER = 266,
- EDIF_TOK_CENTERLEFT = 267,
- EDIF_TOK_CENTERRIGHT = 268,
- EDIF_TOK_CHARGE = 269,
- EDIF_TOK_CONDUCTANCE = 270,
- EDIF_TOK_CURRENT = 271,
- EDIF_TOK_DISTANCE = 272,
- EDIF_TOK_DOCUMENT = 273,
- EDIF_TOK_ENERGY = 274,
- EDIF_TOK_EXTEND = 275,
- EDIF_TOK_FLUX = 276,
- EDIF_TOK_FREQUENCY = 277,
- EDIF_TOK_GENERIC = 278,
- EDIF_TOK_GRAPHIC = 279,
- EDIF_TOK_INDUCTANCE = 280,
- EDIF_TOK_INOUT = 281,
- EDIF_TOK_INPUT = 282,
- EDIF_TOK_LOGICMODEL = 283,
- EDIF_TOK_LOWERCENTER = 284,
- EDIF_TOK_LOWERLEFT = 285,
- EDIF_TOK_LOWERRIGHT = 286,
- EDIF_TOK_MASKLAYOUT = 287,
- EDIF_TOK_MASS = 288,
- EDIF_TOK_MEASURED = 289,
- EDIF_TOK_MX = 290,
- EDIF_TOK_MXR90 = 291,
- EDIF_TOK_MY = 292,
- EDIF_TOK_MYR90 = 293,
- EDIF_TOK_NETLIST = 294,
- EDIF_TOK_OUTPUT = 295,
- EDIF_TOK_PCBLAYOUT = 296,
- EDIF_TOK_POWER = 297,
- EDIF_TOK_R0 = 298,
- EDIF_TOK_R180 = 299,
- EDIF_TOK_R270 = 300,
- EDIF_TOK_R90 = 301,
- EDIF_TOK_REQUIRED = 302,
- EDIF_TOK_RESISTANCE = 303,
- EDIF_TOK_RIPPER = 304,
- EDIF_TOK_ROUND = 305,
- EDIF_TOK_SCHEMATIC = 306,
- EDIF_TOK_STRANGER = 307,
- EDIF_TOK_SYMBOLIC = 308,
- EDIF_TOK_TEMPERATURE = 309,
- EDIF_TOK_TIE = 310,
- EDIF_TOK_TIME = 311,
- EDIF_TOK_TRUNCATE = 312,
- EDIF_TOK_UPPERCENTER = 313,
- EDIF_TOK_UPPERLEFT = 314,
- EDIF_TOK_UPPERRIGHT = 315,
- EDIF_TOK_VOLTAGE = 316,
- EDIF_TOK_ACLOAD = 317,
- EDIF_TOK_AFTER = 318,
- EDIF_TOK_ANNOTATE = 319,
- EDIF_TOK_APPLY = 320,
- EDIF_TOK_ARC = 321,
- EDIF_TOK_ARRAY = 322,
- EDIF_TOK_ARRAYMACRO = 323,
- EDIF_TOK_ARRAYRELATEDINFO = 324,
- EDIF_TOK_ARRAYSITE = 325,
- EDIF_TOK_ATLEAST = 326,
- EDIF_TOK_ATMOST = 327,
- EDIF_TOK_AUTHOR = 328,
- EDIF_TOK_BASEARRAY = 329,
- EDIF_TOK_BECOMES = 330,
- EDIF_TOK_BETWEEN = 331,
- EDIF_TOK_BOOLEAN = 332,
- EDIF_TOK_BOOLEANDISPLAY = 333,
- EDIF_TOK_BOOLEANMAP = 334,
- EDIF_TOK_BORDERPATTERN = 335,
- EDIF_TOK_BORDERWIDTH = 336,
- EDIF_TOK_BOUNDINGBOX = 337,
- EDIF_TOK_CELL = 338,
- EDIF_TOK_CELLREF = 339,
- EDIF_TOK_CELLTYPE = 340,
- EDIF_TOK_CHANGE = 341,
- EDIF_TOK_CIRCLE = 342,
- EDIF_TOK_COLOR = 343,
- EDIF_TOK_COMMENT = 344,
- EDIF_TOK_COMMENTGRAPHICS = 345,
- EDIF_TOK_COMPOUND = 346,
- EDIF_TOK_CONNECTLOCATION = 347,
- EDIF_TOK_CONTENTS = 348,
- EDIF_TOK_CORNERTYPE = 349,
- EDIF_TOK_CRITICALITY = 350,
- EDIF_TOK_CURRENTMAP = 351,
- EDIF_TOK_CURVE = 352,
- EDIF_TOK_CYCLE = 353,
- EDIF_TOK_DATAORIGIN = 354,
- EDIF_TOK_DCFANINLOAD = 355,
- EDIF_TOK_DCFANOUTLOAD = 356,
- EDIF_TOK_DCMAXFANIN = 357,
- EDIF_TOK_DCMAXFANOUT = 358,
- EDIF_TOK_DELAY = 359,
- EDIF_TOK_DELTA = 360,
- EDIF_TOK_DERIVATION = 361,
- EDIF_TOK_DESIGN = 362,
- EDIF_TOK_DESIGNATOR = 363,
- EDIF_TOK_DIFFERENCE = 364,
- EDIF_TOK_DIRECTION = 365,
- EDIF_TOK_DISPLAY = 366,
- EDIF_TOK_DOMINATES = 367,
- EDIF_TOK_DOT = 368,
- EDIF_TOK_DURATION = 369,
- EDIF_TOK_E = 370,
- EDIF_TOK_EDIF = 371,
- EDIF_TOK_EDIFLEVEL = 372,
- EDIF_TOK_EDIFVERSION = 373,
- EDIF_TOK_ENCLOSUREDISTANCE = 374,
- EDIF_TOK_ENDTYPE = 375,
- EDIF_TOK_ENTRY = 376,
- EDIF_TOK_EVENT = 377,
- EDIF_TOK_EXACTLY = 378,
- EDIF_TOK_EXTERNAL = 379,
- EDIF_TOK_FABRICATE = 380,
- EDIF_TOK_FALSE = 381,
- EDIF_TOK_FIGURE = 382,
- EDIF_TOK_FIGUREAREA = 383,
- EDIF_TOK_FIGUREGROUP = 384,
- EDIF_TOK_FIGUREGROUPOBJECT = 385,
- EDIF_TOK_FIGUREGROUPOVERRIDE = 386,
- EDIF_TOK_FIGUREGROUPREF = 387,
- EDIF_TOK_FIGUREPERIMETER = 388,
- EDIF_TOK_FIGUREWIDTH = 389,
- EDIF_TOK_FILLPATTERN = 390,
- EDIF_TOK_FOLLOW = 391,
- EDIF_TOK_FORBIDDENEVENT = 392,
- EDIF_TOK_GLOBALPORTREF = 393,
- EDIF_TOK_GREATERTHAN = 394,
- EDIF_TOK_GRIDMAP = 395,
- EDIF_TOK_IGNORE = 396,
- EDIF_TOK_INCLUDEFIGUREGROUP = 397,
- EDIF_TOK_INITIAL = 398,
- EDIF_TOK_INSTANCE = 399,
- EDIF_TOK_INSTANCEBACKANNOTATE = 400,
- EDIF_TOK_INSTANCEGROUP = 401,
- EDIF_TOK_INSTANCEMAP = 402,
- EDIF_TOK_INSTANCEREF = 403,
- EDIF_TOK_INTEGER = 404,
- EDIF_TOK_INTEGERDISPLAY = 405,
- EDIF_TOK_INTERFACE = 406,
- EDIF_TOK_INTERFIGUREGROUPSPACING = 407,
- EDIF_TOK_INTERSECTION = 408,
- EDIF_TOK_INTRAFIGUREGROUPSPACING = 409,
- EDIF_TOK_INVERSE = 410,
- EDIF_TOK_ISOLATED = 411,
- EDIF_TOK_JOINED = 412,
- EDIF_TOK_JUSTIFY = 413,
- EDIF_TOK_KEYWORDDISPLAY = 414,
- EDIF_TOK_KEYWORDLEVEL = 415,
- EDIF_TOK_KEYWORDMAP = 416,
- EDIF_TOK_LESSTHAN = 417,
- EDIF_TOK_LIBRARY = 418,
- EDIF_TOK_LIBRARYREF = 419,
- EDIF_TOK_LISTOFNETS = 420,
- EDIF_TOK_LISTOFPORTS = 421,
- EDIF_TOK_LOADDELAY = 422,
- EDIF_TOK_LOGICASSIGN = 423,
- EDIF_TOK_LOGICINPUT = 424,
- EDIF_TOK_LOGICLIST = 425,
- EDIF_TOK_LOGICMAPINPUT = 426,
- EDIF_TOK_LOGICMAPOUTPUT = 427,
- EDIF_TOK_LOGICONEOF = 428,
- EDIF_TOK_LOGICOUTPUT = 429,
- EDIF_TOK_LOGICPORT = 430,
- EDIF_TOK_LOGICREF = 431,
- EDIF_TOK_LOGICVALUE = 432,
- EDIF_TOK_LOGICWAVEFORM = 433,
- EDIF_TOK_MAINTAIN = 434,
- EDIF_TOK_MATCH = 435,
- EDIF_TOK_MEMBER = 436,
- EDIF_TOK_MINOMAX = 437,
- EDIF_TOK_MINOMAXDISPLAY = 438,
- EDIF_TOK_MNM = 439,
- EDIF_TOK_MULTIPLEVALUESET = 440,
- EDIF_TOK_MUSTJOIN = 441,
- EDIF_TOK_NAME = 442,
- EDIF_TOK_NET = 443,
- EDIF_TOK_NETBACKANNOTATE = 444,
- EDIF_TOK_NETBUNDLE = 445,
- EDIF_TOK_NETDELAY = 446,
- EDIF_TOK_NETGROUP = 447,
- EDIF_TOK_NETMAP = 448,
- EDIF_TOK_NETREF = 449,
- EDIF_TOK_NOCHANGE = 450,
- EDIF_TOK_NONPERMUTABLE = 451,
- EDIF_TOK_NOTALLOWED = 452,
- EDIF_TOK_NOTCHSPACING = 453,
- EDIF_TOK_NUMBER = 454,
- EDIF_TOK_NUMBERDEFINITION = 455,
- EDIF_TOK_NUMBERDISPLAY = 456,
- EDIF_TOK_OFFPAGECONNECTOR = 457,
- EDIF_TOK_OFFSETEVENT = 458,
- EDIF_TOK_OPENSHAPE = 459,
- EDIF_TOK_ORIENTATION = 460,
- EDIF_TOK_ORIGIN = 461,
- EDIF_TOK_OVERHANGDISTANCE = 462,
- EDIF_TOK_OVERLAPDISTANCE = 463,
- EDIF_TOK_OVERSIZE = 464,
- EDIF_TOK_OWNER = 465,
- EDIF_TOK_PAGE = 466,
- EDIF_TOK_PAGESIZE = 467,
- EDIF_TOK_PARAMETER = 468,
- EDIF_TOK_PARAMETERASSIGN = 469,
- EDIF_TOK_PARAMETERDISPLAY = 470,
- EDIF_TOK_PATH = 471,
- EDIF_TOK_PATHDELAY = 472,
- EDIF_TOK_PATHWIDTH = 473,
- EDIF_TOK_PERMUTABLE = 474,
- EDIF_TOK_PHYSICALDESIGNRULE = 475,
- EDIF_TOK_PLUG = 476,
- EDIF_TOK_POINT = 477,
- EDIF_TOK_POINTDISPLAY = 478,
- EDIF_TOK_POINTLIST = 479,
- EDIF_TOK_POLYGON = 480,
- EDIF_TOK_PORT = 481,
- EDIF_TOK_PORTBACKANNOTATE = 482,
- EDIF_TOK_PORTBUNDLE = 483,
- EDIF_TOK_PORTDELAY = 484,
- EDIF_TOK_PORTGROUP = 485,
- EDIF_TOK_PORTIMPLEMENTATION = 486,
- EDIF_TOK_PORTINSTANCE = 487,
- EDIF_TOK_PORTLIST = 488,
- EDIF_TOK_PORTLISTALIAS = 489,
- EDIF_TOK_PORTMAP = 490,
- EDIF_TOK_PORTREF = 491,
- EDIF_TOK_PROGRAM = 492,
- EDIF_TOK_PROPERTY = 493,
- EDIF_TOK_PROPERTYDISPLAY = 494,
- EDIF_TOK_PROTECTIONFRAME = 495,
- EDIF_TOK_PT = 496,
- EDIF_TOK_RANGEVECTOR = 497,
- EDIF_TOK_RECTANGLE = 498,
- EDIF_TOK_RECTANGLESIZE = 499,
- EDIF_TOK_RENAME = 500,
- EDIF_TOK_RESOLVES = 501,
- EDIF_TOK_SCALE = 502,
- EDIF_TOK_SCALEX = 503,
- EDIF_TOK_SCALEY = 504,
- EDIF_TOK_SECTION = 505,
- EDIF_TOK_SHAPE = 506,
- EDIF_TOK_SIMULATE = 507,
- EDIF_TOK_SIMULATIONINFO = 508,
- EDIF_TOK_SINGLEVALUESET = 509,
- EDIF_TOK_SITE = 510,
- EDIF_TOK_SOCKET = 511,
- EDIF_TOK_SOCKETSET = 512,
- EDIF_TOK_STATUS = 513,
- EDIF_TOK_STEADY = 514,
- EDIF_TOK_STRING = 515,
- EDIF_TOK_STRINGDISPLAY = 516,
- EDIF_TOK_STRONG = 517,
- EDIF_TOK_SYMBOL = 518,
- EDIF_TOK_SYMMETRY = 519,
- EDIF_TOK_TABLE = 520,
- EDIF_TOK_TABLEDEFAULT = 521,
- EDIF_TOK_TECHNOLOGY = 522,
- EDIF_TOK_TEXTHEIGHT = 523,
- EDIF_TOK_TIMEINTERVAL = 524,
- EDIF_TOK_TIMESTAMP = 525,
- EDIF_TOK_TIMING = 526,
- EDIF_TOK_TRANSFORM = 527,
- EDIF_TOK_TRANSITION = 528,
- EDIF_TOK_TRIGGER = 529,
- EDIF_TOK_TRUE = 530,
- EDIF_TOK_UNCONSTRAINED = 531,
- EDIF_TOK_UNDEFINED = 532,
- EDIF_TOK_UNION = 533,
- EDIF_TOK_UNIT = 534,
- EDIF_TOK_UNUSED = 535,
- EDIF_TOK_USERDATA = 536,
- EDIF_TOK_VERSION = 537,
- EDIF_TOK_VIEW = 538,
- EDIF_TOK_VIEWLIST = 539,
- EDIF_TOK_VIEWMAP = 540,
- EDIF_TOK_VIEWREF = 541,
- EDIF_TOK_VIEWTYPE = 542,
- EDIF_TOK_VISIBLE = 543,
- EDIF_TOK_VOLTAGEMAP = 544,
- EDIF_TOK_WAVEVALUE = 545,
- EDIF_TOK_WEAK = 546,
- EDIF_TOK_WEAKJOINED = 547,
- EDIF_TOK_WHEN = 548,
- EDIF_TOK_WRITTEN = 549
-};
-#endif
-/* Tokens. */
-#define EDIF_TOK_IDENT 258
-#define EDIF_TOK_INT 259
-#define EDIF_TOK_KEYWORD 260
-#define EDIF_TOK_STR 261
-#define EDIF_TOK_ANGLE 262
-#define EDIF_TOK_BEHAVIOR 263
-#define EDIF_TOK_CALCULATED 264
-#define EDIF_TOK_CAPACITANCE 265
-#define EDIF_TOK_CENTERCENTER 266
-#define EDIF_TOK_CENTERLEFT 267
-#define EDIF_TOK_CENTERRIGHT 268
-#define EDIF_TOK_CHARGE 269
-#define EDIF_TOK_CONDUCTANCE 270
-#define EDIF_TOK_CURRENT 271
-#define EDIF_TOK_DISTANCE 272
-#define EDIF_TOK_DOCUMENT 273
-#define EDIF_TOK_ENERGY 274
-#define EDIF_TOK_EXTEND 275
-#define EDIF_TOK_FLUX 276
-#define EDIF_TOK_FREQUENCY 277
-#define EDIF_TOK_GENERIC 278
-#define EDIF_TOK_GRAPHIC 279
-#define EDIF_TOK_INDUCTANCE 280
-#define EDIF_TOK_INOUT 281
-#define EDIF_TOK_INPUT 282
-#define EDIF_TOK_LOGICMODEL 283
-#define EDIF_TOK_LOWERCENTER 284
-#define EDIF_TOK_LOWERLEFT 285
-#define EDIF_TOK_LOWERRIGHT 286
-#define EDIF_TOK_MASKLAYOUT 287
-#define EDIF_TOK_MASS 288
-#define EDIF_TOK_MEASURED 289
-#define EDIF_TOK_MX 290
-#define EDIF_TOK_MXR90 291
-#define EDIF_TOK_MY 292
-#define EDIF_TOK_MYR90 293
-#define EDIF_TOK_NETLIST 294
-#define EDIF_TOK_OUTPUT 295
-#define EDIF_TOK_PCBLAYOUT 296
-#define EDIF_TOK_POWER 297
-#define EDIF_TOK_R0 298
-#define EDIF_TOK_R180 299
-#define EDIF_TOK_R270 300
-#define EDIF_TOK_R90 301
-#define EDIF_TOK_REQUIRED 302
-#define EDIF_TOK_RESISTANCE 303
-#define EDIF_TOK_RIPPER 304
-#define EDIF_TOK_ROUND 305
-#define EDIF_TOK_SCHEMATIC 306
-#define EDIF_TOK_STRANGER 307
-#define EDIF_TOK_SYMBOLIC 308
-#define EDIF_TOK_TEMPERATURE 309
-#define EDIF_TOK_TIE 310
-#define EDIF_TOK_TIME 311
-#define EDIF_TOK_TRUNCATE 312
-#define EDIF_TOK_UPPERCENTER 313
-#define EDIF_TOK_UPPERLEFT 314
-#define EDIF_TOK_UPPERRIGHT 315
-#define EDIF_TOK_VOLTAGE 316
-#define EDIF_TOK_ACLOAD 317
-#define EDIF_TOK_AFTER 318
-#define EDIF_TOK_ANNOTATE 319
-#define EDIF_TOK_APPLY 320
-#define EDIF_TOK_ARC 321
-#define EDIF_TOK_ARRAY 322
-#define EDIF_TOK_ARRAYMACRO 323
-#define EDIF_TOK_ARRAYRELATEDINFO 324
-#define EDIF_TOK_ARRAYSITE 325
-#define EDIF_TOK_ATLEAST 326
-#define EDIF_TOK_ATMOST 327
-#define EDIF_TOK_AUTHOR 328
-#define EDIF_TOK_BASEARRAY 329
-#define EDIF_TOK_BECOMES 330
-#define EDIF_TOK_BETWEEN 331
-#define EDIF_TOK_BOOLEAN 332
-#define EDIF_TOK_BOOLEANDISPLAY 333
-#define EDIF_TOK_BOOLEANMAP 334
-#define EDIF_TOK_BORDERPATTERN 335
-#define EDIF_TOK_BORDERWIDTH 336
-#define EDIF_TOK_BOUNDINGBOX 337
-#define EDIF_TOK_CELL 338
-#define EDIF_TOK_CELLREF 339
-#define EDIF_TOK_CELLTYPE 340
-#define EDIF_TOK_CHANGE 341
-#define EDIF_TOK_CIRCLE 342
-#define EDIF_TOK_COLOR 343
-#define EDIF_TOK_COMMENT 344
-#define EDIF_TOK_COMMENTGRAPHICS 345
-#define EDIF_TOK_COMPOUND 346
-#define EDIF_TOK_CONNECTLOCATION 347
-#define EDIF_TOK_CONTENTS 348
-#define EDIF_TOK_CORNERTYPE 349
-#define EDIF_TOK_CRITICALITY 350
-#define EDIF_TOK_CURRENTMAP 351
-#define EDIF_TOK_CURVE 352
-#define EDIF_TOK_CYCLE 353
-#define EDIF_TOK_DATAORIGIN 354
-#define EDIF_TOK_DCFANINLOAD 355
-#define EDIF_TOK_DCFANOUTLOAD 356
-#define EDIF_TOK_DCMAXFANIN 357
-#define EDIF_TOK_DCMAXFANOUT 358
-#define EDIF_TOK_DELAY 359
-#define EDIF_TOK_DELTA 360
-#define EDIF_TOK_DERIVATION 361
-#define EDIF_TOK_DESIGN 362
-#define EDIF_TOK_DESIGNATOR 363
-#define EDIF_TOK_DIFFERENCE 364
-#define EDIF_TOK_DIRECTION 365
-#define EDIF_TOK_DISPLAY 366
-#define EDIF_TOK_DOMINATES 367
-#define EDIF_TOK_DOT 368
-#define EDIF_TOK_DURATION 369
-#define EDIF_TOK_E 370
-#define EDIF_TOK_EDIF 371
-#define EDIF_TOK_EDIFLEVEL 372
-#define EDIF_TOK_EDIFVERSION 373
-#define EDIF_TOK_ENCLOSUREDISTANCE 374
-#define EDIF_TOK_ENDTYPE 375
-#define EDIF_TOK_ENTRY 376
-#define EDIF_TOK_EVENT 377
-#define EDIF_TOK_EXACTLY 378
-#define EDIF_TOK_EXTERNAL 379
-#define EDIF_TOK_FABRICATE 380
-#define EDIF_TOK_FALSE 381
-#define EDIF_TOK_FIGURE 382
-#define EDIF_TOK_FIGUREAREA 383
-#define EDIF_TOK_FIGUREGROUP 384
-#define EDIF_TOK_FIGUREGROUPOBJECT 385
-#define EDIF_TOK_FIGUREGROUPOVERRIDE 386
-#define EDIF_TOK_FIGUREGROUPREF 387
-#define EDIF_TOK_FIGUREPERIMETER 388
-#define EDIF_TOK_FIGUREWIDTH 389
-#define EDIF_TOK_FILLPATTERN 390
-#define EDIF_TOK_FOLLOW 391
-#define EDIF_TOK_FORBIDDENEVENT 392
-#define EDIF_TOK_GLOBALPORTREF 393
-#define EDIF_TOK_GREATERTHAN 394
-#define EDIF_TOK_GRIDMAP 395
-#define EDIF_TOK_IGNORE 396
-#define EDIF_TOK_INCLUDEFIGUREGROUP 397
-#define EDIF_TOK_INITIAL 398
-#define EDIF_TOK_INSTANCE 399
-#define EDIF_TOK_INSTANCEBACKANNOTATE 400
-#define EDIF_TOK_INSTANCEGROUP 401
-#define EDIF_TOK_INSTANCEMAP 402
-#define EDIF_TOK_INSTANCEREF 403
-#define EDIF_TOK_INTEGER 404
-#define EDIF_TOK_INTEGERDISPLAY 405
-#define EDIF_TOK_INTERFACE 406
-#define EDIF_TOK_INTERFIGUREGROUPSPACING 407
-#define EDIF_TOK_INTERSECTION 408
-#define EDIF_TOK_INTRAFIGUREGROUPSPACING 409
-#define EDIF_TOK_INVERSE 410
-#define EDIF_TOK_ISOLATED 411
-#define EDIF_TOK_JOINED 412
-#define EDIF_TOK_JUSTIFY 413
-#define EDIF_TOK_KEYWORDDISPLAY 414
-#define EDIF_TOK_KEYWORDLEVEL 415
-#define EDIF_TOK_KEYWORDMAP 416
-#define EDIF_TOK_LESSTHAN 417
-#define EDIF_TOK_LIBRARY 418
-#define EDIF_TOK_LIBRARYREF 419
-#define EDIF_TOK_LISTOFNETS 420
-#define EDIF_TOK_LISTOFPORTS 421
-#define EDIF_TOK_LOADDELAY 422
-#define EDIF_TOK_LOGICASSIGN 423
-#define EDIF_TOK_LOGICINPUT 424
-#define EDIF_TOK_LOGICLIST 425
-#define EDIF_TOK_LOGICMAPINPUT 426
-#define EDIF_TOK_LOGICMAPOUTPUT 427
-#define EDIF_TOK_LOGICONEOF 428
-#define EDIF_TOK_LOGICOUTPUT 429
-#define EDIF_TOK_LOGICPORT 430
-#define EDIF_TOK_LOGICREF 431
-#define EDIF_TOK_LOGICVALUE 432
-#define EDIF_TOK_LOGICWAVEFORM 433
-#define EDIF_TOK_MAINTAIN 434
-#define EDIF_TOK_MATCH 435
-#define EDIF_TOK_MEMBER 436
-#define EDIF_TOK_MINOMAX 437
-#define EDIF_TOK_MINOMAXDISPLAY 438
-#define EDIF_TOK_MNM 439
-#define EDIF_TOK_MULTIPLEVALUESET 440
-#define EDIF_TOK_MUSTJOIN 441
-#define EDIF_TOK_NAME 442
-#define EDIF_TOK_NET 443
-#define EDIF_TOK_NETBACKANNOTATE 444
-#define EDIF_TOK_NETBUNDLE 445
-#define EDIF_TOK_NETDELAY 446
-#define EDIF_TOK_NETGROUP 447
-#define EDIF_TOK_NETMAP 448
-#define EDIF_TOK_NETREF 449
-#define EDIF_TOK_NOCHANGE 450
-#define EDIF_TOK_NONPERMUTABLE 451
-#define EDIF_TOK_NOTALLOWED 452
-#define EDIF_TOK_NOTCHSPACING 453
-#define EDIF_TOK_NUMBER 454
-#define EDIF_TOK_NUMBERDEFINITION 455
-#define EDIF_TOK_NUMBERDISPLAY 456
-#define EDIF_TOK_OFFPAGECONNECTOR 457
-#define EDIF_TOK_OFFSETEVENT 458
-#define EDIF_TOK_OPENSHAPE 459
-#define EDIF_TOK_ORIENTATION 460
-#define EDIF_TOK_ORIGIN 461
-#define EDIF_TOK_OVERHANGDISTANCE 462
-#define EDIF_TOK_OVERLAPDISTANCE 463
-#define EDIF_TOK_OVERSIZE 464
-#define EDIF_TOK_OWNER 465
-#define EDIF_TOK_PAGE 466
-#define EDIF_TOK_PAGESIZE 467
-#define EDIF_TOK_PARAMETER 468
-#define EDIF_TOK_PARAMETERASSIGN 469
-#define EDIF_TOK_PARAMETERDISPLAY 470
-#define EDIF_TOK_PATH 471
-#define EDIF_TOK_PATHDELAY 472
-#define EDIF_TOK_PATHWIDTH 473
-#define EDIF_TOK_PERMUTABLE 474
-#define EDIF_TOK_PHYSICALDESIGNRULE 475
-#define EDIF_TOK_PLUG 476
-#define EDIF_TOK_POINT 477
-#define EDIF_TOK_POINTDISPLAY 478
-#define EDIF_TOK_POINTLIST 479
-#define EDIF_TOK_POLYGON 480
-#define EDIF_TOK_PORT 481
-#define EDIF_TOK_PORTBACKANNOTATE 482
-#define EDIF_TOK_PORTBUNDLE 483
-#define EDIF_TOK_PORTDELAY 484
-#define EDIF_TOK_PORTGROUP 485
-#define EDIF_TOK_PORTIMPLEMENTATION 486
-#define EDIF_TOK_PORTINSTANCE 487
-#define EDIF_TOK_PORTLIST 488
-#define EDIF_TOK_PORTLISTALIAS 489
-#define EDIF_TOK_PORTMAP 490
-#define EDIF_TOK_PORTREF 491
-#define EDIF_TOK_PROGRAM 492
-#define EDIF_TOK_PROPERTY 493
-#define EDIF_TOK_PROPERTYDISPLAY 494
-#define EDIF_TOK_PROTECTIONFRAME 495
-#define EDIF_TOK_PT 496
-#define EDIF_TOK_RANGEVECTOR 497
-#define EDIF_TOK_RECTANGLE 498
-#define EDIF_TOK_RECTANGLESIZE 499
-#define EDIF_TOK_RENAME 500
-#define EDIF_TOK_RESOLVES 501
-#define EDIF_TOK_SCALE 502
-#define EDIF_TOK_SCALEX 503
-#define EDIF_TOK_SCALEY 504
-#define EDIF_TOK_SECTION 505
-#define EDIF_TOK_SHAPE 506
-#define EDIF_TOK_SIMULATE 507
-#define EDIF_TOK_SIMULATIONINFO 508
-#define EDIF_TOK_SINGLEVALUESET 509
-#define EDIF_TOK_SITE 510
-#define EDIF_TOK_SOCKET 511
-#define EDIF_TOK_SOCKETSET 512
-#define EDIF_TOK_STATUS 513
-#define EDIF_TOK_STEADY 514
-#define EDIF_TOK_STRING 515
-#define EDIF_TOK_STRINGDISPLAY 516
-#define EDIF_TOK_STRONG 517
-#define EDIF_TOK_SYMBOL 518
-#define EDIF_TOK_SYMMETRY 519
-#define EDIF_TOK_TABLE 520
-#define EDIF_TOK_TABLEDEFAULT 521
-#define EDIF_TOK_TECHNOLOGY 522
-#define EDIF_TOK_TEXTHEIGHT 523
-#define EDIF_TOK_TIMEINTERVAL 524
-#define EDIF_TOK_TIMESTAMP 525
-#define EDIF_TOK_TIMING 526
-#define EDIF_TOK_TRANSFORM 527
-#define EDIF_TOK_TRANSITION 528
-#define EDIF_TOK_TRIGGER 529
-#define EDIF_TOK_TRUE 530
-#define EDIF_TOK_UNCONSTRAINED 531
-#define EDIF_TOK_UNDEFINED 532
-#define EDIF_TOK_UNION 533
-#define EDIF_TOK_UNIT 534
-#define EDIF_TOK_UNUSED 535
-#define EDIF_TOK_USERDATA 536
-#define EDIF_TOK_VERSION 537
-#define EDIF_TOK_VIEW 538
-#define EDIF_TOK_VIEWLIST 539
-#define EDIF_TOK_VIEWMAP 540
-#define EDIF_TOK_VIEWREF 541
-#define EDIF_TOK_VIEWTYPE 542
-#define EDIF_TOK_VISIBLE 543
-#define EDIF_TOK_VOLTAGEMAP 544
-#define EDIF_TOK_WAVEVALUE 545
-#define EDIF_TOK_WEAK 546
-#define EDIF_TOK_WEAKJOINED 547
-#define EDIF_TOK_WHEN 548
-#define EDIF_TOK_WRITTEN 549
-
-
-
-
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE {
-
-/* Line 1685 of yacc.c */
-#line 193 "edif.y"
-
- char *s;
- pair_list *pl;
- str_pair *ps;
-
-
-
-/* Line 1685 of yacc.c */
-#line 647 "edif.h"
-} YYSTYPE;
-#define YYSTYPE_IS_TRIVIAL 1
-#define yystype YYSTYPE /* obsolescent; will be withdrawn */
-#define YYSTYPE_IS_DECLARED 1
-#endif
-
-extern YYSTYPE ediflval;
Index: trunk/src/edif.y
===================================================================
--- trunk/src/edif.y (revision 1053)
+++ trunk/src/edif.y (nonexistent)
@@ -1,4441 +0,0 @@
-%{
-/*
- * PCB Edif parser based heavily on:
- *
- * Header: edif.y,v 1.18 87/12/07 19:59:49 roger Locked
- */
-/************************************************************************
- * *
- * edif.y *
- * *
- * EDIF 2.0.0 parser, Level 0 *
- * *
- * You are free to copy, distribute, use it, abuse it, make it *
- * write bad tracks all over the disk ... or anything else. *
- * *
- * Your friendly neighborhood Rogue Monster - roger@mips.com *
- * *
- ************************************************************************/
-#include
-
-/* for malloc, free, atoi */
-#include
-
-/* for strcpy */
-#include
-
-#include
-
-#include "global.h"
-#include "data.h"
-/* from mymem.h, not include because of the malloc junk */
-LibraryMenuTypePtr GetLibraryMenuMemory (LibraryTypePtr);
-LibraryEntryTypePtr GetLibraryEntryMemory (LibraryMenuTypePtr);
-
-/*
- * Local definitions.
- */
-#define IDENT_LENGTH 255
-#define Malloc(s) malloc(s)
-#define Free(p) free(p)
-#define Getc(s) getc(s)
-#define Ungetc(c) ungetc(c,Input)
-
- typedef struct _str_pair
- {
- char* str1;
- char* str2;
- struct _str_pair* next;
- } str_pair;
-
- typedef struct _pair_list
- {
- char* name;
- str_pair* list;
- } pair_list;
-
- str_pair* new_str_pair(char* s1, char* s2)
- {
- str_pair* ps = (str_pair *)malloc(sizeof(str_pair));
- ps->str1 = s1;
- ps->str2 = s2;
- ps->next = NULL;
- return ps;
- }
-
- pair_list* new_pair_list(str_pair* ps)
- {
- pair_list* pl = (pair_list *)malloc(sizeof(pair_list));
- pl->list = ps;
- pl->name = NULL;
- return pl;
- }
-
- void str_pair_free(str_pair* ps)
- {
- str_pair* node;
- while ( ps )
- {
- free(ps->str1);
- free(ps->str2);
- node = ps;
- ps = ps->next;
- free(node);
- }
- }
-
- void pair_list_free(pair_list* pl)
- {
- str_pair_free(pl->list);
- free(pl->name);
- free(pl);
- }
-
- void define_pcb_net(str_pair* name, pair_list* nodes)
- {
- int tl;
- str_pair* done_node;
- str_pair* node;
- char* buf;
- char* p;
- LibraryEntryTypePtr entry;
- LibraryMenuTypePtr menu = GetLibraryMenuMemory (&PCB->NetlistLib);
-
- if ( !name->str1 )
- {
- /* no net name given, stop now */
- /* if renamed str2 also exists and must be freed */
- if ( name->str2 ) free(name->str2);
- free(name);
- pair_list_free(nodes);
- return;
- }
- menu->Name = strdup (name->str1);
- free(name->str1);
- /* if renamed str2 also exists and must be freed */
- if ( name->str2 ) free(name->str2);
- free(name);
- buf = (char *)malloc(256);
- if ( !buf )
- {
- /* no memory */
- pair_list_free(nodes);
- return;
- }
-
- node = nodes->list;
- free(nodes->name);
- free(nodes);
- while ( node )
- {
- /* check for node with no instance */
- if ( !node->str1 )
- {
- /* toss it and move on */
- free(node->str2);
- done_node = node;
- node = node->next;
- free(done_node);
- continue;
- }
- tl = strlen(node->str1) + strlen(node->str2);
- if ( tl + 3 > 256 )
- {
- free(buf);
- buf = (char *)malloc(tl+3);
- if ( !buf )
- {
- /* no memory */
- str_pair_free(node);
- return;
- }
- }
- strcpy(buf,node->str1);
- /* make all upper case, because of PCB funky behaviour */
- p=buf;
- while ( *p )
- {
- *p = toupper( (int) *p);
- p++;
- }
- /* add dash separating designator from node */
- *(buf+strlen(node->str1)) = '-';
- /* check for the edif number prefix */
- if ( node->str2[0] == '&' )
- {
- /* skip number prefix */
- strcpy(buf+strlen(node->str1)+1,node->str2 +1);
- }
- else
- {
- strcpy(buf+strlen(node->str1)+1,node->str2);
- }
- /* free the strings */
- free(node->str1);
- free(node->str2);
- entry = GetLibraryEntryMemory (menu);
- entry->ListEntry = strdup(buf);
- done_node = node;
- node = node->next;
- free(done_node);
- }
- }
-
-
-/* forward function declarations */
- static int yylex(void);
- static void yyerror(const char *);
- static void PopC(void);
-%}
-
-%name-prefix="edif"
-
-%union {
- char* s;
- pair_list* pl;
- str_pair* ps;
-}
-
-%type Int Ident Str Keyword Name _Name
-%type PortRef _PortRef NetNameDef NameDef
-%type Rename _Joined
-%type __Rename _Rename NameRef
-%type InstanceRef InstNameRef Member PortNameRef
-%type Net _Net Joined
-
-%token EDIF_TOK_IDENT
-%token EDIF_TOK_INT
-%token EDIF_TOK_KEYWORD
-%token EDIF_TOK_STR
-
-%token EDIF_TOK_ANGLE
-%token EDIF_TOK_BEHAVIOR
-%token EDIF_TOK_CALCULATED
-%token EDIF_TOK_CAPACITANCE
-%token EDIF_TOK_CENTERCENTER
-%token EDIF_TOK_CENTERLEFT
-%token EDIF_TOK_CENTERRIGHT
-%token EDIF_TOK_CHARGE
-%token EDIF_TOK_CONDUCTANCE
-%token EDIF_TOK_CURRENT
-%token EDIF_TOK_DISTANCE
-%token EDIF_TOK_DOCUMENT
-%token EDIF_TOK_ENERGY
-%token EDIF_TOK_EXTEND
-%token EDIF_TOK_FLUX
-%token EDIF_TOK_FREQUENCY
-%token EDIF_TOK_GENERIC
-%token EDIF_TOK_GRAPHIC
-%token EDIF_TOK_INDUCTANCE
-%token EDIF_TOK_INOUT
-%token EDIF_TOK_INPUT
-%token EDIF_TOK_LOGICMODEL
-%token EDIF_TOK_LOWERCENTER
-%token EDIF_TOK_LOWERLEFT
-%token EDIF_TOK_LOWERRIGHT
-%token EDIF_TOK_MASKLAYOUT
-%token EDIF_TOK_MASS
-%token EDIF_TOK_MEASURED
-%token EDIF_TOK_MX
-%token EDIF_TOK_MXR90
-%token EDIF_TOK_MY
-%token EDIF_TOK_MYR90
-%token EDIF_TOK_NETLIST
-%token EDIF_TOK_OUTPUT
-%token EDIF_TOK_PCBLAYOUT
-%token EDIF_TOK_POWER
-%token EDIF_TOK_R0
-%token EDIF_TOK_R180
-%token EDIF_TOK_R270
-%token EDIF_TOK_R90
-%token EDIF_TOK_REQUIRED
-%token EDIF_TOK_RESISTANCE
-%token EDIF_TOK_RIPPER
-%token EDIF_TOK_ROUND
-%token EDIF_TOK_SCHEMATIC
-%token EDIF_TOK_STRANGER
-%token EDIF_TOK_SYMBOLIC
-%token EDIF_TOK_TEMPERATURE
-%token EDIF_TOK_TIE
-%token EDIF_TOK_TIME
-%token EDIF_TOK_TRUNCATE
-%token EDIF_TOK_UPPERCENTER
-%token EDIF_TOK_UPPERLEFT
-%token EDIF_TOK_UPPERRIGHT
-%token EDIF_TOK_VOLTAGE
-
-%token EDIF_TOK_ACLOAD
-%token EDIF_TOK_AFTER
-%token EDIF_TOK_ANNOTATE
-%token EDIF_TOK_APPLY
-%token EDIF_TOK_ARC
-%token EDIF_TOK_ARRAY
-%token EDIF_TOK_ARRAYMACRO
-%token EDIF_TOK_ARRAYRELATEDINFO
-%token EDIF_TOK_ARRAYSITE
-%token EDIF_TOK_ATLEAST
-%token EDIF_TOK_ATMOST
-%token EDIF_TOK_AUTHOR
-%token EDIF_TOK_BASEARRAY
-%token EDIF_TOK_BECOMES
-%token EDIF_TOK_BETWEEN
-%token EDIF_TOK_BOOLEAN
-%token EDIF_TOK_BOOLEANDISPLAY
-%token EDIF_TOK_BOOLEANMAP
-%token EDIF_TOK_BORDERPATTERN
-%token EDIF_TOK_BORDERWIDTH
-%token EDIF_TOK_BOUNDINGBOX
-%token EDIF_TOK_CELL
-%token EDIF_TOK_CELLREF
-%token EDIF_TOK_CELLTYPE
-%token EDIF_TOK_CHANGE
-%token EDIF_TOK_CIRCLE
-%token EDIF_TOK_COLOR
-%token EDIF_TOK_COMMENT
-%token EDIF_TOK_COMMENTGRAPHICS
-%token EDIF_TOK_COMPOUND
-%token EDIF_TOK_CONNECTLOCATION
-%token EDIF_TOK_CONTENTS
-%token EDIF_TOK_CORNERTYPE
-%token EDIF_TOK_CRITICALITY
-%token EDIF_TOK_CURRENTMAP
-%token EDIF_TOK_CURVE
-%token EDIF_TOK_CYCLE
-%token EDIF_TOK_DATAORIGIN
-%token EDIF_TOK_DCFANINLOAD
-%token EDIF_TOK_DCFANOUTLOAD
-%token EDIF_TOK_DCMAXFANIN
-%token EDIF_TOK_DCMAXFANOUT
-%token EDIF_TOK_DELAY
-%token EDIF_TOK_DELTA
-%token EDIF_TOK_DERIVATION
-%token EDIF_TOK_DESIGN
-%token EDIF_TOK_DESIGNATOR
-%token EDIF_TOK_DIFFERENCE
-%token EDIF_TOK_DIRECTION
-%token EDIF_TOK_DISPLAY
-%token EDIF_TOK_DOMINATES
-%token EDIF_TOK_DOT
-%token EDIF_TOK_DURATION
-%token EDIF_TOK_E
-%token EDIF_TOK_EDIF
-%token EDIF_TOK_EDIFLEVEL
-%token EDIF_TOK_EDIFVERSION
-%token EDIF_TOK_ENCLOSUREDISTANCE
-%token EDIF_TOK_ENDTYPE
-%token EDIF_TOK_ENTRY
-%token EDIF_TOK_EVENT
-%token EDIF_TOK_EXACTLY
-%token EDIF_TOK_EXTERNAL
-%token EDIF_TOK_FABRICATE
-%token EDIF_TOK_FALSE
-%token EDIF_TOK_FIGURE
-%token EDIF_TOK_FIGUREAREA
-%token EDIF_TOK_FIGUREGROUP
-%token EDIF_TOK_FIGUREGROUPOBJECT
-%token EDIF_TOK_FIGUREGROUPOVERRIDE
-%token EDIF_TOK_FIGUREGROUPREF
-%token EDIF_TOK_FIGUREPERIMETER
-%token EDIF_TOK_FIGUREWIDTH
-%token EDIF_TOK_FILLPATTERN
-%token EDIF_TOK_FOLLOW
-%token EDIF_TOK_FORBIDDENEVENT
-%token EDIF_TOK_GLOBALPORTREF
-%token EDIF_TOK_GREATERTHAN
-%token EDIF_TOK_GRIDMAP
-%token EDIF_TOK_IGNORE
-%token EDIF_TOK_INCLUDEFIGUREGROUP
-%token EDIF_TOK_INITIAL
-%token EDIF_TOK_INSTANCE
-%token EDIF_TOK_INSTANCEBACKANNOTATE
-%token EDIF_TOK_INSTANCEGROUP
-%token EDIF_TOK_INSTANCEMAP
-%token EDIF_TOK_INSTANCEREF
-%token EDIF_TOK_INTEGER
-%token EDIF_TOK_INTEGERDISPLAY
-%token EDIF_TOK_INTERFACE
-%token EDIF_TOK_INTERFIGUREGROUPSPACING
-%token EDIF_TOK_INTERSECTION
-%token EDIF_TOK_INTRAFIGUREGROUPSPACING
-%token EDIF_TOK_INVERSE
-%token EDIF_TOK_ISOLATED
-%token EDIF_TOK_JOINED
-%token EDIF_TOK_JUSTIFY
-%token EDIF_TOK_KEYWORDDISPLAY
-%token EDIF_TOK_KEYWORDLEVEL
-%token EDIF_TOK_KEYWORDMAP
-%token EDIF_TOK_LESSTHAN
-%token EDIF_TOK_LIBRARY
-%token EDIF_TOK_LIBRARYREF
-%token EDIF_TOK_LISTOFNETS
-%token EDIF_TOK_LISTOFPORTS
-%token EDIF_TOK_LOADDELAY
-%token EDIF_TOK_LOGICASSIGN
-%token EDIF_TOK_LOGICINPUT
-%token EDIF_TOK_LOGICLIST
-%token EDIF_TOK_LOGICMAPINPUT
-%token EDIF_TOK_LOGICMAPOUTPUT
-%token EDIF_TOK_LOGICONEOF
-%token EDIF_TOK_LOGICOUTPUT
-%token EDIF_TOK_LOGICPORT
-%token EDIF_TOK_LOGICREF
-%token EDIF_TOK_LOGICVALUE
-%token EDIF_TOK_LOGICWAVEFORM
-%token EDIF_TOK_MAINTAIN
-%token EDIF_TOK_MATCH
-%token EDIF_TOK_MEMBER
-%token EDIF_TOK_MINOMAX
-%token EDIF_TOK_MINOMAXDISPLAY
-%token EDIF_TOK_MNM
-%token EDIF_TOK_MULTIPLEVALUESET
-%token EDIF_TOK_MUSTJOIN
-%token EDIF_TOK_NAME
-%token EDIF_TOK_NET
-%token EDIF_TOK_NETBACKANNOTATE
-%token EDIF_TOK_NETBUNDLE
-%token EDIF_TOK_NETDELAY
-%token EDIF_TOK_NETGROUP
-%token EDIF_TOK_NETMAP
-%token EDIF_TOK_NETREF
-%token EDIF_TOK_NOCHANGE
-%token EDIF_TOK_NONPERMUTABLE
-%token EDIF_TOK_NOTALLOWED
-%token EDIF_TOK_NOTCHSPACING
-%token EDIF_TOK_NUMBER
-%token EDIF_TOK_NUMBERDEFINITION
-%token EDIF_TOK_NUMBERDISPLAY
-%token EDIF_TOK_OFFPAGECONNECTOR
-%token EDIF_TOK_OFFSETEVENT
-%token EDIF_TOK_OPENSHAPE
-%token EDIF_TOK_ORIENTATION
-%token EDIF_TOK_ORIGIN
-%token EDIF_TOK_OVERHANGDISTANCE
-%token EDIF_TOK_OVERLAPDISTANCE
-%token EDIF_TOK_OVERSIZE
-%token EDIF_TOK_OWNER
-%token EDIF_TOK_PAGE
-%token EDIF_TOK_PAGESIZE
-%token EDIF_TOK_PARAMETER
-%token EDIF_TOK_PARAMETERASSIGN
-%token EDIF_TOK_PARAMETERDISPLAY
-%token EDIF_TOK_PATH
-%token EDIF_TOK_PATHDELAY
-%token EDIF_TOK_PATHWIDTH
-%token EDIF_TOK_PERMUTABLE
-%token EDIF_TOK_PHYSICALDESIGNRULE
-%token EDIF_TOK_PLUG
-%token EDIF_TOK_POINT
-%token EDIF_TOK_POINTDISPLAY
-%token EDIF_TOK_POINTLIST
-%token EDIF_TOK_POLYGON
-%token EDIF_TOK_PORT
-%token EDIF_TOK_PORTBACKANNOTATE
-%token EDIF_TOK_PORTBUNDLE
-%token EDIF_TOK_PORTDELAY
-%token EDIF_TOK_PORTGROUP
-%token EDIF_TOK_PORTIMPLEMENTATION
-%token EDIF_TOK_PORTINSTANCE
-%token EDIF_TOK_PORTLIST
-%token EDIF_TOK_PORTLISTALIAS
-%token EDIF_TOK_PORTMAP
-%token EDIF_TOK_PORTREF
-%token EDIF_TOK_PROGRAM
-%token EDIF_TOK_PROPERTY
-%token EDIF_TOK_PROPERTYDISPLAY
-%token EDIF_TOK_PROTECTIONFRAME
-%token EDIF_TOK_PT
-%token EDIF_TOK_RANGEVECTOR
-%token EDIF_TOK_RECTANGLE
-%token EDIF_TOK_RECTANGLESIZE
-%token EDIF_TOK_RENAME
-%token EDIF_TOK_RESOLVES
-%token EDIF_TOK_SCALE
-%token EDIF_TOK_SCALEX
-%token EDIF_TOK_SCALEY
-%token EDIF_TOK_SECTION
-%token EDIF_TOK_SHAPE
-%token EDIF_TOK_SIMULATE
-%token EDIF_TOK_SIMULATIONINFO
-%token EDIF_TOK_SINGLEVALUESET
-%token EDIF_TOK_SITE
-%token EDIF_TOK_SOCKET
-%token EDIF_TOK_SOCKETSET
-%token EDIF_TOK_STATUS
-%token EDIF_TOK_STEADY
-%token EDIF_TOK_STRING
-%token EDIF_TOK_STRINGDISPLAY
-%token EDIF_TOK_STRONG
-%token EDIF_TOK_SYMBOL
-%token EDIF_TOK_SYMMETRY
-%token EDIF_TOK_TABLE
-%token EDIF_TOK_TABLEDEFAULT
-%token EDIF_TOK_TECHNOLOGY
-%token EDIF_TOK_TEXTHEIGHT
-%token EDIF_TOK_TIMEINTERVAL
-%token EDIF_TOK_TIMESTAMP
-%token EDIF_TOK_TIMING
-%token EDIF_TOK_TRANSFORM
-%token EDIF_TOK_TRANSITION
-%token EDIF_TOK_TRIGGER
-%token EDIF_TOK_TRUE
-%token EDIF_TOK_UNCONSTRAINED
-%token EDIF_TOK_UNDEFINED
-%token EDIF_TOK_UNION
-%token EDIF_TOK_UNIT
-%token EDIF_TOK_UNUSED
-%token EDIF_TOK_USERDATA
-%token EDIF_TOK_VERSION
-%token EDIF_TOK_VIEW
-%token EDIF_TOK_VIEWLIST
-%token EDIF_TOK_VIEWMAP
-%token EDIF_TOK_VIEWREF
-%token EDIF_TOK_VIEWTYPE
-%token EDIF_TOK_VISIBLE
-%token EDIF_TOK_VOLTAGEMAP
-%token EDIF_TOK_WAVEVALUE
-%token EDIF_TOK_WEAK
-%token EDIF_TOK_WEAKJOINED
-%token EDIF_TOK_WHEN
-%token EDIF_TOK_WRITTEN
-
-%start Edif
-
-%%
-
-PopC : ')' { PopC(); }
- ;
-
-Edif : EDIF_TOK_EDIF EdifFileName EdifVersion EdifLevel KeywordMap _Edif PopC
- ;
-
-_Edif :
- | _Edif Status
- | _Edif External
- | _Edif Library
- | _Edif Design
- | _Edif Comment
- | _Edif UserData
- ;
-
-EdifFileName : NameDef { str_pair_free($1); }
- ;
-
-EdifLevel : EDIF_TOK_EDIFLEVEL Int PopC { free($2); }
- ;
-
-EdifVersion : EDIF_TOK_EDIFVERSION Int Int Int PopC
-{ free($2); free($3); free($4); }
- ;
-
-AcLoad : EDIF_TOK_ACLOAD _AcLoad PopC
- ;
-
-_AcLoad : MiNoMaValue
- | MiNoMaDisp
- ;
-
-After : EDIF_TOK_AFTER _After PopC
- ;
-
-_After : MiNoMaValue
- | _After Follow
- | _After Maintain
- | _After LogicAssn
- | _After Comment
- | _After UserData
- ;
-
-Annotate : EDIF_TOK_ANNOTATE _Annotate PopC
- ;
-
-_Annotate : Str { free($1); }
- | StrDisplay
- ;
-
-Apply : EDIF_TOK_APPLY _Apply PopC
- ;
-
-_Apply : Cycle
- | _Apply LogicIn
- | _Apply LogicOut
- | _Apply Comment
- | _Apply UserData
- ;
-
-Arc : EDIF_TOK_ARC PointValue PointValue PointValue PopC
- ;
-
-Array : EDIF_TOK_ARRAY NameDef Int _Array PopC { str_pair_free($2); free($3); }
- ;
-
-_Array :
- | Int { free($1); }
- ;
-
-ArrayMacro : EDIF_TOK_ARRAYMACRO Plug PopC
- ;
-
-ArrayRelInfo : EDIF_TOK_ARRAYRELATEDINFO _ArrayRelInfo PopC
- ;
-
-_ArrayRelInfo : BaseArray
- | ArraySite
- | ArrayMacro
- | _ArrayRelInfo Comment
- | _ArrayRelInfo UserData
- ;
-
-ArraySite : EDIF_TOK_ARRAYSITE Socket PopC
- ;
-
-AtLeast : EDIF_TOK_ATLEAST ScaledInt PopC
- ;
-
-AtMost : EDIF_TOK_ATMOST ScaledInt PopC
- ;
-
-Author : EDIF_TOK_AUTHOR Str PopC { free($2); }
- ;
-
-BaseArray : EDIF_TOK_BASEARRAY PopC
- ;
-
-Becomes : EDIF_TOK_BECOMES _Becomes PopC
- ;
-
-_Becomes : LogicNameRef
- | LogicList
- | LogicOneOf
- ;
-
-Between : EDIF_TOK_BETWEEN __Between _Between PopC
- ;
-
-__Between : AtLeast
- | GreaterThan
- ;
-
-_Between : AtMost
- | LessThan
- ;
-
-Boolean : EDIF_TOK_BOOLEAN _Boolean PopC
- ;
-
-_Boolean :
- | _Boolean BooleanValue
- | _Boolean BooleanDisp
- | _Boolean Boolean
- ;
-
-BooleanDisp : EDIF_TOK_BOOLEANDISPLAY _BooleanDisp PopC
- ;
-
-_BooleanDisp : BooleanValue
- | _BooleanDisp Display
- ;
-
-BooleanMap : EDIF_TOK_BOOLEANMAP BooleanValue PopC
- ;
-
-BooleanValue : True
- | False
- ;
-
-BorderPat : EDIF_TOK_BORDERPATTERN Int Int Boolean PopC { free($2); free($3); }
- ;
-
-BorderWidth : EDIF_TOK_BORDERWIDTH Int PopC { free($2); }
- ;
-
-BoundBox : EDIF_TOK_BOUNDINGBOX Rectangle PopC
- ;
-
-Cell : EDIF_TOK_CELL CellNameDef _Cell PopC
- ;
-
-_Cell : CellType
- | _Cell Status
- | _Cell ViewMap
- | _Cell View
- | _Cell Comment
- | _Cell UserData
- | _Cell Property
- ;
-
-CellNameDef : NameDef { str_pair_free($1); }
- ;
-
-CellRef : EDIF_TOK_CELLREF CellNameRef _CellRef PopC
- ;
-
-_CellRef :
- | LibraryRef
- ;
-
-CellNameRef : NameRef { free($1); }
- ;
-
-CellType : EDIF_TOK_CELLTYPE _CellType PopC
- ;
-
-_CellType : EDIF_TOK_TIE
- | EDIF_TOK_RIPPER
- | EDIF_TOK_GENERIC
- ;
-
-Change : EDIF_TOK_CHANGE __Change _Change PopC
- ;
-
-__Change : PortNameRef
- | PortRef { str_pair_free($1); }
- | PortList
- ;
-
-_Change :
- | Becomes
- | Transition
- ;
-
-Circle : EDIF_TOK_CIRCLE PointValue PointValue _Circle PopC
- ;
-
-_Circle :
- | _Circle Property
- ;
-
-Color : EDIF_TOK_COLOR ScaledInt ScaledInt ScaledInt PopC
- ;
-
-Comment : EDIF_TOK_COMMENT _Comment PopC
- ;
-
-_Comment :
- | _Comment Str { free($2); }
- ;
-
-CommGraph : EDIF_TOK_COMMENTGRAPHICS _CommGraph PopC
- ;
-
-_CommGraph :
- | _CommGraph Annotate
- | _CommGraph Figure
- | _CommGraph Instance
- | _CommGraph BoundBox
- | _CommGraph Property
- | _CommGraph Comment
- | _CommGraph UserData
- ;
-
-Compound : EDIF_TOK_COMPOUND LogicNameRef PopC
- ;
-
-Contents : EDIF_TOK_CONTENTS _Contents PopC
- ;
-
-_Contents :
- | _Contents Instance
- | _Contents OffPageConn
- | _Contents Figure
- | _Contents Section
- | _Contents Net
- | _Contents NetBundle
- | _Contents Page
- | _Contents CommGraph
- | _Contents PortImpl
- | _Contents Timing
- | _Contents Simulate
- | _Contents When
- | _Contents Follow
- | _Contents LogicPort
- | _Contents BoundBox
- | _Contents Comment
- | _Contents UserData
- ;
-
-ConnectLoc : EDIF_TOK_CONNECTLOCATION _ConnectLoc PopC
- ;
-
-_ConnectLoc :
- | Figure
- ;
-
-CornerType : EDIF_TOK_CORNERTYPE _CornerType PopC
- ;
-
-_CornerType : EDIF_TOK_EXTEND
- | EDIF_TOK_ROUND
- | EDIF_TOK_TRUNCATE
- ;
-
-Criticality : EDIF_TOK_CRITICALITY _Criticality PopC
- ;
-
-_Criticality : Int { free($1); }
- | IntDisplay
- ;
-
-CurrentMap : EDIF_TOK_CURRENTMAP MiNoMaValue PopC
- ;
-
-Curve : EDIF_TOK_CURVE _Curve PopC
- ;
-
-_Curve :
- | _Curve Arc
- | _Curve PointValue
- ;
-
-Cycle : EDIF_TOK_CYCLE Int _Cycle PopC { free($2); }
- ;
-
-_Cycle :
- | Duration
- ;
-
-DataOrigin : EDIF_TOK_DATAORIGIN Str _DataOrigin PopC { free($2); }
- ;
-
-_DataOrigin :
- | Version
- ;
-
-DcFanInLoad : EDIF_TOK_DCFANINLOAD _DcFanInLoad PopC
- ;
-
-_DcFanInLoad : ScaledInt
- | NumbDisplay
- ;
-
-DcFanOutLoad : EDIF_TOK_DCFANOUTLOAD _DcFanOutLoad PopC
- ;
-
-_DcFanOutLoad : ScaledInt
- | NumbDisplay
- ;
-
-DcMaxFanIn : EDIF_TOK_DCMAXFANIN _DcMaxFanIn PopC
- ;
-
-_DcMaxFanIn : ScaledInt
- | NumbDisplay
- ;
-
-DcMaxFanOut : EDIF_TOK_DCMAXFANOUT _DcMaxFanOut PopC
- ;
-
-_DcMaxFanOut : ScaledInt
- | NumbDisplay
- ;
-
-Delay : EDIF_TOK_DELAY _Delay PopC
- ;
-
-_Delay : MiNoMaValue
- | MiNoMaDisp
- ;
-
-Delta : EDIF_TOK_DELTA _Delta PopC
- ;
-
-_Delta :
- | _Delta PointValue
- ;
-
-Derivation : EDIF_TOK_DERIVATION _Derivation PopC
- ;
-
-_Derivation : EDIF_TOK_CALCULATED
- | EDIF_TOK_MEASURED
- | EDIF_TOK_REQUIRED
- ;
-
-Design : EDIF_TOK_DESIGN DesignNameDef _Design PopC
- ;
-
-_Design : CellRef
- | _Design Status
- | _Design Comment
- | _Design Property
- | _Design UserData
- ;
-
-Designator : EDIF_TOK_DESIGNATOR _Designator PopC
- ;
-
-_Designator : Str { free($1); }
- | StrDisplay
- ;
-
-DesignNameDef : NameDef { str_pair_free($1); }
- ;
-
-DesignRule : EDIF_TOK_PHYSICALDESIGNRULE _DesignRule PopC
- ;
-
-_DesignRule :
- | _DesignRule FigureWidth
- | _DesignRule FigureArea
- | _DesignRule RectSize
- | _DesignRule FigurePerim
- | _DesignRule OverlapDist
- | _DesignRule OverhngDist
- | _DesignRule EncloseDist
- | _DesignRule InterFigGrp
- | _DesignRule IntraFigGrp
- | _DesignRule NotchSpace
- | _DesignRule NotAllowed
- | _DesignRule FigGrp
- | _DesignRule Comment
- | _DesignRule UserData
- ;
-
-Difference : EDIF_TOK_DIFFERENCE _Difference PopC
- ;
-
-_Difference : FigGrpRef
- | FigureOp
- | _Difference FigGrpRef
- | _Difference FigureOp
- ;
-
-Direction : EDIF_TOK_DIRECTION _Direction PopC
- ;
-
-_Direction : EDIF_TOK_INOUT
- | EDIF_TOK_INPUT
- | EDIF_TOK_OUTPUT
- ;
-
-Display : EDIF_TOK_DISPLAY _Display _DisplayJust _DisplayOrien _DisplayOrg PopC
- ;
-
-_Display : FigGrpNameRef
- | FigGrpOver
- ;
-
-_DisplayJust :
- | Justify
- ;
-
-_DisplayOrien :
- | Orientation
- ;
-
-_DisplayOrg :
- | Origin
- ;
-
-Dominates : EDIF_TOK_DOMINATES _Dominates PopC
- ;
-
-_Dominates :
- | _Dominates LogicNameRef
- ;
-
-Dot : EDIF_TOK_DOT _Dot PopC
- ;
-
-_Dot : PointValue
- | _Dot Property
- ;
-
-Duration : EDIF_TOK_DURATION ScaledInt PopC
- ;
-
-EncloseDist : EDIF_TOK_ENCLOSUREDISTANCE RuleNameDef FigGrpObj FigGrpObj _EncloseDist
- PopC
- ;
-
-_EncloseDist : Range
- | SingleValSet
- | _EncloseDist Comment
- | _EncloseDist UserData
- ;
-
-EndType : EDIF_TOK_ENDTYPE _EndType PopC
- ;
-
-_EndType : EDIF_TOK_EXTEND
- | EDIF_TOK_ROUND
- | EDIF_TOK_TRUNCATE
- ;
-
-Entry : EDIF_TOK_ENTRY ___Entry __Entry _Entry
- PopC
- ;
-
-___Entry : Match
- | Change
- | Steady
- ;
-
-__Entry : LogicRef
- | PortRef { str_pair_free($1); }
- | NoChange
- | Table
- ;
-
-_Entry :
- | Delay
- | LoadDelay
- ;
-
-Event : EDIF_TOK_EVENT _Event PopC
- ;
-
-_Event : PortRef { str_pair_free($1); }
- | PortList
- | PortGroup
- | NetRef
- | NetGroup
- | _Event Transition
- | _Event Becomes
- ;
-
-Exactly : EDIF_TOK_EXACTLY ScaledInt PopC
- ;
-
-External : EDIF_TOK_EXTERNAL LibNameDef EdifLevel _External PopC
- ;
-
-_External : Technology
- | _External Status
- | _External Cell
- | _External Comment
- | _External UserData
- ;
-
-Fabricate : EDIF_TOK_FABRICATE LayerNameDef FigGrpNameRef PopC
- ;
-
-False : EDIF_TOK_FALSE PopC
- ;
-
-FigGrp : EDIF_TOK_FIGUREGROUP _FigGrp PopC
- ;
-
-_FigGrp : FigGrpNameDef
- | _FigGrp CornerType
- | _FigGrp EndType
- | _FigGrp PathWidth
- | _FigGrp BorderWidth
- | _FigGrp Color
- | _FigGrp FillPattern
- | _FigGrp BorderPat
- | _FigGrp TextHeight
- | _FigGrp Visible
- | _FigGrp Comment
- | _FigGrp Property
- | _FigGrp UserData
- | _FigGrp IncFigGrp
- ;
-
-FigGrpNameDef : NameDef { str_pair_free($1); }
- ;
-
-FigGrpNameRef : NameRef { free($1); }
- ;
-
-FigGrpObj : EDIF_TOK_FIGUREGROUPOBJECT _FigGrpObj PopC
- ;
-
-_FigGrpObj : FigGrpNameRef
- | FigGrpRef
- | FigureOp
- ;
-
-FigGrpOver : EDIF_TOK_FIGUREGROUPOVERRIDE _FigGrpOver PopC
- ;
-
-_FigGrpOver : FigGrpNameRef
- | _FigGrpOver CornerType
- | _FigGrpOver EndType
- | _FigGrpOver PathWidth
- | _FigGrpOver BorderWidth
- | _FigGrpOver Color
- | _FigGrpOver FillPattern
- | _FigGrpOver BorderPat
- | _FigGrpOver TextHeight
- | _FigGrpOver Visible
- | _FigGrpOver Comment
- | _FigGrpOver Property
- | _FigGrpOver UserData
- ;
-
-FigGrpRef : EDIF_TOK_FIGUREGROUPREF FigGrpNameRef _FigGrpRef PopC
- ;
-
-_FigGrpRef :
- | LibraryRef
- ;
-
-Figure : EDIF_TOK_FIGURE _Figure PopC
- ;
-
-_Figure : FigGrpNameDef
- | FigGrpOver
- | _Figure Circle
- | _Figure Dot
- | _Figure OpenShape
- | _Figure Path
- | _Figure Polygon
- | _Figure Rectangle
- | _Figure Shape
- | _Figure Comment
- | _Figure UserData
- ;
-
-FigureArea : EDIF_TOK_FIGUREAREA RuleNameDef FigGrpObj _FigureArea PopC
- ;
-
-_FigureArea : Range
- | SingleValSet
- | _FigureArea Comment
- | _FigureArea UserData
- ;
-
-FigureOp : Intersection
- | Union
- | Difference
- | Inverse
- | Oversize
- ;
-
-FigurePerim : EDIF_TOK_FIGUREPERIMETER RuleNameDef FigGrpObj _FigurePerim PopC
- ;
-
-_FigurePerim : Range
- | SingleValSet
- | _FigurePerim Comment
- | _FigurePerim UserData
- ;
-
-FigureWidth : EDIF_TOK_FIGUREWIDTH RuleNameDef FigGrpObj _FigureWidth PopC
- ;
-
-_FigureWidth : Range
- | SingleValSet
- | _FigureWidth Comment
- | _FigureWidth UserData
- ;
-
-FillPattern : EDIF_TOK_FILLPATTERN Int Int Boolean PopC { free($2); free($3); }
- ;
-
-Follow : EDIF_TOK_FOLLOW __Follow _Follow PopC
- ;
-
-__Follow : PortNameRef
- | PortRef { str_pair_free($1); }
- ;
-
-_Follow : PortRef { str_pair_free($1); }
- | Table
- | _Follow Delay
- | _Follow LoadDelay
- ;
-
-Forbidden : EDIF_TOK_FORBIDDENEVENT _Forbidden PopC
- ;
-
-_Forbidden : TimeIntval
- | _Forbidden Event
- ;
-
-Form : Keyword _Form ')' { free($1); }
- ;
-
-_Form :
- | _Form Int { free($2); }
- | _Form Str { free($2); }
- | _Form Ident { free($2); }
- | _Form Form
- ;
-
-GlobPortRef : EDIF_TOK_GLOBALPORTREF PortNameRef PopC
- ;
-
-GreaterThan : EDIF_TOK_GREATERTHAN ScaledInt PopC
- ;
-
-GridMap : EDIF_TOK_GRIDMAP ScaledInt ScaledInt PopC
- ;
-
-Ignore : EDIF_TOK_IGNORE PopC
- ;
-
-IncFigGrp : EDIF_TOK_INCLUDEFIGUREGROUP _IncFigGrp PopC
- ;
-
-_IncFigGrp : FigGrpRef
- | FigureOp
- ;
-
-Initial : EDIF_TOK_INITIAL PopC
- ;
-
-Instance : EDIF_TOK_INSTANCE InstNameDef _Instance PopC
- ;
-
-_Instance : ViewRef
- | ViewList
- | _Instance Transform
- | _Instance ParamAssign
- | _Instance PortInst
- | _Instance Timing
- | _Instance Designator
- | _Instance Property
- | _Instance Comment
- | _Instance UserData
- ;
-
-InstanceRef : EDIF_TOK_INSTANCEREF InstNameRef _InstanceRef PopC { $$=$2; }
- ;
-
-_InstanceRef :
-| InstanceRef { free($1); }
- | ViewRef
- ;
-
-InstBackAn : EDIF_TOK_INSTANCEBACKANNOTATE _InstBackAn PopC
- ;
-
-_InstBackAn : InstanceRef { free($1); }
- | _InstBackAn Designator
- | _InstBackAn Timing
- | _InstBackAn Property
- | _InstBackAn Comment
- ;
-
-InstGroup : EDIF_TOK_INSTANCEGROUP _InstGroup PopC
- ;
-
-_InstGroup :
- | _InstGroup InstanceRef { free($2); }
- ;
-
-InstMap : EDIF_TOK_INSTANCEMAP _InstMap PopC
- ;
-
-_InstMap :
- | _InstMap InstanceRef { free($2); }
- | _InstMap InstGroup
- | _InstMap Comment
- | _InstMap UserData
- ;
-
-InstNameDef : NameDef { str_pair_free($1); }
- | Array
- ;
-
-InstNameRef : NameRef { $$=$1; }
- | Member
- ;
-
-IntDisplay : EDIF_TOK_INTEGERDISPLAY _IntDisplay PopC
- ;
-
-_IntDisplay : Int { free($1); }
- | _IntDisplay Display
- ;
-
-Integer : EDIF_TOK_INTEGER _Integer PopC
- ;
-
-_Integer :
- | _Integer Int { free($2); }
- | _Integer IntDisplay
- | _Integer Integer
- ;
-
-Interface : EDIF_TOK_INTERFACE _Interface PopC
- ;
-
-_Interface :
- | _Interface Port
- | _Interface PortBundle
- | _Interface Symbol
- | _Interface ProtectFrame
- | _Interface ArrayRelInfo
- | _Interface Parameter
- | _Interface Joined { pair_list_free($2); }
- | _Interface MustJoin
- | _Interface WeakJoined
- | _Interface Permutable
- | _Interface Timing
- | _Interface Simulate
- | _Interface Designator
- | _Interface Property
- | _Interface Comment
- | _Interface UserData
- ;
-
-InterFigGrp : EDIF_TOK_INTERFIGUREGROUPSPACING RuleNameDef FigGrpObj FigGrpObj
- _InterFigGrp PopC
- ;
-
-_InterFigGrp : Range
- | SingleValSet
- | _InterFigGrp Comment
- | _InterFigGrp UserData
- ;
-
-Intersection : EDIF_TOK_INTERSECTION _Intersection PopC
- ;
-
-_Intersection : FigGrpRef
- | FigureOp
- | _Intersection FigGrpRef
- | _Intersection FigureOp
- ;
-
-IntraFigGrp : EDIF_TOK_INTRAFIGUREGROUPSPACING RuleNameDef FigGrpObj _IntraFigGrp PopC
- ;
-
-_IntraFigGrp : Range
- | SingleValSet
- | _IntraFigGrp Comment
- | _IntraFigGrp UserData
- ;
-
-Inverse : EDIF_TOK_INVERSE _Inverse PopC
- ;
-
-_Inverse : FigGrpRef
- | FigureOp
- ;
-
-Isolated : EDIF_TOK_ISOLATED PopC
- ;
-
-Joined : EDIF_TOK_JOINED _Joined PopC { $$ = new_pair_list($2); }
- ;
-
-_Joined : { $$=NULL; }
-| _Joined PortRef { $2->next = $1; $$ = $2; }
- | _Joined PortList
- | _Joined GlobPortRef
- ;
-
-Justify : EDIF_TOK_JUSTIFY _Justify PopC
- ;
-
-_Justify : EDIF_TOK_CENTERCENTER
- | EDIF_TOK_CENTERLEFT
- | EDIF_TOK_CENTERRIGHT
- | EDIF_TOK_LOWERCENTER
- | EDIF_TOK_LOWERLEFT
- | EDIF_TOK_LOWERRIGHT
- | EDIF_TOK_UPPERCENTER
- | EDIF_TOK_UPPERLEFT
- | EDIF_TOK_UPPERRIGHT
- ;
-
-KeywordDisp : EDIF_TOK_KEYWORDDISPLAY _KeywordDisp PopC
- ;
-
-_KeywordDisp : KeywordName
- | _KeywordDisp Display
- ;
-
-KeywordLevel : EDIF_TOK_KEYWORDLEVEL Int PopC { free($2); }
- ;
-
-KeywordMap : EDIF_TOK_KEYWORDMAP _KeywordMap PopC
- ;
-
-_KeywordMap : KeywordLevel
- | _KeywordMap Comment
- ;
-
-KeywordName : Ident { free($1); }
- ;
-
-LayerNameDef : NameDef { str_pair_free($1); }
- ;
-
-LessThan : EDIF_TOK_LESSTHAN ScaledInt PopC
- ;
-
-LibNameDef : NameDef { str_pair_free($1); }
- ;
-
-LibNameRef : NameRef { free($1); }
- ;
-
-Library : EDIF_TOK_LIBRARY LibNameDef EdifLevel _Library PopC
- ;
-
-_Library : Technology
- | _Library Status
- | _Library Cell
- | _Library Comment
- | _Library UserData
- ;
-
-LibraryRef : EDIF_TOK_LIBRARYREF LibNameRef PopC
- ;
-
-ListOfNets : EDIF_TOK_LISTOFNETS _ListOfNets PopC
- ;
-
-_ListOfNets :
- | _ListOfNets Net
- ;
-
-ListOfPorts : EDIF_TOK_LISTOFPORTS _ListOfPorts PopC
- ;
-
-_ListOfPorts :
- | _ListOfPorts Port
- | _ListOfPorts PortBundle
- ;
-
-LoadDelay : EDIF_TOK_LOADDELAY _LoadDelay _LoadDelay PopC
- ;
-
-_LoadDelay : MiNoMaValue
- | MiNoMaDisp
- ;
-
-LogicAssn : EDIF_TOK_LOGICASSIGN ___LogicAssn __LogicAssn _LogicAssn PopC
- ;
-
-___LogicAssn : PortNameRef
- | PortRef { str_pair_free($1); }
- ;
-
-__LogicAssn : PortRef { str_pair_free($1); }
- | LogicRef
- | Table
- ;
-
-_LogicAssn :
- | Delay
- | LoadDelay
- ;
-
-LogicIn : EDIF_TOK_LOGICINPUT _LogicIn PopC
- ;
-
-_LogicIn : PortList
- | PortRef { str_pair_free($1); }
- | PortNameRef
- | _LogicIn LogicWave
- ;
-
-LogicList : EDIF_TOK_LOGICLIST _LogicList PopC
- ;
-
-_LogicList :
- | _LogicList LogicNameRef
- | _LogicList LogicOneOf
- | _LogicList Ignore
- ;
-
-LogicMapIn : EDIF_TOK_LOGICMAPINPUT _LogicMapIn PopC
- ;
-
-_LogicMapIn :
- | _LogicMapIn LogicNameRef
- ;
-
-LogicMapOut : EDIF_TOK_LOGICMAPOUTPUT _LogicMapOut PopC
- ;
-
-_LogicMapOut :
- | _LogicMapOut LogicNameRef
- ;
-
-LogicNameDef : NameDef { str_pair_free($1); }
- ;
-
-LogicNameRef : NameRef { free($1); }
- ;
-
-LogicOneOf : EDIF_TOK_LOGICONEOF _LogicOneOf PopC
- ;
-
-_LogicOneOf :
- | _LogicOneOf LogicNameRef
- | _LogicOneOf LogicList
- ;
-
-LogicOut : EDIF_TOK_LOGICOUTPUT _LogicOut PopC
- ;
-
-_LogicOut : PortList
- | PortRef { str_pair_free($1); }
- | PortNameRef
- | _LogicOut LogicWave
- ;
-
-LogicPort : EDIF_TOK_LOGICPORT _LogicPort PopC
- ;
-
-_LogicPort : PortNameDef
- | _LogicPort Property
- | _LogicPort Comment
- | _LogicPort UserData
- ;
-
-LogicRef : EDIF_TOK_LOGICREF LogicNameRef _LogicRef PopC
- ;
-
-_LogicRef :
- | LibraryRef
- ;
-
-LogicValue : EDIF_TOK_LOGICVALUE _LogicValue PopC
- ;
-
-_LogicValue : LogicNameDef
- | _LogicValue VoltageMap
- | _LogicValue CurrentMap
- | _LogicValue BooleanMap
- | _LogicValue Compound
- | _LogicValue Weak
- | _LogicValue Strong
- | _LogicValue Dominates
- | _LogicValue LogicMapOut
- | _LogicValue LogicMapIn
- | _LogicValue Isolated
- | _LogicValue Resolves
- | _LogicValue Property
- | _LogicValue Comment
- | _LogicValue UserData
- ;
-
-LogicWave : EDIF_TOK_LOGICWAVEFORM _LogicWave PopC
- ;
-
-_LogicWave :
- | _LogicWave LogicNameRef
- | _LogicWave LogicList
- | _LogicWave LogicOneOf
- | _LogicWave Ignore
- ;
-
-Maintain : EDIF_TOK_MAINTAIN __Maintain _Maintain PopC
- ;
-
-__Maintain : PortNameRef
- | PortRef { str_pair_free($1); }
- ;
-
-_Maintain :
- | Delay
- | LoadDelay
- ;
-
-Match : EDIF_TOK_MATCH __Match _Match PopC
- ;
-
-__Match : PortNameRef
- | PortRef { str_pair_free($1); }
- | PortList
- ;
-
-_Match : LogicNameRef
- | LogicList
- | LogicOneOf
- ;
-
-Member : EDIF_TOK_MEMBER NameRef _Member PopC { free($2); }
- ;
-
-_Member : Int { free($1); }
- | _Member Int { free($2); }
- ;
-
-MiNoMa : EDIF_TOK_MINOMAX _MiNoMa PopC
- ;
-
-_MiNoMa :
- | _MiNoMa MiNoMaValue
- | _MiNoMa MiNoMaDisp
- | _MiNoMa MiNoMa
- ;
-
-MiNoMaDisp : EDIF_TOK_MINOMAXDISPLAY _MiNoMaDisp PopC
- ;
-
-_MiNoMaDisp : MiNoMaValue
- | _MiNoMaDisp Display
- ;
-
-MiNoMaValue : Mnm
- | ScaledInt
- ;
-
-Mnm : EDIF_TOK_MNM _Mnm _Mnm _Mnm PopC
- ;
-
-_Mnm : ScaledInt
- | Undefined
- | Unconstrained
- ;
-
-MultValSet : EDIF_TOK_MULTIPLEVALUESET _MultValSet PopC
- ;
-
-_MultValSet :
- | _MultValSet RangeVector
- ;
-
-MustJoin : EDIF_TOK_MUSTJOIN _MustJoin PopC
- ;
-
-_MustJoin :
- | _MustJoin PortRef { str_pair_free($2); }
- | _MustJoin PortList
- | _MustJoin WeakJoined
- | _MustJoin Joined { pair_list_free($2); }
- ;
-
-Name : EDIF_TOK_NAME _Name PopC { $$=$2; }
- ;
-
-_Name : Ident { $$=$1; }
- | _Name Display
- ;
-
-NameDef : Ident { $$ = new_str_pair($1,NULL); }
- | Name { $$ = new_str_pair($1,NULL); }
-| Rename { $$=$1; }
- ;
-
-NameRef : Ident { $$=$1; }
- | Name { $$=$1; }
- ;
-
-Net : EDIF_TOK_NET NetNameDef _Net PopC { define_pcb_net($2, $3); }
- ;
-
-_Net : Joined { $$=$1; }
- | _Net Criticality
- | _Net NetDelay
- | _Net Figure
- | _Net Net
- | _Net Instance
- | _Net CommGraph
- | _Net Property
- | _Net Comment
- | _Net UserData
- ;
-
-NetBackAn : EDIF_TOK_NETBACKANNOTATE _NetBackAn PopC
- ;
-
-_NetBackAn : NetRef
- | _NetBackAn NetDelay
- | _NetBackAn Criticality
- | _NetBackAn Property
- | _NetBackAn Comment
- ;
-
-NetBundle : EDIF_TOK_NETBUNDLE NetNameDef _NetBundle PopC { str_pair_free($2); }
- ;
-
-_NetBundle : ListOfNets
- | _NetBundle Figure
- | _NetBundle CommGraph
- | _NetBundle Property
- | _NetBundle Comment
- | _NetBundle UserData
- ;
-
-NetDelay : EDIF_TOK_NETDELAY Derivation _NetDelay PopC
- ;
-
-_NetDelay : Delay
- | _NetDelay Transition
- | _NetDelay Becomes
- ;
-
-NetGroup : EDIF_TOK_NETGROUP _NetGroup PopC
- ;
-
-_NetGroup :
- | _NetGroup NetNameRef
- | _NetGroup NetRef
- ;
-
-NetMap : EDIF_TOK_NETMAP _NetMap PopC
- ;
-
-_NetMap :
- | _NetMap NetRef
- | _NetMap NetGroup
- | _NetMap Comment
- | _NetMap UserData
- ;
-
-NetNameDef : NameDef { $$=$1; }
-| Array { $$=NULL; }
-
- ;
-
-NetNameRef : NameRef { free($1); }
- | Member
- ;
-
-NetRef : EDIF_TOK_NETREF NetNameRef _NetRef PopC
- ;
-
-_NetRef :
- | NetRef
- | InstanceRef { free($1); }
- | ViewRef
- ;
-
-NoChange : EDIF_TOK_NOCHANGE PopC
- ;
-
-NonPermut : EDIF_TOK_NONPERMUTABLE _NonPermut PopC
- ;
-
-_NonPermut :
- | _NonPermut PortRef { str_pair_free($2); }
- | _NonPermut Permutable
- ;
-
-NotAllowed : EDIF_TOK_NOTALLOWED RuleNameDef _NotAllowed PopC
- ;
-
-_NotAllowed : FigGrpObj
- | _NotAllowed Comment
- | _NotAllowed UserData
- ;
-
-NotchSpace : EDIF_TOK_NOTCHSPACING RuleNameDef FigGrpObj _NotchSpace PopC
- ;
-
-_NotchSpace : Range
- | SingleValSet
- | _NotchSpace Comment
- | _NotchSpace UserData
- ;
-
-Number : EDIF_TOK_NUMBER _Number PopC
- ;
-
-_Number :
- | _Number ScaledInt
- | _Number NumbDisplay
- | _Number Number
- ;
-
-NumbDisplay : EDIF_TOK_NUMBERDISPLAY _NumbDisplay PopC
- ;
-
-_NumbDisplay : ScaledInt
- | _NumbDisplay Display
- ;
-
-NumberDefn : EDIF_TOK_NUMBERDEFINITION _NumberDefn PopC
- ;
-
-_NumberDefn :
- | _NumberDefn Scale
- | _NumberDefn GridMap
- | _NumberDefn Comment
- ;
-
-OffPageConn : EDIF_TOK_OFFPAGECONNECTOR _OffPageConn PopC
- ;
-
-_OffPageConn : PortNameDef
- | _OffPageConn Unused
- | _OffPageConn Property
- | _OffPageConn Comment
- | _OffPageConn UserData
- ;
-
-OffsetEvent : EDIF_TOK_OFFSETEVENT Event ScaledInt PopC
- ;
-
-OpenShape : EDIF_TOK_OPENSHAPE _OpenShape PopC
- ;
-
-_OpenShape : Curve
- | _OpenShape Property
- ;
-
-Orientation : EDIF_TOK_ORIENTATION _Orientation PopC
- ;
-
-_Orientation : EDIF_TOK_R0
- | EDIF_TOK_R90
- | EDIF_TOK_R180
- | EDIF_TOK_R270
- | EDIF_TOK_MX
- | EDIF_TOK_MY
- | EDIF_TOK_MYR90
- | EDIF_TOK_MXR90
- ;
-
-Origin : EDIF_TOK_ORIGIN PointValue PopC
- ;
-
-OverhngDist : EDIF_TOK_OVERHANGDISTANCE RuleNameDef FigGrpObj FigGrpObj _OverhngDist
- PopC
- ;
-
-_OverhngDist : Range
- | SingleValSet
- | _OverhngDist Comment
- | _OverhngDist UserData
- ;
-
-OverlapDist : EDIF_TOK_OVERLAPDISTANCE RuleNameDef FigGrpObj FigGrpObj _OverlapDist
- PopC
- ;
-
-_OverlapDist : Range
- | SingleValSet
- | _OverlapDist Comment
- | _OverlapDist UserData
- ;
-
-Oversize : EDIF_TOK_OVERSIZE Int _Oversize CornerType PopC { free($2); }
- ;
-
-_Oversize : FigGrpRef
- | FigureOp
- ;
-
-Owner : EDIF_TOK_OWNER Str PopC { free($2); }
- ;
-
-Page : EDIF_TOK_PAGE _Page PopC
- ;
-
-_Page : InstNameDef
- | _Page Instance
- | _Page Net
- | _Page NetBundle
- | _Page CommGraph
- | _Page PortImpl
- | _Page PageSize
- | _Page BoundBox
- | _Page Comment
- | _Page UserData
- ;
-
-PageSize : EDIF_TOK_PAGESIZE Rectangle PopC
- ;
-
-ParamDisp : EDIF_TOK_PARAMETERDISPLAY _ParamDisp PopC
- ;
-
-_ParamDisp : ValueNameRef
- | _ParamDisp Display
- ;
-
-Parameter : EDIF_TOK_PARAMETER ValueNameDef TypedValue _Parameter PopC
- ;
-
-_Parameter :
- | Unit
- ;
-
-ParamAssign : EDIF_TOK_PARAMETERASSIGN ValueNameRef TypedValue PopC
- ;
-
-Path : EDIF_TOK_PATH _Path PopC
- ;
-
-_Path : PointList
- | _Path Property
- ;
-
-PathDelay : EDIF_TOK_PATHDELAY _PathDelay PopC
- ;
-
-_PathDelay : Delay
- | _PathDelay Event
- ;
-
-PathWidth : EDIF_TOK_PATHWIDTH Int PopC { free($2); }
- ;
-
-Permutable : EDIF_TOK_PERMUTABLE _Permutable PopC
- ;
-
-_Permutable :
- | _Permutable PortRef { str_pair_free($2); }
- | _Permutable Permutable
- | _Permutable NonPermut
- ;
-
-Plug : EDIF_TOK_PLUG _Plug PopC
- ;
-
-_Plug :
- | _Plug SocketSet
- ;
-
-Point : EDIF_TOK_POINT _Point PopC
- ;
-
-_Point :
- | _Point PointValue
- | _Point PointDisp
- | _Point Point
- ;
-
-PointDisp : EDIF_TOK_POINTDISPLAY _PointDisp PopC
- ;
-
-_PointDisp : PointValue
- | _PointDisp Display
- ;
-
-PointList : EDIF_TOK_POINTLIST _PointList PopC
- ;
-
-_PointList :
- | _PointList PointValue
- ;
-
-PointValue : EDIF_TOK_PT Int Int PopC { free($2); free($3); }
- ;
-
-Polygon : EDIF_TOK_POLYGON _Polygon PopC
- ;
-
-_Polygon : PointList
- | _Polygon Property
- ;
-
-Port : EDIF_TOK_PORT _Port PopC
- ;
-
-_Port : PortNameDef
- | _Port Direction
- | _Port Unused
- | _Port PortDelay
- | _Port Designator
- | _Port DcFanInLoad
- | _Port DcFanOutLoad
- | _Port DcMaxFanIn
- | _Port DcMaxFanOut
- | _Port AcLoad
- | _Port Property
- | _Port Comment
- | _Port UserData
- ;
-
-PortBackAn : EDIF_TOK_PORTBACKANNOTATE _PortBackAn PopC
- ;
-
-_PortBackAn : PortRef { str_pair_free($1); }
- | _PortBackAn Designator
- | _PortBackAn PortDelay
- | _PortBackAn DcFanInLoad
- | _PortBackAn DcFanOutLoad
- | _PortBackAn DcMaxFanIn
- | _PortBackAn DcMaxFanOut
- | _PortBackAn AcLoad
- | _PortBackAn Property
- | _PortBackAn Comment
- ;
-
-PortBundle : EDIF_TOK_PORTBUNDLE PortNameDef _PortBundle PopC
- ;
-
-_PortBundle : ListOfPorts
- | _PortBundle Property
- | _PortBundle Comment
- | _PortBundle UserData
- ;
-
-PortDelay : EDIF_TOK_PORTDELAY Derivation _PortDelay PopC
- ;
-
-_PortDelay : Delay
- | LoadDelay
- | _PortDelay Transition
- | _PortDelay Becomes
- ;
-
-PortGroup : EDIF_TOK_PORTGROUP _PortGroup PopC
- ;
-
-_PortGroup :
- | _PortGroup PortNameRef
- | _PortGroup PortRef { str_pair_free($2); }
- ;
-
-PortImpl : EDIF_TOK_PORTIMPLEMENTATION _PortImpl PopC
- ;
-
-_PortImpl : PortRef { str_pair_free($1); }
- | PortNameRef
- | _PortImpl ConnectLoc
- | _PortImpl Figure
- | _PortImpl Instance
- | _PortImpl CommGraph
- | _PortImpl PropDisplay
- | _PortImpl KeywordDisp
- | _PortImpl Property
- | _PortImpl UserData
- | _PortImpl Comment
- ;
-
-PortInst : EDIF_TOK_PORTINSTANCE _PortInst PopC
- ;
-
-_PortInst : PortRef { str_pair_free($1); }
- | PortNameRef
- | _PortInst Unused
- | _PortInst PortDelay
- | _PortInst Designator
- | _PortInst DcFanInLoad
- | _PortInst DcFanOutLoad
- | _PortInst DcMaxFanIn
- | _PortInst DcMaxFanOut
- | _PortInst AcLoad
- | _PortInst Property
- | _PortInst Comment
- | _PortInst UserData
- ;
-
-PortList : EDIF_TOK_PORTLIST _PortList PopC
- ;
-
-_PortList :
- | _PortList PortRef { str_pair_free($2); }
- | _PortList PortNameRef
- ;
-
-PortListAls : EDIF_TOK_PORTLISTALIAS PortNameDef PortList PopC
- ;
-
-PortMap : EDIF_TOK_PORTMAP _PortMap PopC
- ;
-
-_PortMap :
- | _PortMap PortRef { str_pair_free($2); }
- | _PortMap PortGroup
- | _PortMap Comment
- | _PortMap UserData
- ;
-
-PortNameDef : NameDef { str_pair_free($1); }
- | Array
- ;
-
-PortNameRef : NameRef { $$=$1; }
- | Member
- ;
-
-PortRef : EDIF_TOK_PORTREF PortNameRef _PortRef PopC
-{
- if ($3)
- {
- $$ = new_str_pair($3->str1,$2);
- free($3);
- }
- else
- {
- /* handle port with no instance by passing up the chain */
- $$ = new_str_pair(NULL,$2);
- }
-}
- ;
-
-_PortRef : { $$=NULL; }
- | PortRef { $$=$1; }
- | InstanceRef { $$ = new_str_pair($1,NULL); }
- | ViewRef { $$=NULL; }
- ;
-
-Program : EDIF_TOK_PROGRAM Str _Program PopC
- ;
-
-_Program :
- | Version
- ;
-
-PropDisplay : EDIF_TOK_PROPERTYDISPLAY _PropDisplay PopC
- ;
-
-_PropDisplay : PropNameRef
- | _PropDisplay Display
- ;
-
-Property : EDIF_TOK_PROPERTY PropNameDef _Property PopC
- ;
-
-_Property : TypedValue
- | _Property Owner
- | _Property Unit
- | _Property Property
- | _Property Comment
- ;
-
-PropNameDef : NameDef { str_pair_free($1); }
- ;
-
-PropNameRef : NameRef { free($1); }
- ;
-
-ProtectFrame : EDIF_TOK_PROTECTIONFRAME _ProtectFrame PopC
- ;
-
-_ProtectFrame :
- | _ProtectFrame PortImpl
- | _ProtectFrame Figure
- | _ProtectFrame Instance
- | _ProtectFrame CommGraph
- | _ProtectFrame BoundBox
- | _ProtectFrame PropDisplay
- | _ProtectFrame KeywordDisp
- | _ProtectFrame ParamDisp
- | _ProtectFrame Property
- | _ProtectFrame Comment
- | _ProtectFrame UserData
- ;
-
-Range : LessThan
- | GreaterThan
- | AtMost
- | AtLeast
- | Exactly
- | Between
- ;
-
-RangeVector : EDIF_TOK_RANGEVECTOR _RangeVector PopC
- ;
-
-_RangeVector :
- | _RangeVector Range
- | _RangeVector SingleValSet
- ;
-
-Rectangle : EDIF_TOK_RECTANGLE PointValue _Rectangle PopC
- ;
-
-_Rectangle : PointValue
- | _Rectangle Property
- ;
-
-RectSize : EDIF_TOK_RECTANGLESIZE RuleNameDef FigGrpObj _RectSize PopC
- ;
-
-_RectSize : RangeVector
- | MultValSet
- | _RectSize Comment
- | _RectSize UserData
- ;
-
-Rename : EDIF_TOK_RENAME __Rename _Rename PopC
-{ $$ = new_str_pair($2,$3); }
- ;
-
-__Rename : Ident { $$=$1; }
- | Name { $$=$1; }
- ;
-
-_Rename : Str { $$=$1; }
- | StrDisplay { $$=NULL; }
- ;
-
-Resolves : EDIF_TOK_RESOLVES _Resolves PopC
- ;
-
-_Resolves :
- | _Resolves LogicNameRef
- ;
-
-RuleNameDef : NameDef { str_pair_free($1); }
- ;
-
-Scale : EDIF_TOK_SCALE ScaledInt ScaledInt Unit PopC
- ;
-
-ScaledInt : Int { free($1); }
- | EDIF_TOK_E Int Int PopC { free($2); free($3); }
- ;
-
-ScaleX : EDIF_TOK_SCALEX Int Int PopC { free($2); free($3); }
- ;
-
-ScaleY : EDIF_TOK_SCALEY Int Int PopC { free($2); free($3); }
- ;
-
-Section : EDIF_TOK_SECTION _Section PopC
- ;
-
-_Section : Str { free($1); }
- | _Section Section
- | _Section Str { free($2); }
- | _Section Instance
- ;
-
-Shape : EDIF_TOK_SHAPE _Shape PopC
- ;
-
-_Shape : Curve
- | _Shape Property
- ;
-
-SimNameDef : NameDef { str_pair_free($1); }
- ;
-
-Simulate : EDIF_TOK_SIMULATE _Simulate PopC
- ;
-
-_Simulate : SimNameDef
- | _Simulate PortListAls
- | _Simulate WaveValue
- | _Simulate Apply
- | _Simulate Comment
- | _Simulate UserData
- ;
-
-SimulInfo : EDIF_TOK_SIMULATIONINFO _SimulInfo PopC
- ;
-
-_SimulInfo :
- | _SimulInfo LogicValue
- | _SimulInfo Comment
- | _SimulInfo UserData
- ;
-
-SingleValSet : EDIF_TOK_SINGLEVALUESET _SingleValSet PopC
- ;
-
-_SingleValSet :
- | Range
- ;
-
-Site : EDIF_TOK_SITE ViewRef _Site PopC
- ;
-
-_Site :
- | Transform
- ;
-
-Socket : EDIF_TOK_SOCKET _Socket PopC
- ;
-
-_Socket :
- | Symmetry
- ;
-
-SocketSet : EDIF_TOK_SOCKETSET _SocketSet PopC
- ;
-
-_SocketSet : Symmetry
- | _SocketSet Site
- ;
-
-Status : EDIF_TOK_STATUS _Status PopC
- ;
-
-_Status :
- | _Status Written
- | _Status Comment
- | _Status UserData
- ;
-
-Steady : EDIF_TOK_STEADY __Steady _Steady PopC
- ;
-
-__Steady : PortNameRef
- | PortRef { str_pair_free($1); }
- | PortList
- ;
-
-_Steady : Duration
- | _Steady Transition
- | _Steady Becomes
- ;
-
-StrDisplay : EDIF_TOK_STRINGDISPLAY _StrDisplay PopC
- ;
-
-String : EDIF_TOK_STRING _String PopC
- ;
-
-_String :
- | _String Str { free($2); }
- | _String StrDisplay
- | _String String
- ;
-
-_StrDisplay : Str { free($1); }
- | _StrDisplay Display
- ;
-
-Strong : EDIF_TOK_STRONG LogicNameRef PopC
- ;
-
-Symbol : EDIF_TOK_SYMBOL _Symbol PopC
- ;
-
-_Symbol :
- | _Symbol PortImpl
- | _Symbol Figure
- | _Symbol Instance
- | _Symbol CommGraph
- | _Symbol Annotate
- | _Symbol PageSize
- | _Symbol BoundBox
- | _Symbol PropDisplay
- | _Symbol KeywordDisp
- | _Symbol ParamDisp
- | _Symbol Property
- | _Symbol Comment
- | _Symbol UserData
- ;
-
-Symmetry : EDIF_TOK_SYMMETRY _Symmetry PopC
- ;
-
-_Symmetry :
- | _Symmetry Transform
- ;
-
-Table : EDIF_TOK_TABLE _Table PopC
- ;
-
-_Table :
- | _Table Entry
- | _Table TableDeflt
- ;
-
-TableDeflt : EDIF_TOK_TABLEDEFAULT __TableDeflt _TableDeflt PopC
- ;
-
-__TableDeflt : LogicRef
- | PortRef { str_pair_free($1); }
- | NoChange
- | Table
- ;
-
-_TableDeflt :
- | Delay
- | LoadDelay
- ;
-
-Technology : EDIF_TOK_TECHNOLOGY _Technology PopC
- ;
-
-_Technology : NumberDefn
- | _Technology FigGrp
- | _Technology Fabricate
- | _Technology SimulInfo
- | _Technology DesignRule
- | _Technology Comment
- | _Technology UserData
- ;
-
-TextHeight : EDIF_TOK_TEXTHEIGHT Int PopC { free($2); }
- ;
-
-TimeIntval : EDIF_TOK_TIMEINTERVAL __TimeIntval _TimeIntval PopC
- ;
-
-__TimeIntval : Event
- | OffsetEvent
- ;
-
-_TimeIntval : Event
- | OffsetEvent
- | Duration
- ;
-
-TimeStamp : EDIF_TOK_TIMESTAMP Int Int Int Int Int Int PopC
-{ free($2); free($3); free($4); free($5); free($6); free($7); }
- ;
-
-Timing : EDIF_TOK_TIMING _Timing PopC
- ;
-
-_Timing : Derivation
- | _Timing PathDelay
- | _Timing Forbidden
- | _Timing Comment
- | _Timing UserData
- ;
-
-Transform : EDIF_TOK_TRANSFORM _TransX _TransY _TransDelta _TransOrien _TransOrg
- PopC
- ;
-
-_TransX :
- | ScaleX
- ;
-
-_TransY :
- | ScaleY
- ;
-
-_TransDelta :
- | Delta
- ;
-
-_TransOrien :
- | Orientation
- ;
-
-_TransOrg :
- | Origin
- ;
-
-Transition : EDIF_TOK_TRANSITION _Transition _Transition PopC
- ;
-
-_Transition : LogicNameRef
- | LogicList
- | LogicOneOf
- ;
-
-Trigger : EDIF_TOK_TRIGGER _Trigger PopC
- ;
-
-_Trigger :
- | _Trigger Change
- | _Trigger Steady
- | _Trigger Initial
- ;
-
-True : EDIF_TOK_TRUE PopC
- ;
-
-TypedValue : Boolean
- | Integer
- | MiNoMa
- | Number
- | Point
- | String
- ;
-
-Unconstrained : EDIF_TOK_UNCONSTRAINED PopC
- ;
-
-Undefined : EDIF_TOK_UNDEFINED PopC
- ;
-
-Union : EDIF_TOK_UNION _Union PopC
- ;
-
-_Union : FigGrpRef
- | FigureOp
- | _Union FigGrpRef
- | _Union FigureOp
- ;
-
-Unit : EDIF_TOK_UNIT _Unit PopC
- ;
-
-_Unit : EDIF_TOK_DISTANCE
- | EDIF_TOK_CAPACITANCE
- | EDIF_TOK_CURRENT
- | EDIF_TOK_RESISTANCE
- | EDIF_TOK_TEMPERATURE
- | EDIF_TOK_TIME
- | EDIF_TOK_VOLTAGE
- | EDIF_TOK_MASS
- | EDIF_TOK_FREQUENCY
- | EDIF_TOK_INDUCTANCE
- | EDIF_TOK_ENERGY
- | EDIF_TOK_POWER
- | EDIF_TOK_CHARGE
- | EDIF_TOK_CONDUCTANCE
- | EDIF_TOK_FLUX
- | EDIF_TOK_ANGLE
- ;
-
-Unused : EDIF_TOK_UNUSED PopC
- ;
-
-UserData : EDIF_TOK_USERDATA _UserData PopC
- ;
-
-_UserData : Ident { free($1); }
- | _UserData Int { free($2); }
- | _UserData Str { free($2); }
- | _UserData Ident { free($2); }
- | _UserData Form
- ;
-
-ValueNameDef : NameDef { str_pair_free($1); }
- | Array
- ;
-
-ValueNameRef : NameRef { free($1); }
- | Member
- ;
-
-Version : EDIF_TOK_VERSION Str PopC { free($2); }
- ;
-
-View : EDIF_TOK_VIEW ViewNameDef ViewType _View PopC
- ;
-
-_View : Interface
- | _View Status
- | _View Contents
- | _View Comment
- | _View Property
- | _View UserData
- ;
-
-ViewList : EDIF_TOK_VIEWLIST _ViewList PopC
- ;
-
-_ViewList :
- | _ViewList ViewRef
- | _ViewList ViewList
- ;
-
-ViewMap : EDIF_TOK_VIEWMAP _ViewMap PopC
- ;
-
-_ViewMap :
- | _ViewMap PortMap
- | _ViewMap PortBackAn
- | _ViewMap InstMap
- | _ViewMap InstBackAn
- | _ViewMap NetMap
- | _ViewMap NetBackAn
- | _ViewMap Comment
- | _ViewMap UserData
- ;
-
-ViewNameDef : NameDef { str_pair_free($1); }
- ;
-
-ViewNameRef : NameRef { free($1); }
- ;
-
-ViewRef : EDIF_TOK_VIEWREF ViewNameRef _ViewRef PopC
- ;
-
-_ViewRef :
- | CellRef
- ;
-
-ViewType : EDIF_TOK_VIEWTYPE _ViewType PopC
- ;
-
-_ViewType : EDIF_TOK_MASKLAYOUT
- | EDIF_TOK_PCBLAYOUT
- | EDIF_TOK_NETLIST
- | EDIF_TOK_SCHEMATIC
- | EDIF_TOK_SYMBOLIC
- | EDIF_TOK_BEHAVIOR
- | EDIF_TOK_LOGICMODEL
- | EDIF_TOK_DOCUMENT
- | EDIF_TOK_GRAPHIC
- | EDIF_TOK_STRANGER
- ;
-
-Visible : EDIF_TOK_VISIBLE BooleanValue PopC
- ;
-
-VoltageMap : EDIF_TOK_VOLTAGEMAP MiNoMaValue PopC
- ;
-
-WaveValue : EDIF_TOK_WAVEVALUE LogicNameDef ScaledInt LogicWave PopC
- ;
-
-Weak : EDIF_TOK_WEAK LogicNameRef PopC
- ;
-
-WeakJoined : EDIF_TOK_WEAKJOINED _WeakJoined PopC
- ;
-
-_WeakJoined :
- | _WeakJoined PortRef { str_pair_free($2); }
- | _WeakJoined PortList
- | _WeakJoined Joined { pair_list_free($2); }
- ;
-
-When : EDIF_TOK_WHEN _When PopC
- ;
-
-_When : Trigger
- | _When After
- | _When Follow
- | _When Maintain
- | _When LogicAssn
- | _When Comment
- | _When UserData
- ;
-
-Written : EDIF_TOK_WRITTEN _Written PopC
- ;
-
-_Written : TimeStamp
- | _Written Author
- | _Written Program
- | _Written DataOrigin
- | _Written Property
- | _Written Comment
- | _Written UserData
- ;
-
-Ident : EDIF_TOK_IDENT { $$=$1; }
- ;
-
-Str : EDIF_TOK_STR { $$=$1; }
- ;
-
-Int : EDIF_TOK_INT { $$=$1; }
- ;
-
-Keyword : EDIF_TOK_KEYWORD { $$=$1; }
- ;
-
-%%
-/*
- * xmalloc:
- *
- * Garbage function for 'alloca()'.
- */
-char *xmalloc(int siz)
-{
- return ((char *)Malloc(siz));
-}
-/*
- * Token & context carriers:
- *
- * These are the linkage pointers for threading this context garbage
- * for converting identifiers into parser tokens.
- */
-typedef struct TokenCar {
- struct TokenCar *Next; /* pointer to next carrier */
- struct Token *Token; /* associated token */
-} TokenCar;
-typedef struct UsedCar {
- struct UsedCar *Next; /* pointer to next carrier */
- short Code; /* used '%token' value */
-} UsedCar;
-typedef struct ContextCar {
- struct ContextCar *Next; /* pointer to next carrier */
- struct Context *Context; /* associated context */
- union {
- int Single; /* single usage flag (context tree) */
- struct UsedCar *Used; /* single used list (context stack) */
- } u;
-} ContextCar;
-/*
- * Token definitions:
- *
- * This associates the '%token' codings with strings which are to
- * be free standing tokens. Doesn't have to be in sorted order but the
- * strings must be in lower case.
- */
-typedef struct Token {
- char *Name; /* token name */
- int Code; /* '%token' value */
- struct Token *Next; /* hash table linkage */
-} Token;
-static Token TokenDef[] = {
- {"angle", EDIF_TOK_ANGLE},
- {"behavior", EDIF_TOK_BEHAVIOR},
- {"calculated", EDIF_TOK_CALCULATED},
- {"capacitance", EDIF_TOK_CAPACITANCE},
- {"centercenter", EDIF_TOK_CENTERCENTER},
- {"centerleft", EDIF_TOK_CENTERLEFT},
- {"centerright", EDIF_TOK_CENTERRIGHT},
- {"charge", EDIF_TOK_CHARGE},
- {"conductance", EDIF_TOK_CONDUCTANCE},
- {"current", EDIF_TOK_CURRENT},
- {"distance", EDIF_TOK_DISTANCE},
- {"document", EDIF_TOK_DOCUMENT},
- {"energy", EDIF_TOK_ENERGY},
- {"extend", EDIF_TOK_EXTEND},
- {"flux", EDIF_TOK_FLUX},
- {"frequency", EDIF_TOK_FREQUENCY},
- {"generic", EDIF_TOK_GENERIC},
- {"graphic", EDIF_TOK_GRAPHIC},
- {"inductance", EDIF_TOK_INDUCTANCE},
- {"inout", EDIF_TOK_INOUT},
- {"input", EDIF_TOK_INPUT},
- {"logicmodel", EDIF_TOK_LOGICMODEL},
- {"lowercenter", EDIF_TOK_LOWERCENTER},
- {"lowerleft", EDIF_TOK_LOWERLEFT},
- {"lowerright", EDIF_TOK_LOWERRIGHT},
- {"masklayout", EDIF_TOK_MASKLAYOUT},
- {"mass", EDIF_TOK_MASS},
- {"measured", EDIF_TOK_MEASURED},
- {"mx", EDIF_TOK_MX},
- {"mxr90", EDIF_TOK_MXR90},
- {"my", EDIF_TOK_MY},
- {"myr90", EDIF_TOK_MYR90},
- {"netlist", EDIF_TOK_NETLIST},
- {"output", EDIF_TOK_OUTPUT},
- {"pcblayout", EDIF_TOK_PCBLAYOUT},
- {"power", EDIF_TOK_POWER},
- {"r0", EDIF_TOK_R0},
- {"r180", EDIF_TOK_R180},
- {"r270", EDIF_TOK_R270},
- {"r90", EDIF_TOK_R90},
- {"required", EDIF_TOK_REQUIRED},
- {"resistance", EDIF_TOK_RESISTANCE},
- {"ripper", EDIF_TOK_RIPPER},
- {"round", EDIF_TOK_ROUND},
- {"schematic", EDIF_TOK_SCHEMATIC},
- {"stranger", EDIF_TOK_STRANGER},
- {"symbolic", EDIF_TOK_SYMBOLIC},
- {"temperature", EDIF_TOK_TEMPERATURE},
- {"tie", EDIF_TOK_TIE},
- {"time", EDIF_TOK_TIME},
- {"truncate", EDIF_TOK_TRUNCATE},
- {"uppercenter", EDIF_TOK_UPPERCENTER},
- {"upperleft", EDIF_TOK_UPPERLEFT},
- {"upperright", EDIF_TOK_UPPERRIGHT},
- {"voltage", EDIF_TOK_VOLTAGE}
-};
-static int TokenDefSize = sizeof(TokenDef) / sizeof(Token);
-/*
- * Token enable definitions:
- *
- * There is one array for each set of tokens enabled by a
- * particular context (barf). Another array is used to bind
- * these arrays to a context.
- */
-static short e_CellType[] = {EDIF_TOK_TIE, EDIF_TOK_RIPPER, EDIF_TOK_GENERIC};
-static short e_CornerType[] = {EDIF_TOK_EXTEND, EDIF_TOK_TRUNCATE,
- EDIF_TOK_ROUND};
-static short e_Derivation[] = {EDIF_TOK_CALCULATED, EDIF_TOK_MEASURED,
- EDIF_TOK_REQUIRED};
-static short e_Direction[] = {EDIF_TOK_INPUT, EDIF_TOK_OUTPUT,
- EDIF_TOK_INOUT};
-static short e_EndType[] = {EDIF_TOK_EXTEND, EDIF_TOK_TRUNCATE,
- EDIF_TOK_ROUND};
-static short e_Justify[] = {EDIF_TOK_CENTERCENTER, EDIF_TOK_CENTERLEFT,
- EDIF_TOK_CENTERRIGHT, EDIF_TOK_LOWERCENTER,
- EDIF_TOK_LOWERLEFT, EDIF_TOK_LOWERRIGHT,
- EDIF_TOK_UPPERCENTER, EDIF_TOK_UPPERLEFT,
- EDIF_TOK_UPPERRIGHT};
-static short e_Orientation[] = {EDIF_TOK_R0, EDIF_TOK_R90, EDIF_TOK_R180,
- EDIF_TOK_R270, EDIF_TOK_MX, EDIF_TOK_MY,
- EDIF_TOK_MXR90, EDIF_TOK_MYR90};
-static short e_Unit[] = {EDIF_TOK_DISTANCE, EDIF_TOK_CAPACITANCE,
- EDIF_TOK_CURRENT, EDIF_TOK_RESISTANCE,
- EDIF_TOK_TEMPERATURE, EDIF_TOK_TIME,
- EDIF_TOK_VOLTAGE, EDIF_TOK_MASS, EDIF_TOK_FREQUENCY,
- EDIF_TOK_INDUCTANCE, EDIF_TOK_ENERGY,
- EDIF_TOK_POWER, EDIF_TOK_CHARGE,
- EDIF_TOK_CONDUCTANCE, EDIF_TOK_FLUX, EDIF_TOK_ANGLE};
-static short e_ViewType[] = {EDIF_TOK_MASKLAYOUT, EDIF_TOK_PCBLAYOUT,
- EDIF_TOK_NETLIST, EDIF_TOK_SCHEMATIC,
- EDIF_TOK_SYMBOLIC, EDIF_TOK_BEHAVIOR,
- EDIF_TOK_LOGICMODEL, EDIF_TOK_DOCUMENT,
- EDIF_TOK_GRAPHIC, EDIF_TOK_STRANGER};
-/*
- * Token tying table:
- *
- * This binds enabled tokens to a context.
- */
-typedef struct Tie {
- short *Enable; /* pointer to enable array */
- short Origin; /* '%token' value of context */
- short EnableSize; /* size of enabled array */
-} Tie;
-#define TE(e,o) {e,o,sizeof(e)/sizeof(short)}
-static Tie TieDef[] = {
- TE(e_CellType, EDIF_TOK_CELLTYPE),
- TE(e_CornerType, EDIF_TOK_CORNERTYPE),
- TE(e_Derivation, EDIF_TOK_DERIVATION),
- TE(e_Direction, EDIF_TOK_DIRECTION),
- TE(e_EndType, EDIF_TOK_ENDTYPE),
- TE(e_Justify, EDIF_TOK_JUSTIFY),
- TE(e_Orientation, EDIF_TOK_ORIENTATION),
- TE(e_Unit, EDIF_TOK_UNIT),
- TE(e_ViewType, EDIF_TOK_VIEWTYPE)
-};
-static int TieDefSize = sizeof(TieDef) / sizeof(Tie);
-/*
- * Context definitions:
- *
- * This associates keyword strings with '%token' values. It
- * also creates a pretty much empty header for later building of
- * the context tree. Again they needn't be sorted, but strings
- * must be lower case.
- */
-typedef struct Context {
- char *Name; /* keyword name */
- short Code; /* '%token' value */
- short Flags; /* special operation flags */
- struct ContextCar *Context; /* contexts which can be moved to */
- struct TokenCar *Token; /* active tokens */
- struct Context *Next; /* hash table linkage */
-} Context;
-static Context ContextDef[] = {
- {"", 0}, /* start context */
- {"acload", EDIF_TOK_ACLOAD},
- {"after", EDIF_TOK_AFTER},
- {"annotate", EDIF_TOK_ANNOTATE},
- {"apply", EDIF_TOK_APPLY},
- {"arc", EDIF_TOK_ARC},
- {"array", EDIF_TOK_ARRAY},
- {"arraymacro", EDIF_TOK_ARRAYMACRO},
- {"arrayrelatedinfo", EDIF_TOK_ARRAYRELATEDINFO},
- {"arraysite", EDIF_TOK_ARRAYSITE},
- {"atleast", EDIF_TOK_ATLEAST},
- {"atmost", EDIF_TOK_ATMOST},
- {"author", EDIF_TOK_AUTHOR},
- {"basearray", EDIF_TOK_BASEARRAY},
- {"becomes", EDIF_TOK_BECOMES},
- {"between", EDIF_TOK_BETWEEN},
- {"boolean", EDIF_TOK_BOOLEAN},
- {"booleandisplay", EDIF_TOK_BOOLEANDISPLAY},
- {"booleanmap", EDIF_TOK_BOOLEANMAP},
- {"borderpattern", EDIF_TOK_BORDERPATTERN},
- {"borderwidth", EDIF_TOK_BORDERWIDTH},
- {"boundingbox", EDIF_TOK_BOUNDINGBOX},
- {"cell", EDIF_TOK_CELL},
- {"cellref", EDIF_TOK_CELLREF},
- {"celltype", EDIF_TOK_CELLTYPE},
- {"change", EDIF_TOK_CHANGE},
- {"circle", EDIF_TOK_CIRCLE},
- {"color", EDIF_TOK_COLOR},
- {"comment", EDIF_TOK_COMMENT},
- {"commentgraphics", EDIF_TOK_COMMENTGRAPHICS},
- {"compound", EDIF_TOK_COMPOUND},
- {"connectlocation", EDIF_TOK_CONNECTLOCATION},
- {"contents", EDIF_TOK_CONTENTS},
- {"cornertype", EDIF_TOK_CORNERTYPE},
- {"criticality", EDIF_TOK_CRITICALITY},
- {"currentmap", EDIF_TOK_CURRENTMAP},
- {"curve", EDIF_TOK_CURVE},
- {"cycle", EDIF_TOK_CYCLE},
- {"dataorigin", EDIF_TOK_DATAORIGIN},
- {"dcfaninload", EDIF_TOK_DCFANINLOAD},
- {"dcfanoutload", EDIF_TOK_DCFANOUTLOAD},
- {"dcmaxfanin", EDIF_TOK_DCMAXFANIN},
- {"dcmaxfanout", EDIF_TOK_DCMAXFANOUT},
- {"delay", EDIF_TOK_DELAY},
- {"delta", EDIF_TOK_DELTA},
- {"derivation", EDIF_TOK_DERIVATION},
- {"design", EDIF_TOK_DESIGN},
- {"designator", EDIF_TOK_DESIGNATOR},
- {"difference", EDIF_TOK_DIFFERENCE},
- {"direction", EDIF_TOK_DIRECTION},
- {"display", EDIF_TOK_DISPLAY},
- {"dominates", EDIF_TOK_DOMINATES},
- {"dot", EDIF_TOK_DOT},
- {"duration", EDIF_TOK_DURATION},
- {"e", EDIF_TOK_E},
- {"edif", EDIF_TOK_EDIF},
- {"ediflevel", EDIF_TOK_EDIFLEVEL},
- {"edifversion", EDIF_TOK_EDIFVERSION},
- {"enclosuredistance", EDIF_TOK_ENCLOSUREDISTANCE},
- {"endtype", EDIF_TOK_ENDTYPE},
- {"entry", EDIF_TOK_ENTRY},
- {"exactly", EDIF_TOK_EXACTLY},
- {"external", EDIF_TOK_EXTERNAL},
- {"fabricate", EDIF_TOK_FABRICATE},
- {"false", EDIF_TOK_FALSE},
- {"figure", EDIF_TOK_FIGURE},
- {"figurearea", EDIF_TOK_FIGUREAREA},
- {"figuregroup", EDIF_TOK_FIGUREGROUP},
- {"figuregroupobject", EDIF_TOK_FIGUREGROUPOBJECT},
- {"figuregroupoverride", EDIF_TOK_FIGUREGROUPOVERRIDE},
- {"figuregroupref", EDIF_TOK_FIGUREGROUPREF},
- {"figureperimeter", EDIF_TOK_FIGUREPERIMETER},
- {"figurewidth", EDIF_TOK_FIGUREWIDTH},
- {"fillpattern", EDIF_TOK_FILLPATTERN},
- {"follow", EDIF_TOK_FOLLOW},
- {"forbiddenevent", EDIF_TOK_FORBIDDENEVENT},
- {"globalportref", EDIF_TOK_GLOBALPORTREF},
- {"greaterthan", EDIF_TOK_GREATERTHAN},
- {"gridmap", EDIF_TOK_GRIDMAP},
- {"ignore", EDIF_TOK_IGNORE},
- {"includefiguregroup", EDIF_TOK_INCLUDEFIGUREGROUP},
- {"initial", EDIF_TOK_INITIAL},
- {"instance", EDIF_TOK_INSTANCE},
- {"instancebackannotate", EDIF_TOK_INSTANCEBACKANNOTATE},
- {"instancegroup", EDIF_TOK_INSTANCEGROUP},
- {"instancemap", EDIF_TOK_INSTANCEMAP},
- {"instanceref", EDIF_TOK_INSTANCEREF},
- {"integer", EDIF_TOK_INTEGER},
- {"integerdisplay", EDIF_TOK_INTEGERDISPLAY},
- {"interface", EDIF_TOK_INTERFACE},
- {"interfiguregroupspacing", EDIF_TOK_INTERFIGUREGROUPSPACING},
- {"intersection", EDIF_TOK_INTERSECTION},
- {"intrafiguregroupspacing", EDIF_TOK_INTRAFIGUREGROUPSPACING},
- {"inverse", EDIF_TOK_INVERSE},
- {"isolated", EDIF_TOK_ISOLATED},
- {"joined", EDIF_TOK_JOINED},
- {"justify", EDIF_TOK_JUSTIFY},
- {"keyworddisplay", EDIF_TOK_KEYWORDDISPLAY},
- {"keywordlevel", EDIF_TOK_KEYWORDLEVEL},
- {"keywordmap", EDIF_TOK_KEYWORDMAP},
- {"lessthan", EDIF_TOK_LESSTHAN},
- {"library", EDIF_TOK_LIBRARY},
- {"libraryref", EDIF_TOK_LIBRARYREF},
- {"listofnets", EDIF_TOK_LISTOFNETS},
- {"listofports", EDIF_TOK_LISTOFPORTS},
- {"loaddelay", EDIF_TOK_LOADDELAY},
- {"logicassign", EDIF_TOK_LOGICASSIGN},
- {"logicinput", EDIF_TOK_LOGICINPUT},
- {"logiclist", EDIF_TOK_LOGICLIST},
- {"logicmapinput", EDIF_TOK_LOGICMAPINPUT},
- {"logicmapoutput", EDIF_TOK_LOGICMAPOUTPUT},
- {"logiconeof", EDIF_TOK_LOGICONEOF},
- {"logicoutput", EDIF_TOK_LOGICOUTPUT},
- {"logicport", EDIF_TOK_LOGICPORT},
- {"logicref", EDIF_TOK_LOGICREF},
- {"logicvalue", EDIF_TOK_LOGICVALUE},
- {"logicwaveform", EDIF_TOK_LOGICWAVEFORM},
- {"maintain", EDIF_TOK_MAINTAIN},
- {"match", EDIF_TOK_MATCH},
- {"member", EDIF_TOK_MEMBER},
- {"minomax", EDIF_TOK_MINOMAX},
- {"minomaxdisplay", EDIF_TOK_MINOMAXDISPLAY},
- {"mnm", EDIF_TOK_MNM},
- {"multiplevalueset", EDIF_TOK_MULTIPLEVALUESET},
- {"mustjoin", EDIF_TOK_MUSTJOIN},
- {"name", EDIF_TOK_NAME},
- {"net", EDIF_TOK_NET},
- {"netbackannotate", EDIF_TOK_NETBACKANNOTATE},
- {"netbundle", EDIF_TOK_NETBUNDLE},
- {"netdelay", EDIF_TOK_NETDELAY},
- {"netgroup", EDIF_TOK_NETGROUP},
- {"netmap", EDIF_TOK_NETMAP},
- {"netref", EDIF_TOK_NETREF},
- {"nochange", EDIF_TOK_NOCHANGE},
- {"nonpermutable", EDIF_TOK_NONPERMUTABLE},
- {"notallowed", EDIF_TOK_NOTALLOWED},
- {"notchspacing", EDIF_TOK_NOTCHSPACING},
- {"number", EDIF_TOK_NUMBER},
- {"numberdefinition", EDIF_TOK_NUMBERDEFINITION},
- {"numberdisplay", EDIF_TOK_NUMBERDISPLAY},
- {"offpageconnector", EDIF_TOK_OFFPAGECONNECTOR},
- {"offsetevent", EDIF_TOK_OFFSETEVENT},
- {"openshape", EDIF_TOK_OPENSHAPE},
- {"orientation", EDIF_TOK_ORIENTATION},
- {"origin", EDIF_TOK_ORIGIN},
- {"overhangdistance", EDIF_TOK_OVERHANGDISTANCE},
- {"overlapdistance", EDIF_TOK_OVERLAPDISTANCE},
- {"oversize", EDIF_TOK_OVERSIZE},
- {"owner", EDIF_TOK_OWNER},
- {"page", EDIF_TOK_PAGE},
- {"pagesize", EDIF_TOK_PAGESIZE},
- {"parameter", EDIF_TOK_PARAMETER},
- {"parameterassign", EDIF_TOK_PARAMETERASSIGN},
- {"parameterdisplay", EDIF_TOK_PARAMETERDISPLAY},
- {"path", EDIF_TOK_PATH},
- {"pathdelay", EDIF_TOK_PATHDELAY},
- {"pathwidth", EDIF_TOK_PATHWIDTH},
- {"permutable", EDIF_TOK_PERMUTABLE},
- {"physicaldesignrule", EDIF_TOK_PHYSICALDESIGNRULE},
- {"plug", EDIF_TOK_PLUG},
- {"point", EDIF_TOK_POINT},
- {"pointdisplay", EDIF_TOK_POINTDISPLAY},
- {"pointlist", EDIF_TOK_POINTLIST},
- {"polygon", EDIF_TOK_POLYGON},
- {"port", EDIF_TOK_PORT},
- {"portbackannotate", EDIF_TOK_PORTBACKANNOTATE},
- {"portbundle", EDIF_TOK_PORTBUNDLE},
- {"portdelay", EDIF_TOK_PORTDELAY},
- {"portgroup", EDIF_TOK_PORTGROUP},
- {"portimplementation", EDIF_TOK_PORTIMPLEMENTATION},
- {"portinstance", EDIF_TOK_PORTINSTANCE},
- {"portlist", EDIF_TOK_PORTLIST},
- {"portlistalias", EDIF_TOK_PORTLISTALIAS},
- {"portmap", EDIF_TOK_PORTMAP},
- {"portref", EDIF_TOK_PORTREF},
- {"program", EDIF_TOK_PROGRAM},
- {"property", EDIF_TOK_PROPERTY},
- {"propertydisplay", EDIF_TOK_PROPERTYDISPLAY},
- {"protectionframe", EDIF_TOK_PROTECTIONFRAME},
- {"pt", EDIF_TOK_PT},
- {"rangevector", EDIF_TOK_RANGEVECTOR},
- {"rectangle", EDIF_TOK_RECTANGLE},
- {"rectanglesize", EDIF_TOK_RECTANGLESIZE},
- {"rename", EDIF_TOK_RENAME},
- {"resolves", EDIF_TOK_RESOLVES},
- {"scale", EDIF_TOK_SCALE},
- {"scalex", EDIF_TOK_SCALEX},
- {"scaley", EDIF_TOK_SCALEY},
- {"section", EDIF_TOK_SECTION},
- {"shape", EDIF_TOK_SHAPE},
- {"simulate", EDIF_TOK_SIMULATE},
- {"simulationinfo", EDIF_TOK_SIMULATIONINFO},
- {"singlevalueset", EDIF_TOK_SINGLEVALUESET},
- {"site", EDIF_TOK_SITE},
- {"socket", EDIF_TOK_SOCKET},
- {"socketset", EDIF_TOK_SOCKETSET},
- {"status", EDIF_TOK_STATUS},
- {"steady", EDIF_TOK_STEADY},
- {"string", EDIF_TOK_STRING},
- {"stringdisplay", EDIF_TOK_STRINGDISPLAY},
- {"strong", EDIF_TOK_STRONG},
- {"symbol", EDIF_TOK_SYMBOL},
- {"symmetry", EDIF_TOK_SYMMETRY},
- {"table", EDIF_TOK_TABLE},
- {"tabledefault", EDIF_TOK_TABLEDEFAULT},
- {"technology", EDIF_TOK_TECHNOLOGY},
- {"textheight", EDIF_TOK_TEXTHEIGHT},
- {"timeinterval", EDIF_TOK_TIMEINTERVAL},
- {"timestamp", EDIF_TOK_TIMESTAMP},
- {"timing", EDIF_TOK_TIMING},
- {"transform", EDIF_TOK_TRANSFORM},
- {"transition", EDIF_TOK_TRANSITION},
- {"trigger", EDIF_TOK_TRIGGER},
- {"true", EDIF_TOK_TRUE},
- {"unconstrained", EDIF_TOK_UNCONSTRAINED},
- {"undefined", EDIF_TOK_UNDEFINED},
- {"union", EDIF_TOK_UNION},
- {"unit", EDIF_TOK_UNIT},
- {"unused", EDIF_TOK_UNUSED},
- {"userdata", EDIF_TOK_USERDATA},
- {"version", EDIF_TOK_VERSION},
- {"view", EDIF_TOK_VIEW},
- {"viewlist", EDIF_TOK_VIEWLIST},
- {"viewmap", EDIF_TOK_VIEWMAP},
- {"viewref", EDIF_TOK_VIEWREF},
- {"viewtype", EDIF_TOK_VIEWTYPE},
- {"visible", EDIF_TOK_VISIBLE},
- {"voltagemap", EDIF_TOK_VOLTAGEMAP},
- {"wavevalue", EDIF_TOK_WAVEVALUE},
- {"weak", EDIF_TOK_WEAK},
- {"weakjoined", EDIF_TOK_WEAKJOINED},
- {"when", EDIF_TOK_WHEN},
- {"written", EDIF_TOK_WRITTEN}
-};
-static int ContextDefSize = sizeof(ContextDef) / sizeof(Context);
-/*
- * Context follower tables:
- *
- * This is pretty ugly, an array is defined for each context
- * which has following context levels. Yet another table is used
- * to bind these arrays to the originating contexts.
- * Arrays are declared as:
- *
- * static short f_[] = { ... };
- *
- * The array entries are the '%token' values for all keywords which
- * can be reached from the context. Like I said, ugly,
- * but it works.
- * A negative entry means that the follow can only occur once within
- * the specified context.
- */
-static short f_NULL[] = {EDIF_TOK_EDIF};
-static short f_Edif[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_EDIFVERSION,
- EDIF_TOK_EDIFLEVEL, EDIF_TOK_KEYWORDMAP,
- -EDIF_TOK_STATUS, EDIF_TOK_EXTERNAL,
- EDIF_TOK_LIBRARY, EDIF_TOK_DESIGN, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA};
-static short f_AcLoad[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_MINOMAXDISPLAY};
-static short f_After[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_FOLLOW,
- EDIF_TOK_MAINTAIN, EDIF_TOK_LOGICASSIGN,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
-static short f_Annotate[] = {EDIF_TOK_STRINGDISPLAY};
-static short f_Apply[] = {EDIF_TOK_CYCLE, EDIF_TOK_LOGICINPUT,
- EDIF_TOK_LOGICOUTPUT, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA};
-static short f_Arc[] = {EDIF_TOK_PT};
-static short f_Array[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME};
-static short f_ArrayMacro[] = {EDIF_TOK_PLUG};
-static short f_ArrayRelatedInfo[] = {EDIF_TOK_BASEARRAY, EDIF_TOK_ARRAYSITE,
- EDIF_TOK_ARRAYMACRO, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA};
-static short f_ArraySite[] = {EDIF_TOK_SOCKET};
-static short f_AtLeast[] = {EDIF_TOK_E};
-static short f_AtMost[] = {EDIF_TOK_E};
-static short f_Becomes[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICLIST,
- EDIF_TOK_LOGICONEOF};
-/*
-static short f_Between[] = {EDIF_TOK_ATLEAST, EDIF_TOK_GREATERTHAN,
- EDIF_TOK_ATMOST, EDIF_TOK_LESSTHAN};
-*/
-static short f_Boolean[] = {EDIF_TOK_FALSE, EDIF_TOK_TRUE,
- EDIF_TOK_BOOLEANDISPLAY, EDIF_TOK_BOOLEAN};
-static short f_BooleanDisplay[] = {EDIF_TOK_FALSE, EDIF_TOK_TRUE,
- EDIF_TOK_DISPLAY};
-static short f_BooleanMap[] = {EDIF_TOK_FALSE, EDIF_TOK_TRUE};
-static short f_BorderPattern[] = {EDIF_TOK_BOOLEAN};
-static short f_BoundingBox[] = {EDIF_TOK_RECTANGLE};
-static short f_Cell[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_CELLTYPE,
- -EDIF_TOK_STATUS, -EDIF_TOK_VIEWMAP, EDIF_TOK_VIEW,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA,
- EDIF_TOK_PROPERTY};
-static short f_CellRef[] = {EDIF_TOK_NAME, EDIF_TOK_LIBRARYREF};
-static short f_Change[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
- EDIF_TOK_BECOMES, EDIF_TOK_TRANSITION};
-static short f_Circle[] = {EDIF_TOK_PT, EDIF_TOK_PROPERTY};
-static short f_Color[] = {EDIF_TOK_E};
-static short f_CommentGraphics[] = {EDIF_TOK_ANNOTATE, EDIF_TOK_FIGURE,
- EDIF_TOK_INSTANCE, -EDIF_TOK_BOUNDINGBOX,
- EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA};
-static short f_Compound[] = {EDIF_TOK_NAME};
-static short f_ConnectLocation[] = {EDIF_TOK_FIGURE};
-static short f_Contents[] = {EDIF_TOK_INSTANCE, EDIF_TOK_OFFPAGECONNECTOR,
- EDIF_TOK_FIGURE, EDIF_TOK_SECTION, EDIF_TOK_NET,
- EDIF_TOK_NETBUNDLE, EDIF_TOK_PAGE,
- EDIF_TOK_COMMENTGRAPHICS,
- EDIF_TOK_PORTIMPLEMENTATION,
- EDIF_TOK_TIMING, EDIF_TOK_SIMULATE,
- EDIF_TOK_WHEN, EDIF_TOK_FOLLOW,
- EDIF_TOK_LOGICPORT, -EDIF_TOK_BOUNDINGBOX,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
-static short f_Criticality[] = {EDIF_TOK_INTEGERDISPLAY};
-static short f_CurrentMap[] = {EDIF_TOK_MNM, EDIF_TOK_E};
-static short f_Curve[] = {EDIF_TOK_ARC, EDIF_TOK_PT};
-static short f_Cycle[] = {EDIF_TOK_DURATION};
-static short f_DataOrigin[] = {EDIF_TOK_VERSION};
-static short f_DcFanInLoad[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY};
-static short f_DcFanOutLoad[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY};
-static short f_DcMaxFanIn[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY};
-static short f_DcMaxFanOut[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY};
-static short f_Delay[] = {EDIF_TOK_MNM, EDIF_TOK_E};
-static short f_Delta[] = {EDIF_TOK_PT};
-static short f_Design[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_CELLREF,
- EDIF_TOK_STATUS, EDIF_TOK_COMMENT,
- EDIF_TOK_PROPERTY, EDIF_TOK_USERDATA};
-static short f_Designator[] = {EDIF_TOK_STRINGDISPLAY};
-static short f_Difference[] = {EDIF_TOK_FIGUREGROUPREF, EDIF_TOK_INTERSECTION,
- EDIF_TOK_UNION, EDIF_TOK_DIFFERENCE,
- EDIF_TOK_INVERSE, EDIF_TOK_OVERSIZE};
-static short f_Display[] = {EDIF_TOK_NAME, EDIF_TOK_FIGUREGROUPOVERRIDE,
- EDIF_TOK_JUSTIFY, EDIF_TOK_ORIENTATION,
- EDIF_TOK_ORIGIN};
-static short f_Dominates[] = {EDIF_TOK_NAME};
-static short f_Dot[] = {EDIF_TOK_PT, EDIF_TOK_PROPERTY};
-static short f_Duration[] = {EDIF_TOK_E};
-static short f_EnclosureDistance[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_FIGUREGROUPOBJECT,
- EDIF_TOK_LESSTHAN, EDIF_TOK_GREATERTHAN,
- EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
- EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN,
- EDIF_TOK_SINGLEVALUESET,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
-static short f_Entry[] = {EDIF_TOK_MATCH, EDIF_TOK_CHANGE, EDIF_TOK_STEADY,
- EDIF_TOK_LOGICREF, EDIF_TOK_PORTREF,
- EDIF_TOK_NOCHANGE, EDIF_TOK_TABLE,
- EDIF_TOK_DELAY, EDIF_TOK_LOADDELAY};
-static short f_Exactly[] = {EDIF_TOK_E};
-static short f_External[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_EDIFLEVEL, EDIF_TOK_TECHNOLOGY,
- -EDIF_TOK_STATUS, EDIF_TOK_CELL, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA};
-static short f_Fabricate[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME};
-static short f_Figure[] = {EDIF_TOK_NAME, EDIF_TOK_FIGUREGROUPOVERRIDE,
- EDIF_TOK_CIRCLE, EDIF_TOK_DOT, EDIF_TOK_OPENSHAPE,
- EDIF_TOK_PATH, EDIF_TOK_POLYGON,
- EDIF_TOK_RECTANGLE, EDIF_TOK_SHAPE,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
-static short f_FigureArea[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
- EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
- EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
- EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
-static short f_FigureGroup[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
- -EDIF_TOK_CORNERTYPE, -EDIF_TOK_ENDTYPE,
- -EDIF_TOK_PATHWIDTH, -EDIF_TOK_BORDERWIDTH,
- -EDIF_TOK_COLOR, -EDIF_TOK_FILLPATTERN,
- -EDIF_TOK_BORDERPATTERN, -EDIF_TOK_TEXTHEIGHT,
- -EDIF_TOK_VISIBLE, EDIF_TOK_INCLUDEFIGUREGROUP,
- EDIF_TOK_COMMENT, EDIF_TOK_PROPERTY,
- EDIF_TOK_USERDATA};
-static short f_FigureGroupObject[] = {EDIF_TOK_NAME,
- EDIF_TOK_FIGUREGROUPOBJECT,
- EDIF_TOK_INTERSECTION, EDIF_TOK_UNION,
- EDIF_TOK_DIFFERENCE, EDIF_TOK_INVERSE,
- EDIF_TOK_OVERSIZE};
-static short f_FigureGroupOverride[] = {EDIF_TOK_NAME, -EDIF_TOK_CORNERTYPE,
- -EDIF_TOK_ENDTYPE, -EDIF_TOK_PATHWIDTH,
- -EDIF_TOK_BORDERWIDTH, -EDIF_TOK_COLOR,
- -EDIF_TOK_FILLPATTERN,
- -EDIF_TOK_TEXTHEIGHT,
- -EDIF_TOK_BORDERPATTERN,
- EDIF_TOK_VISIBLE, EDIF_TOK_COMMENT,
- EDIF_TOK_PROPERTY, EDIF_TOK_USERDATA};
-static short f_FigureGroupRef[] = {EDIF_TOK_NAME, EDIF_TOK_LIBRARYREF};
-static short f_FigurePerimeter[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_FIGUREGROUPOBJECT,
- EDIF_TOK_LESSTHAN, EDIF_TOK_GREATERTHAN,
- EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
- EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN,
- EDIF_TOK_SINGLEVALUESET, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA};
-static short f_FigureWidth[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
- EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
- EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
- EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
-static short f_FillPattern[] = {EDIF_TOK_BOOLEAN};
-static short f_Follow[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF, EDIF_TOK_TABLE,
- EDIF_TOK_DELAY, EDIF_TOK_LOADDELAY};
-static short f_ForbiddenEvent[] = {EDIF_TOK_TIMEINTERVAL, EDIF_TOK_EVENT};
-static short f_GlobalPortRef[] = {EDIF_TOK_NAME};
-static short f_GreaterThan[] = {EDIF_TOK_E};
-static short f_GridMap[] = {EDIF_TOK_E};
-static short f_IncludeFigureGroup[] = {EDIF_TOK_FIGUREGROUPREF,
- EDIF_TOK_INTERSECTION, EDIF_TOK_UNION,
- EDIF_TOK_DIFFERENCE, EDIF_TOK_INVERSE,
- EDIF_TOK_OVERSIZE};
-static short f_Instance[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
- EDIF_TOK_VIEWREF, EDIF_TOK_VIEWLIST,
- -EDIF_TOK_TRANSFORM, EDIF_TOK_PARAMETERASSIGN,
- EDIF_TOK_PORTINSTANCE, EDIF_TOK_TIMING,
- -EDIF_TOK_DESIGNATOR, EDIF_TOK_PROPERTY,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
-static short f_InstanceBackAnnotate[] = {EDIF_TOK_INSTANCEREF,
- -EDIF_TOK_DESIGNATOR, EDIF_TOK_TIMING,
- EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT};
-static short f_InstanceGroup[] = {EDIF_TOK_INSTANCEREF};
-static short f_InstanceMap[] = {EDIF_TOK_INSTANCEREF, EDIF_TOK_INSTANCEGROUP,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
-static short f_InstanceRef[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
- EDIF_TOK_INSTANCEREF, EDIF_TOK_VIEWREF};
-static short f_Integer[] = {EDIF_TOK_INTEGERDISPLAY, EDIF_TOK_INTEGER};
-static short f_IntegerDisplay[] = {EDIF_TOK_DISPLAY};
-static short f_Interface[] = {EDIF_TOK_PORT, EDIF_TOK_PORTBUNDLE,
- -EDIF_TOK_SYMBOL, -EDIF_TOK_PROTECTIONFRAME,
- -EDIF_TOK_ARRAYRELATEDINFO, EDIF_TOK_PARAMETER,
- EDIF_TOK_JOINED, EDIF_TOK_MUSTJOIN,
- EDIF_TOK_WEAKJOINED, EDIF_TOK_PERMUTABLE,
- EDIF_TOK_TIMING, EDIF_TOK_SIMULATE,
- -EDIF_TOK_DESIGNATOR, EDIF_TOK_PROPERTY,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
-static short f_InterFigureGroupSpacing[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_FIGUREGROUPOBJECT,
- EDIF_TOK_LESSTHAN,
- EDIF_TOK_GREATERTHAN,
- EDIF_TOK_ATMOST,
- EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
- EDIF_TOK_BETWEEN,
- EDIF_TOK_SINGLEVALUESET,
- EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA};
-static short f_Intersection[] = {EDIF_TOK_FIGUREGROUPREF,
- EDIF_TOK_INTERSECTION, EDIF_TOK_UNION,
- EDIF_TOK_DIFFERENCE, EDIF_TOK_INVERSE,
- EDIF_TOK_OVERSIZE};
-static short f_IntraFigureGroupSpacing[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_FIGUREGROUPOBJECT,
- EDIF_TOK_LESSTHAN,
- EDIF_TOK_GREATERTHAN,
- EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
- EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN,
- EDIF_TOK_SINGLEVALUESET,
- EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA};
-static short f_Inverse[] = {EDIF_TOK_FIGUREGROUPREF, EDIF_TOK_INTERSECTION,
- EDIF_TOK_UNION, EDIF_TOK_DIFFERENCE,
- EDIF_TOK_INVERSE, EDIF_TOK_OVERSIZE};
-static short f_Joined[] = {EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
- EDIF_TOK_GLOBALPORTREF};
-static short f_KeywordDisplay[] = {EDIF_TOK_DISPLAY};
-static short f_KeywordMap[] = {EDIF_TOK_KEYWORDLEVEL, EDIF_TOK_COMMENT};
-static short f_LessThan[] = {EDIF_TOK_E};
-static short f_Library[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_EDIFLEVEL,
- EDIF_TOK_TECHNOLOGY, -EDIF_TOK_STATUS,
- EDIF_TOK_CELL, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA};
-static short f_LibraryRef[] = {EDIF_TOK_NAME};
-static short f_ListOfNets[] = {EDIF_TOK_NET};
-static short f_ListOfPorts[] = {EDIF_TOK_PORT, EDIF_TOK_PORTBUNDLE};
-static short f_LoadDelay[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_MINOMAXDISPLAY};
-static short f_LogicAssign[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF,
- EDIF_TOK_LOGICREF, EDIF_TOK_TABLE,
- EDIF_TOK_DELAY, EDIF_TOK_LOADDELAY};
-static short f_LogicInput[] = {EDIF_TOK_PORTLIST, EDIF_TOK_PORTREF,
- EDIF_TOK_NAME, EDIF_TOK_LOGICWAVEFORM};
-static short f_LogicList[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICONEOF,
- EDIF_TOK_IGNORE};
-static short f_LogicMapInput[] = {EDIF_TOK_LOGICREF};
-static short f_LogicMapOutput[] = {EDIF_TOK_LOGICREF};
-static short f_LogicOneOf[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICLIST};
-static short f_LogicOutput[] = {EDIF_TOK_PORTLIST, EDIF_TOK_PORTREF,
- EDIF_TOK_NAME, EDIF_TOK_LOGICWAVEFORM};
-static short f_LogicPort[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA};
-static short f_LogicRef[] = {EDIF_TOK_NAME, EDIF_TOK_LIBRARYREF};
-static short f_LogicValue[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
- -EDIF_TOK_VOLTAGEMAP, -EDIF_TOK_CURRENTMAP,
- -EDIF_TOK_BOOLEANMAP, -EDIF_TOK_COMPOUND,
- -EDIF_TOK_WEAK ,-EDIF_TOK_STRONG,
- -EDIF_TOK_DOMINATES, -EDIF_TOK_LOGICMAPOUTPUT,
- -EDIF_TOK_LOGICMAPINPUT,
- -EDIF_TOK_ISOLATED, EDIF_TOK_RESOLVES,
- EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA};
-static short f_LogicWaveform[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICLIST,
- EDIF_TOK_LOGICONEOF, EDIF_TOK_IGNORE};
-static short f_Maintain[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF, EDIF_TOK_DELAY,
- EDIF_TOK_LOADDELAY};
-static short f_Match[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
- EDIF_TOK_LOGICLIST, EDIF_TOK_LOGICONEOF};
-static short f_Member[] = {EDIF_TOK_NAME};
-static short f_MiNoMax[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_MINOMAXDISPLAY,
- EDIF_TOK_MINOMAX};
-static short f_MiNoMaxDisplay[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_DISPLAY};
-static short f_Mnm[] = {EDIF_TOK_E, EDIF_TOK_UNDEFINED,
- EDIF_TOK_UNCONSTRAINED};
-static short f_MultipleValueSet[] = {EDIF_TOK_RANGEVECTOR};
-static short f_MustJoin[] = {EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
- EDIF_TOK_WEAKJOINED, EDIF_TOK_JOINED};
-static short f_Name[] = {EDIF_TOK_DISPLAY};
-static short f_Net[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, -EDIF_TOK_CRITICALITY,
- EDIF_TOK_NETDELAY, EDIF_TOK_FIGURE, EDIF_TOK_NET,
- EDIF_TOK_INSTANCE, EDIF_TOK_COMMENTGRAPHICS,
- EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA, EDIF_TOK_JOINED, EDIF_TOK_ARRAY};
-static short f_NetBackAnnotate[] = {EDIF_TOK_NETREF, EDIF_TOK_NETDELAY,
- -EDIF_TOK_CRITICALITY, EDIF_TOK_PROPERTY,
- EDIF_TOK_COMMENT};
-static short f_NetBundle[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
- EDIF_TOK_LISTOFNETS, EDIF_TOK_FIGURE,
- EDIF_TOK_COMMENTGRAPHICS, EDIF_TOK_PROPERTY,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
-static short f_NetDelay[] = {EDIF_TOK_DERIVATION, EDIF_TOK_DELAY,
- EDIF_TOK_TRANSITION, EDIF_TOK_BECOMES};
-static short f_NetGroup[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER, EDIF_TOK_NETREF};
-static short f_NetMap[] = {EDIF_TOK_NETREF, EDIF_TOK_NETGROUP,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
-static short f_NetRef[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER, EDIF_TOK_NETREF,
- EDIF_TOK_INSTANCEREF, EDIF_TOK_VIEWREF};
-static short f_NonPermutable[] = {EDIF_TOK_PORTREF, EDIF_TOK_PERMUTABLE};
-static short f_NotAllowed[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA};
-static short f_NotchSpacing[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
- EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
- EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
- EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
-static short f_Number[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY, EDIF_TOK_NUMBER};
-static short f_NumberDefinition[] = {EDIF_TOK_SCALE, -EDIF_TOK_GRIDMAP,
- EDIF_TOK_COMMENT};
-static short f_NumberDisplay[] = {EDIF_TOK_E, EDIF_TOK_DISPLAY};
-static short f_OffPageConnector[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
- -EDIF_TOK_UNUSED, EDIF_TOK_PROPERTY,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
-static short f_OffsetEvent[] = {EDIF_TOK_EVENT, EDIF_TOK_E};
-static short f_OpenShape[] = {EDIF_TOK_CURVE, EDIF_TOK_PROPERTY};
-static short f_Origin[] = {EDIF_TOK_PT};
-static short f_OverhangDistance[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
- EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
- EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
- EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
-static short f_OverlapDistance[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
- EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
- EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
- EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
-static short f_Oversize[] = {EDIF_TOK_FIGUREGROUPREF, EDIF_TOK_INTERSECTION,
- EDIF_TOK_UNION, EDIF_TOK_DIFFERENCE,
- EDIF_TOK_INVERSE, EDIF_TOK_OVERSIZE,
- EDIF_TOK_CORNERTYPE};
-static short f_Page[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
- EDIF_TOK_INSTANCE, EDIF_TOK_NET, EDIF_TOK_NETBUNDLE,
- EDIF_TOK_COMMENTGRAPHICS, EDIF_TOK_PORTIMPLEMENTATION,
- -EDIF_TOK_PAGESIZE, -EDIF_TOK_BOUNDINGBOX,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
-static short f_PageSize[] = {EDIF_TOK_RECTANGLE};
-static short f_Parameter[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
- EDIF_TOK_BOOLEAN, EDIF_TOK_INTEGER,
- EDIF_TOK_MINOMAX, EDIF_TOK_NUMBER,
- EDIF_TOK_POINT, EDIF_TOK_STRING};
-static short f_ParameterAssign[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
- EDIF_TOK_BOOLEAN, EDIF_TOK_INTEGER,
- EDIF_TOK_MINOMAX, EDIF_TOK_NUMBER, EDIF_TOK_POINT,
- EDIF_TOK_STRING};
-static short f_ParameterDisplay[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
- EDIF_TOK_DISPLAY};
-static short f_Path[] = {EDIF_TOK_POINTLIST, EDIF_TOK_PROPERTY};
-static short f_PathDelay[] = {EDIF_TOK_DELAY, EDIF_TOK_EVENT};
-static short f_Permutable[] = {EDIF_TOK_PORTREF, EDIF_TOK_PERMUTABLE,
- EDIF_TOK_NONPERMUTABLE};
-static short f_PhysicalDesignRule[] = {EDIF_TOK_FIGUREWIDTH,
- EDIF_TOK_FIGUREAREA,
- EDIF_TOK_RECTANGLESIZE,
- EDIF_TOK_FIGUREPERIMETER,
- EDIF_TOK_OVERLAPDISTANCE,
- EDIF_TOK_OVERHANGDISTANCE,
- EDIF_TOK_ENCLOSUREDISTANCE,
- EDIF_TOK_INTERFIGUREGROUPSPACING,
- EDIF_TOK_NOTCHSPACING,
- EDIF_TOK_INTRAFIGUREGROUPSPACING,
- EDIF_TOK_NOTALLOWED,
- EDIF_TOK_FIGUREGROUP, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA};
-static short f_Plug[] = {EDIF_TOK_SOCKETSET};
-static short f_Point[] = {EDIF_TOK_PT, EDIF_TOK_POINTDISPLAY,
- EDIF_TOK_POINT};
-static short f_PointDisplay[] = {EDIF_TOK_PT, EDIF_TOK_DISPLAY};
-static short f_PointList[] = {EDIF_TOK_PT};
-static short f_Polygon[] = {EDIF_TOK_POINTLIST, EDIF_TOK_PROPERTY};
-static short f_Port[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
- -EDIF_TOK_DIRECTION, -EDIF_TOK_UNUSED,
- EDIF_TOK_PORTDELAY, -EDIF_TOK_DESIGNATOR,
- -EDIF_TOK_DCFANINLOAD, -EDIF_TOK_DCFANOUTLOAD,
- -EDIF_TOK_DCMAXFANIN, -EDIF_TOK_DCMAXFANOUT,
- -EDIF_TOK_ACLOAD, EDIF_TOK_PROPERTY,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
-static short f_PortBackAnnotate[] = {EDIF_TOK_PORTREF, -EDIF_TOK_DESIGNATOR,
- EDIF_TOK_PORTDELAY, -EDIF_TOK_DCFANINLOAD,
- -EDIF_TOK_DCFANOUTLOAD,
- -EDIF_TOK_DCMAXFANIN,
- -EDIF_TOK_DCMAXFANOUT, -EDIF_TOK_ACLOAD,
- EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT};
-static short f_PortBundle[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
- EDIF_TOK_LISTOFPORTS, EDIF_TOK_PROPERTY,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
-static short f_PortDelay[] = {EDIF_TOK_DERIVATION, EDIF_TOK_DELAY,
- EDIF_TOK_LOADDELAY, EDIF_TOK_TRANSITION,
- EDIF_TOK_BECOMES};
-static short f_PortGroup[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
- EDIF_TOK_PORTREF};
-static short f_PortImplementation[] = {EDIF_TOK_PORTREF, EDIF_TOK_NAME, EDIF_TOK_MEMBER,
- -EDIF_TOK_CONNECTLOCATION,
- EDIF_TOK_FIGURE, EDIF_TOK_INSTANCE,
- EDIF_TOK_COMMENTGRAPHICS,
- EDIF_TOK_PROPERTYDISPLAY,
- EDIF_TOK_KEYWORDDISPLAY,
- EDIF_TOK_PROPERTY,
- EDIF_TOK_USERDATA, EDIF_TOK_COMMENT};
-static short f_PortInstance[] = {EDIF_TOK_PORTREF, EDIF_TOK_NAME,
- EDIF_TOK_MEMBER, -EDIF_TOK_UNUSED,
- EDIF_TOK_PORTDELAY, -EDIF_TOK_DESIGNATOR,
- -EDIF_TOK_DCFANINLOAD,
- -EDIF_TOK_DCFANOUTLOAD, -EDIF_TOK_DCMAXFANIN,
- -EDIF_TOK_DCMAXFANOUT, -EDIF_TOK_ACLOAD,
- EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA};
-static short f_PortList[] = {EDIF_TOK_PORTREF, EDIF_TOK_NAME,
- EDIF_TOK_MEMBER};
-static short f_PortListAlias[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_ARRAY, EDIF_TOK_PORTLIST};
-static short f_PortMap[] = {EDIF_TOK_PORTREF, EDIF_TOK_PORTGROUP,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
-static short f_PortRef[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
- EDIF_TOK_PORTREF, EDIF_TOK_INSTANCEREF,
- EDIF_TOK_VIEWREF};
-static short f_Program[] = {EDIF_TOK_VERSION};
-static short f_Property[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_BOOLEAN,
- EDIF_TOK_INTEGER, EDIF_TOK_MINOMAX,
- EDIF_TOK_NUMBER, EDIF_TOK_POINT, EDIF_TOK_STRING,
- -EDIF_TOK_OWNER, -EDIF_TOK_UNIT,
- EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT};
-static short f_PropertyDisplay[] = {EDIF_TOK_NAME, EDIF_TOK_DISPLAY};
-static short f_ProtectionFrame[] = {EDIF_TOK_PORTIMPLEMENTATION,
- EDIF_TOK_FIGURE, EDIF_TOK_INSTANCE,
- EDIF_TOK_COMMENTGRAPHICS,
- -EDIF_TOK_BOUNDINGBOX,
- EDIF_TOK_PROPERTYDISPLAY,
- EDIF_TOK_KEYWORDDISPLAY,
- EDIF_TOK_PARAMETERDISPLAY,
- EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA};
-static short f_RangeVector[] = {EDIF_TOK_LESSTHAN, EDIF_TOK_GREATERTHAN,
- EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
- EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN,
- EDIF_TOK_SINGLEVALUESET};
-static short f_Rectangle[] = {EDIF_TOK_PT, EDIF_TOK_PROPERTY};
-static short f_RectangleSize[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
- EDIF_TOK_FIGUREGROUPOBJECT,
- EDIF_TOK_RANGEVECTOR,
- EDIF_TOK_MULTIPLEVALUESET,EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA};
-static short f_Rename[] = {EDIF_TOK_NAME, EDIF_TOK_STRINGDISPLAY};
-static short f_Resolves[] = {EDIF_TOK_NAME};
-static short f_Scale[] = {EDIF_TOK_E, EDIF_TOK_UNIT};
-static short f_Section[] = {EDIF_TOK_SECTION, EDIF_TOK_INSTANCE};
-static short f_Shape[] = {EDIF_TOK_CURVE, EDIF_TOK_PROPERTY};
-static short f_Simulate[] = {EDIF_TOK_NAME, EDIF_TOK_PORTLISTALIAS,
- EDIF_TOK_WAVEVALUE, EDIF_TOK_APPLY,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
-static short f_SimulationInfo[] = {EDIF_TOK_LOGICVALUE, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA};
-static short f_SingleValueSet[] = {EDIF_TOK_LESSTHAN, EDIF_TOK_GREATERTHAN,
- EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
- EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN};
-static short f_Site[] = {EDIF_TOK_VIEWREF, EDIF_TOK_TRANSFORM};
-static short f_Socket[] = {EDIF_TOK_SYMMETRY};
-static short f_SocketSet[] = {EDIF_TOK_SYMMETRY, EDIF_TOK_SITE};
-static short f_Status[] = {EDIF_TOK_WRITTEN, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA};
-static short f_Steady[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER, EDIF_TOK_PORTREF,
- EDIF_TOK_PORTLIST, EDIF_TOK_DURATION,
- EDIF_TOK_TRANSITION, EDIF_TOK_BECOMES};
-static short f_String[] = {EDIF_TOK_STRINGDISPLAY, EDIF_TOK_STRING};
-static short f_StringDisplay[] = {EDIF_TOK_DISPLAY};
-static short f_Strong[] = {EDIF_TOK_NAME};
-static short f_Symbol[] = {EDIF_TOK_PORTIMPLEMENTATION, EDIF_TOK_FIGURE,
- EDIF_TOK_INSTANCE, EDIF_TOK_COMMENTGRAPHICS,
- EDIF_TOK_ANNOTATE, -EDIF_TOK_PAGESIZE,
- -EDIF_TOK_BOUNDINGBOX, EDIF_TOK_PROPERTYDISPLAY,
- EDIF_TOK_KEYWORDDISPLAY, EDIF_TOK_PARAMETERDISPLAY,
- EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA};
-static short f_Symmetry[] = {EDIF_TOK_TRANSFORM};
-static short f_Table[] = {EDIF_TOK_ENTRY, EDIF_TOK_TABLEDEFAULT};
-static short f_TableDefault[] = {EDIF_TOK_LOGICREF, EDIF_TOK_PORTREF,
- EDIF_TOK_NOCHANGE, EDIF_TOK_TABLE,
- EDIF_TOK_DELAY, EDIF_TOK_LOADDELAY};
-static short f_Technology[] = {EDIF_TOK_NUMBERDEFINITION, EDIF_TOK_FIGUREGROUP,
- EDIF_TOK_FABRICATE, -EDIF_TOK_SIMULATIONINFO,
- EDIF_TOK_COMMENT, EDIF_TOK_USERDATA,
- -EDIF_TOK_PHYSICALDESIGNRULE};
-static short f_TimeInterval[] = {EDIF_TOK_EVENT, EDIF_TOK_OFFSETEVENT,
- EDIF_TOK_DURATION};
-static short f_Timing[] = {EDIF_TOK_DERIVATION, EDIF_TOK_PATHDELAY,
- EDIF_TOK_FORBIDDENEVENT, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA};
-static short f_Transform[] = {EDIF_TOK_SCALEX, EDIF_TOK_SCALEY, EDIF_TOK_DELTA,
- EDIF_TOK_ORIENTATION, EDIF_TOK_ORIGIN};
-static short f_Transition[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICLIST,
- EDIF_TOK_LOGICONEOF};
-static short f_Trigger[] = {EDIF_TOK_CHANGE, EDIF_TOK_STEADY,
- EDIF_TOK_INITIAL};
-static short f_Union[] = {EDIF_TOK_FIGUREGROUPREF, EDIF_TOK_INTERSECTION,
- EDIF_TOK_UNION, EDIF_TOK_DIFFERENCE,
- EDIF_TOK_INVERSE, EDIF_TOK_OVERSIZE};
-static short f_View[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_VIEWTYPE,
- EDIF_TOK_INTERFACE, -EDIF_TOK_STATUS,
- -EDIF_TOK_CONTENTS, EDIF_TOK_COMMENT,
- EDIF_TOK_PROPERTY, EDIF_TOK_USERDATA};
-static short f_ViewList[] = {EDIF_TOK_VIEWREF, EDIF_TOK_VIEWLIST};
-static short f_ViewMap[] = {EDIF_TOK_PORTMAP, EDIF_TOK_PORTBACKANNOTATE,
- EDIF_TOK_INSTANCEMAP,
- EDIF_TOK_INSTANCEBACKANNOTATE, EDIF_TOK_NETMAP,
- EDIF_TOK_NETBACKANNOTATE, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA};
-static short f_ViewRef[] = {EDIF_TOK_NAME, EDIF_TOK_CELLREF};
-static short f_Visible[] = {EDIF_TOK_FALSE, EDIF_TOK_TRUE};
-static short f_VoltageMap[] = {EDIF_TOK_MNM, EDIF_TOK_E};
-static short f_WaveValue[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_E,
- EDIF_TOK_LOGICWAVEFORM};
-static short f_Weak[] = {EDIF_TOK_NAME};
-static short f_WeakJoined[] = {EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
- EDIF_TOK_JOINED};
-static short f_When[] = {EDIF_TOK_TRIGGER, EDIF_TOK_AFTER,
- EDIF_TOK_FOLLOW, EDIF_TOK_MAINTAIN,
- EDIF_TOK_LOGICASSIGN, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA};
-static short f_Written[] = {EDIF_TOK_TIMESTAMP, EDIF_TOK_AUTHOR,
- EDIF_TOK_PROGRAM, EDIF_TOK_DATAORIGIN,
- EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
- EDIF_TOK_USERDATA};
-/*
- * Context binding table:
- *
- * This binds context follower arrays to their originating context.
- */
-typedef struct Binder {
- short *Follower; /* pointer to follower array */
- short Origin; /* '%token' value of origin */
- short FollowerSize; /* size of follower array */
-} Binder;
-#define BE(f,o) {f,o,sizeof(f)/sizeof(short)}
-static Binder BinderDef[] = {
- BE(f_NULL, 0),
- BE(f_Edif, EDIF_TOK_EDIF),
- BE(f_AcLoad, EDIF_TOK_ACLOAD),
- BE(f_After, EDIF_TOK_AFTER),
- BE(f_Annotate, EDIF_TOK_ANNOTATE),
- BE(f_Apply, EDIF_TOK_APPLY),
- BE(f_Arc, EDIF_TOK_ARC),
- BE(f_Array, EDIF_TOK_ARRAY),
- BE(f_ArrayMacro, EDIF_TOK_ARRAYMACRO),
- BE(f_ArrayRelatedInfo, EDIF_TOK_ARRAYRELATEDINFO),
- BE(f_ArraySite, EDIF_TOK_ARRAYSITE),
- BE(f_AtLeast, EDIF_TOK_ATLEAST),
- BE(f_AtMost, EDIF_TOK_ATMOST),
- BE(f_Becomes, EDIF_TOK_BECOMES),
- BE(f_Boolean, EDIF_TOK_BOOLEAN),
- BE(f_BooleanDisplay, EDIF_TOK_BOOLEANDISPLAY),
- BE(f_BooleanMap, EDIF_TOK_BOOLEANMAP),
- BE(f_BorderPattern, EDIF_TOK_BORDERPATTERN),
- BE(f_BoundingBox, EDIF_TOK_BOUNDINGBOX),
- BE(f_Cell, EDIF_TOK_CELL),
- BE(f_CellRef, EDIF_TOK_CELLREF),
- BE(f_Change, EDIF_TOK_CHANGE),
- BE(f_Circle, EDIF_TOK_CIRCLE),
- BE(f_Color, EDIF_TOK_COLOR),
- BE(f_CommentGraphics, EDIF_TOK_COMMENTGRAPHICS),
- BE(f_Compound, EDIF_TOK_COMPOUND),
- BE(f_ConnectLocation, EDIF_TOK_CONNECTLOCATION),
- BE(f_Contents, EDIF_TOK_CONTENTS),
- BE(f_Criticality, EDIF_TOK_CRITICALITY),
- BE(f_CurrentMap, EDIF_TOK_CURRENTMAP),
- BE(f_Curve, EDIF_TOK_CURVE),
- BE(f_Cycle, EDIF_TOK_CYCLE),
- BE(f_DataOrigin, EDIF_TOK_DATAORIGIN),
- BE(f_DcFanInLoad, EDIF_TOK_DCFANINLOAD),
- BE(f_DcFanOutLoad, EDIF_TOK_DCFANOUTLOAD),
- BE(f_DcMaxFanIn, EDIF_TOK_DCMAXFANIN),
- BE(f_DcMaxFanOut, EDIF_TOK_DCMAXFANOUT),
- BE(f_Delay, EDIF_TOK_DELAY),
- BE(f_Delta, EDIF_TOK_DELTA),
- BE(f_Design, EDIF_TOK_DESIGN),
- BE(f_Designator, EDIF_TOK_DESIGNATOR),
- BE(f_Difference, EDIF_TOK_DIFFERENCE),
- BE(f_Display, EDIF_TOK_DISPLAY),
- BE(f_Dominates, EDIF_TOK_DOMINATES),
- BE(f_Dot, EDIF_TOK_DOT),
- BE(f_Duration, EDIF_TOK_DURATION),
- BE(f_EnclosureDistance, EDIF_TOK_ENCLOSUREDISTANCE),
- BE(f_Entry, EDIF_TOK_ENTRY),
- BE(f_Exactly, EDIF_TOK_EXACTLY),
- BE(f_External, EDIF_TOK_EXTERNAL),
- BE(f_Fabricate, EDIF_TOK_FABRICATE),
- BE(f_Figure, EDIF_TOK_FIGURE),
- BE(f_FigureArea, EDIF_TOK_FIGUREAREA),
- BE(f_FigureGroup, EDIF_TOK_FIGUREGROUP),
- BE(f_FigureGroupObject, EDIF_TOK_FIGUREGROUPOBJECT),
- BE(f_FigureGroupOverride, EDIF_TOK_FIGUREGROUPOVERRIDE),
- BE(f_FigureGroupRef, EDIF_TOK_FIGUREGROUPREF),
- BE(f_FigurePerimeter, EDIF_TOK_FIGUREPERIMETER),
- BE(f_FigureWidth, EDIF_TOK_FIGUREWIDTH),
- BE(f_FillPattern, EDIF_TOK_FILLPATTERN),
- BE(f_Follow, EDIF_TOK_FOLLOW),
- BE(f_ForbiddenEvent, EDIF_TOK_FORBIDDENEVENT),
- BE(f_GlobalPortRef, EDIF_TOK_GLOBALPORTREF),
- BE(f_GreaterThan, EDIF_TOK_GREATERTHAN),
- BE(f_GridMap, EDIF_TOK_GRIDMAP),
- BE(f_IncludeFigureGroup, EDIF_TOK_INCLUDEFIGUREGROUP),
- BE(f_Instance, EDIF_TOK_INSTANCE),
- BE(f_InstanceBackAnnotate, EDIF_TOK_INSTANCEBACKANNOTATE),
- BE(f_InstanceGroup, EDIF_TOK_INSTANCEGROUP),
- BE(f_InstanceMap, EDIF_TOK_INSTANCEMAP),
- BE(f_InstanceRef, EDIF_TOK_INSTANCEREF),
- BE(f_Integer, EDIF_TOK_INTEGER),
- BE(f_IntegerDisplay, EDIF_TOK_INTEGERDISPLAY),
- BE(f_InterFigureGroupSpacing, EDIF_TOK_INTERFIGUREGROUPSPACING),
- BE(f_Interface, EDIF_TOK_INTERFACE),
- BE(f_Intersection, EDIF_TOK_INTERSECTION),
- BE(f_IntraFigureGroupSpacing, EDIF_TOK_INTRAFIGUREGROUPSPACING),
- BE(f_Inverse, EDIF_TOK_INVERSE),
- BE(f_Joined, EDIF_TOK_JOINED),
- BE(f_KeywordDisplay, EDIF_TOK_KEYWORDDISPLAY),
- BE(f_KeywordMap, EDIF_TOK_KEYWORDMAP),
- BE(f_LessThan, EDIF_TOK_LESSTHAN),
- BE(f_Library, EDIF_TOK_LIBRARY),
- BE(f_LibraryRef, EDIF_TOK_LIBRARYREF),
- BE(f_ListOfNets, EDIF_TOK_LISTOFNETS),
- BE(f_ListOfPorts, EDIF_TOK_LISTOFPORTS),
- BE(f_LoadDelay, EDIF_TOK_LOADDELAY),
- BE(f_LogicAssign, EDIF_TOK_LOGICASSIGN),
- BE(f_LogicInput, EDIF_TOK_LOGICINPUT),
- BE(f_LogicList, EDIF_TOK_LOGICLIST),
- BE(f_LogicMapInput, EDIF_TOK_LOGICMAPINPUT),
- BE(f_LogicMapOutput, EDIF_TOK_LOGICMAPOUTPUT),
- BE(f_LogicOneOf, EDIF_TOK_LOGICONEOF),
- BE(f_LogicOutput, EDIF_TOK_LOGICOUTPUT),
- BE(f_LogicPort, EDIF_TOK_LOGICPORT),
- BE(f_LogicRef, EDIF_TOK_LOGICREF),
- BE(f_LogicValue, EDIF_TOK_LOGICVALUE),
- BE(f_LogicWaveform, EDIF_TOK_LOGICWAVEFORM),
- BE(f_Maintain, EDIF_TOK_MAINTAIN),
- BE(f_Match, EDIF_TOK_MATCH),
- BE(f_Member, EDIF_TOK_MEMBER),
- BE(f_MiNoMax, EDIF_TOK_MINOMAX),
- BE(f_MiNoMaxDisplay, EDIF_TOK_MINOMAXDISPLAY),
- BE(f_Mnm, EDIF_TOK_MNM),
- BE(f_MultipleValueSet, EDIF_TOK_MULTIPLEVALUESET),
- BE(f_MustJoin, EDIF_TOK_MUSTJOIN),
- BE(f_Name, EDIF_TOK_NAME),
- BE(f_Net, EDIF_TOK_NET),
- BE(f_NetBackAnnotate, EDIF_TOK_NETBACKANNOTATE),
- BE(f_NetBundle, EDIF_TOK_NETBUNDLE),
- BE(f_NetDelay, EDIF_TOK_NETDELAY),
- BE(f_NetGroup, EDIF_TOK_NETGROUP),
- BE(f_NetMap, EDIF_TOK_NETMAP),
- BE(f_NetRef, EDIF_TOK_NETREF),
- BE(f_NonPermutable, EDIF_TOK_NONPERMUTABLE),
- BE(f_NotAllowed, EDIF_TOK_NOTALLOWED),
- BE(f_NotchSpacing, EDIF_TOK_NOTCHSPACING),
- BE(f_Number, EDIF_TOK_NUMBER),
- BE(f_NumberDefinition, EDIF_TOK_NUMBERDEFINITION),
- BE(f_NumberDisplay, EDIF_TOK_NUMBERDISPLAY),
- BE(f_OffPageConnector, EDIF_TOK_OFFPAGECONNECTOR),
- BE(f_OffsetEvent, EDIF_TOK_OFFSETEVENT),
- BE(f_OpenShape, EDIF_TOK_OPENSHAPE),
- BE(f_Origin, EDIF_TOK_ORIGIN),
- BE(f_OverhangDistance, EDIF_TOK_OVERHANGDISTANCE),
- BE(f_OverlapDistance, EDIF_TOK_OVERLAPDISTANCE),
- BE(f_Oversize, EDIF_TOK_OVERSIZE),
- BE(f_Page, EDIF_TOK_PAGE),
- BE(f_PageSize, EDIF_TOK_PAGESIZE),
- BE(f_Parameter, EDIF_TOK_PARAMETER),
- BE(f_ParameterAssign, EDIF_TOK_PARAMETERASSIGN),
- BE(f_ParameterDisplay, EDIF_TOK_PARAMETERDISPLAY),
- BE(f_Path, EDIF_TOK_PATH),
- BE(f_PathDelay, EDIF_TOK_PATHDELAY),
- BE(f_Permutable, EDIF_TOK_PERMUTABLE),
- BE(f_PhysicalDesignRule, EDIF_TOK_PHYSICALDESIGNRULE),
- BE(f_Plug, EDIF_TOK_PLUG),
- BE(f_Point, EDIF_TOK_POINT),
- BE(f_PointDisplay, EDIF_TOK_POINTDISPLAY),
- BE(f_PointList, EDIF_TOK_POINTLIST),
- BE(f_Polygon, EDIF_TOK_POLYGON),
- BE(f_Port, EDIF_TOK_PORT),
- BE(f_PortBackAnnotate, EDIF_TOK_PORTBACKANNOTATE),
- BE(f_PortBundle, EDIF_TOK_PORTBUNDLE),
- BE(f_PortDelay, EDIF_TOK_PORTDELAY),
- BE(f_PortGroup, EDIF_TOK_PORTGROUP),
- BE(f_PortImplementation, EDIF_TOK_PORTIMPLEMENTATION),
- BE(f_PortInstance, EDIF_TOK_PORTINSTANCE),
- BE(f_PortList, EDIF_TOK_PORTLIST),
- BE(f_PortListAlias, EDIF_TOK_PORTLISTALIAS),
- BE(f_PortMap, EDIF_TOK_PORTMAP),
- BE(f_PortRef, EDIF_TOK_PORTREF),
- BE(f_Program, EDIF_TOK_PROGRAM),
- BE(f_Property, EDIF_TOK_PROPERTY),
- BE(f_PropertyDisplay, EDIF_TOK_PROPERTYDISPLAY),
- BE(f_ProtectionFrame, EDIF_TOK_PROTECTIONFRAME),
- BE(f_RangeVector, EDIF_TOK_RANGEVECTOR),
- BE(f_Rectangle, EDIF_TOK_RECTANGLE),
- BE(f_RectangleSize, EDIF_TOK_RECTANGLESIZE),
- BE(f_Rename, EDIF_TOK_RENAME),
- BE(f_Resolves, EDIF_TOK_RESOLVES),
- BE(f_Scale, EDIF_TOK_SCALE),
- BE(f_Section, EDIF_TOK_SECTION),
- BE(f_Shape, EDIF_TOK_SHAPE),
- BE(f_Simulate, EDIF_TOK_SIMULATE),
- BE(f_SimulationInfo, EDIF_TOK_SIMULATIONINFO),
- BE(f_SingleValueSet, EDIF_TOK_SINGLEVALUESET),
- BE(f_Site, EDIF_TOK_SITE),
- BE(f_Socket, EDIF_TOK_SOCKET),
- BE(f_SocketSet, EDIF_TOK_SOCKETSET),
- BE(f_Status, EDIF_TOK_STATUS),
- BE(f_Steady, EDIF_TOK_STEADY),
- BE(f_String, EDIF_TOK_STRING),
- BE(f_StringDisplay, EDIF_TOK_STRINGDISPLAY),
- BE(f_Strong, EDIF_TOK_STRONG),
- BE(f_Symbol, EDIF_TOK_SYMBOL),
- BE(f_Symmetry, EDIF_TOK_SYMMETRY),
- BE(f_Table, EDIF_TOK_TABLE),
- BE(f_TableDefault, EDIF_TOK_TABLEDEFAULT),
- BE(f_Technology, EDIF_TOK_TECHNOLOGY),
- BE(f_TimeInterval, EDIF_TOK_TIMEINTERVAL),
- BE(f_Timing, EDIF_TOK_TIMING),
- BE(f_Transform, EDIF_TOK_TRANSFORM),
- BE(f_Transition, EDIF_TOK_TRANSITION),
- BE(f_Trigger, EDIF_TOK_TRIGGER),
- BE(f_Union, EDIF_TOK_UNION),
- BE(f_View, EDIF_TOK_VIEW),
- BE(f_ViewList, EDIF_TOK_VIEWLIST),
- BE(f_ViewMap, EDIF_TOK_VIEWMAP),
- BE(f_ViewRef, EDIF_TOK_VIEWREF),
- BE(f_Visible, EDIF_TOK_VISIBLE),
- BE(f_VoltageMap, EDIF_TOK_VOLTAGEMAP),
- BE(f_WaveValue, EDIF_TOK_WAVEVALUE),
- BE(f_Weak, EDIF_TOK_WEAK),
- BE(f_WeakJoined, EDIF_TOK_WEAKJOINED),
- BE(f_When, EDIF_TOK_WHEN),
- BE(f_Written, EDIF_TOK_WRITTEN)
-};
-static int BinderDefSize = sizeof(BinderDef) / sizeof(Binder);
-/*
- * Keyword table:
- *
- * This hash table holds all strings which may have to be matched
- * to. WARNING: it is assumed that there is no overlap of the 'token'
- * and 'context' strings.
- */
-typedef struct Keyword {
- struct Keyword *Next; /* pointer to next entry */
- char *String; /* pointer to associated string */
-} Keyword;
-#define KEYWORD_HASH 127 /* hash table size */
-static Keyword *KeywordTable[KEYWORD_HASH];
-/*
- * Enter keyword:
- *
- * The passed string is entered into the keyword hash table.
- */
-static void EnterKeyword(char * str)
-{
- /*
- * Locals.
- */
- register Keyword *key;
- register unsigned int hsh;
- register char *cp;
- /*
- * Create the hash code, and add an entry to the table.
- */
- for (hsh = 0, cp = str; *cp; hsh += hsh + *cp++);
- hsh %= KEYWORD_HASH;
- key = (Keyword *) Malloc(sizeof(Keyword));
- key->Next = KeywordTable[hsh];
- (KeywordTable[hsh] = key)->String = str;
-}
-/*
- * Find keyword:
- *
- * The passed string is located within the keyword table. If an
- * entry exists, then the value of the keyword string is returned. This
- * is real useful for doing string comparisons by pointer value later.
- * If there is no match, a NULL is returned.
- */
-static char *FindKeyword(char * str)
-{
- /*
- * Locals.
- */
- register Keyword *wlk,*owk;
- register unsigned int hsh;
- register char *cp;
- char lower[IDENT_LENGTH + 1];
- /*
- * Create a lower case copy of the string.
- */
- for (cp = lower; *str;)
- if (isupper( (int) *str))
- *cp++ = tolower( (int) *str++);
- else
- *cp++ = *str++;
- *cp = '\0';
- /*
- * Search the hash table for a match.
- */
- for (hsh = 0, cp = lower; *cp; hsh += hsh + *cp++);
- hsh %= KEYWORD_HASH;
- for (owk = NULL, wlk = KeywordTable[hsh]; wlk; wlk = (owk = wlk)->Next)
- if (!strcmp(wlk->String,lower)){
- /*
- * Readjust the LRU.
- */
- if (owk){
- owk->Next = wlk->Next;
- wlk->Next = KeywordTable[hsh];
- KeywordTable[hsh] = wlk;
- }
- return (wlk->String);
- }
- return (NULL);
-}
-/*
- * Token hash table.
- */
-#define TOKEN_HASH 51
-static Token *TokenHash[TOKEN_HASH];
-/*
- * Find token:
- *
- * A pointer to the token of the passed code is returned. If
- * no such beastie is present a NULL is returned instead.
- */
-static Token *FindToken(register int cod)
-{
- /*
- * Locals.
- */
- register Token *wlk,*owk;
- register unsigned int hsh;
- /*
- * Search the hash table for a matching token.
- */
- hsh = cod % TOKEN_HASH;
- for (owk = NULL, wlk = TokenHash[hsh]; wlk; wlk = (owk = wlk)->Next)
- if (cod == wlk->Code){
- if (owk){
- owk->Next = wlk->Next;
- wlk->Next = TokenHash[hsh];
- TokenHash[hsh] = wlk;
- }
- break;
- }
- return (wlk);
-}
-/*
- * Context hash table.
- */
-#define CONTEXT_HASH 127
-static Context *ContextHash[CONTEXT_HASH];
-/*
- * Find context:
- *
- * A pointer to the context of the passed code is returned. If
- * no such beastie is present a NULL is returned instead.
- */
-static Context *FindContext(register int cod)
-{
- /*
- * Locals.
- */
- register Context *wlk,*owk;
- register unsigned int hsh;
- /*
- * Search the hash table for a matching context.
- */
- hsh = cod % CONTEXT_HASH;
- for (owk = NULL, wlk = ContextHash[hsh]; wlk; wlk = (owk = wlk)->Next)
- if (cod == wlk->Code){
- if (owk){
- owk->Next = wlk->Next;
- wlk->Next = ContextHash[hsh];
- ContextHash[hsh] = wlk;
- }
- break;
- }
- return (wlk);
-}
-/*
- * Token stacking variables.
- */
-#ifdef DEBUG
-#define TS_DEPTH 8
-#define TS_MASK (TS_DEPTH - 1)
-static unsigned int TSP = 0; /* token stack pointer */
-static char *TokenStack[TS_DEPTH]; /* token name strings */
-static short TokenType[TS_DEPTH]; /* token types */
-/*
- * Stack:
- *
- * Add a token to the debug stack. The passed string and type are
- * what is to be pushed.
- */
-static Stack(char * str, int typ)
-{
- /*
- * Free any previous string, then push.
- */
- if (TokenStack[TSP & TS_MASK])
- Free(TokenStack[TSP & TS_MASK]);
- TokenStack[TSP & TS_MASK] = strcpy((char *)Malloc(strlen(str) + 1),str);
- TokenType[TSP & TS_MASK] = typ;
- TSP += 1;
-}
-/*
- * Dump stack:
- *
- * This displays the last set of accumulated tokens.
- */
-static DumpStack()
-{
- /*
- * Locals.
- */
- register int i;
- register Context *cxt;
- register Token *tok;
- register char *nam;
- /*
- * Run through the list displaying the oldest first.
- */
- fprintf(Error,"\n\n");
- for (i = 0; i < TS_DEPTH; i += 1)
- if (TokenStack[(TSP + i) & TS_MASK]){
- /*
- * Get the type name string.
- */
- if (cxt = FindContext(TokenType[(TSP + i) & TS_MASK]))
- nam = cxt->Name;
- else if (tok = FindToken(TokenType[(TSP + i) & TS_MASK]))
- nam = tok->Name;
- else switch (TokenType[(TSP + i) & TS_MASK]){
- case IDENT: nam = "IDENT"; break;
- case INT: nam = "INT"; break;
- case KEYWORD: nam = "KEYWORD"; break;
- case STR: nam = "STR"; break;
- default: nam = "?"; break;
- }
- /*
- * Now print the token state.
- */
- fprintf(Error,"%2d %-16.16s '%s'\n",TS_DEPTH - i,nam,
- TokenStack[(TSP + i) & TS_MASK]);
- }
- fprintf(Error,"\n");
-}
-#else
-#define Stack(s,t)
-#endif /* DEBUG */
-/*
- * Parser state variables.
- */
-static FILE *Input = NULL; /* input stream */
-static FILE *Error = NULL; /* error stream */
-static char *InFile; /* file name on the input stream */
-static long LineNumber; /* current input line number */
-static ContextCar *CSP = NULL; /* top of context stack */
-static char yytext[IDENT_LENGTH + 1]; /* token buffer */
-static char CharBuf[IDENT_LENGTH + 1]; /* garbage buffer */
-/*
- * yyerror:
- *
- * Standard error reporter, it prints out the passed string
- * preceeded by the current filename and line number.
- */
-static void yyerror(const char *ers)
-{
-#ifdef DEBUG
- DumpStack();
-#endif /* DEBUG */
- fprintf(Error,"%s, line %ld: %s\n",InFile,LineNumber,ers);
-}
-/*
- * String bucket definitions.
- */
-#define BUCKET_SIZE 64
-typedef struct Bucket {
- struct Bucket *Next; /* pointer to next bucket */
- int Index; /* pointer to next free slot */
- char Data[BUCKET_SIZE]; /* string data */
-} Bucket;
-static Bucket *CurrentBucket = NULL; /* string bucket list */
-static int StringSize = 0; /* current string length */
-/*
- * Push string:
- *
- * This adds the passed charater to the current string bucket.
- */
-static void PushString(char chr)
-{
- /*
- * Locals.
- */
- register Bucket *bck;
- /*
- * Make sure there is room for the push.
- */
- if ((bck = CurrentBucket)->Index >= BUCKET_SIZE){
- bck = (Bucket *) Malloc(sizeof(Bucket));
- bck->Next = CurrentBucket;
- (CurrentBucket = bck)->Index = 0;
- }
- /*
- * Push the character.
- */
- bck->Data[bck->Index++] = chr;
- StringSize += 1;
-}
-/*
- * Form string:
- *
- * This converts the current string bucket into a real live string,
- * whose pointer is returned.
- */
-static char *FormString()
-{
- /*
- * Locals.
- */
- register Bucket *bck;
- register char *cp;
- /*
- * Allocate space for the string, set the pointer at the end.
- */
- cp = (char *) Malloc(StringSize + 1);
-
- cp += StringSize;
- *cp-- = '\0';
- /*
- * Yank characters out of the bucket.
- */
- for (bck = CurrentBucket; bck->Index || bck->Next;){
- if (!bck->Index){
- CurrentBucket = bck->Next;
- Free(bck);
- bck = CurrentBucket;
- }
- *cp-- = bck->Data[--bck->Index];
- }
- /* reset buffer size to zero */
- StringSize =0;
- return (cp + 1);
-}
-/*
- * Parse EDIF:
- *
- * This builds the context tree and then calls the real parser.
- * It is passed two file streams, the first is where the input comes
- * from; the second is where error messages get printed.
- */
-void ParseEDIF(char* filename,FILE* err)
-{
- /*
- * Locals.
- */
- register int i;
- static int ContextDefined = 1;
- /*
- * Set up the file state to something useful.
- */
- InFile = filename;
- Input = fopen(filename,"r");
- Error = err;
- LineNumber = 1;
- /*
- * Define both the enabled token and context strings.
- */
- if (ContextDefined){
- for (i = TokenDefSize; i--; EnterKeyword(TokenDef[i].Name)){
- register unsigned int hsh;
- hsh = TokenDef[i].Code % TOKEN_HASH;
- TokenDef[i].Next = TokenHash[hsh];
- TokenHash[hsh] = &TokenDef[i];
- }
- for (i = ContextDefSize; i--; EnterKeyword(ContextDef[i].Name)){
- register unsigned int hsh;
- hsh = ContextDef[i].Code % CONTEXT_HASH;
- ContextDef[i].Next = ContextHash[hsh];
- ContextHash[hsh] = &ContextDef[i];
- }
- /*
- * Build the context tree.
- */
- for (i = BinderDefSize; i--;){
- register Context *cxt;
- register int j;
- /*
- * Define the current context to have carriers bound to it.
- */
- cxt = FindContext(BinderDef[i].Origin);
- for (j = BinderDef[i].FollowerSize; j--;){
- register ContextCar *cc;
- /*
- * Add carriers to the current context.
- */
- cc = (ContextCar *) Malloc(sizeof(ContextCar));
- cc->Next = cxt->Context;
- (cxt->Context = cc)->Context =
- FindContext(ABS(BinderDef[i].Follower[j]));
- cc->u.Single = BinderDef[i].Follower[j] < 0;
- }
- }
- /*
- * Build the token tree.
- */
- for (i = TieDefSize; i--;){
- register Context *cxt;
- register int j;
- /*
- * Define the current context to have carriers bound to it.
- */
- cxt = FindContext(TieDef[i].Origin);
- for (j = TieDef[i].EnableSize; j--;){
- register TokenCar *tc;
- /*
- * Add carriers to the current context.
- */
- tc = (TokenCar *) Malloc(sizeof(TokenCar));
- tc->Next = cxt->Token;
- (cxt->Token = tc)->Token = FindToken(TieDef[i].Enable[j]);
- }
- }
- /*
- * Put a bogus context on the stack which has 'EDIF' as its
- * follower.
- */
- CSP = (ContextCar *) Malloc(sizeof(ContextCar));
- CSP->Next = NULL;
- CSP->Context = FindContext(0);
- CSP->u.Used = NULL;
- ContextDefined = 0;
- }
- /*
- * Create an initial, empty string bucket.
- */
- CurrentBucket = (Bucket *) Malloc(sizeof(Bucket));
- CurrentBucket->Next = 0;
- CurrentBucket->Index = 0;
- /*
- * Fill the token stack with NULLs if debugging is enabled.
- */
-#ifdef DEBUG
- for (i = TS_DEPTH; i--; TokenStack[i] = NULL)
- if (TokenStack[i])
- Free(TokenStack[i]);
- TSP = 0;
-#endif /* DEBUG */
- /*
- * Go parse things!
- */
- edifparse();
-}
-/*
- * Match token:
- *
- * The passed string is looked up in the current context's token
- * list to see if it is enabled. If so the token value is returned,
- * if not then zero.
- */
-static int MatchToken(register char * str)
-{
- /*
- * Locals.
- */
- register TokenCar *wlk,*owk;
- /*
- * Convert the string to the proper form, then search the token
- * carrier list for a match.
- */
- str = FindKeyword(str);
- for (owk = NULL, wlk = CSP->Context->Token; wlk; wlk = (owk = wlk)->Next)
- if (str == wlk->Token->Name){
- if (owk){
- owk->Next = wlk->Next;
- wlk->Next = CSP->Context->Token;
- CSP->Context->Token = wlk;
- }
- return (wlk->Token->Code);
- }
- return (0);
-}
-/*
- * Match context:
- *
- * If the passed keyword string is within the current context, the
- * new context is pushed and token value is returned. A zero otherwise.
- */
-static int MatchContext(register char * str)
-{
- /*
- * Locals.
- */
- register ContextCar *wlk,*owk;
- /*
- * See if the context is present.
- */
- str = FindKeyword(str);
- for (owk = NULL, wlk = CSP->Context->Context; wlk; wlk = (owk = wlk)->Next)
- if (str == wlk->Context->Name){
- if (owk){
- owk->Next = wlk->Next;
- wlk->Next = CSP->Context->Context;
- CSP->Context->Context = wlk;
- }
- /*
- * If a single context, make sure it isn't already used.
- */
- if (wlk->u.Single){
- register UsedCar *usc;
- for (usc = CSP->u.Used; usc; usc = usc->Next)
- if (usc->Code == wlk->Context->Code)
- break;
- if (usc){
- sprintf(CharBuf,"'%s' is used more than once within '%s'",
- str,CSP->Context->Name);
- yyerror(CharBuf);
- } else {
- usc = (UsedCar *) Malloc(sizeof(UsedCar));
- usc->Next = CSP->u.Used;
- (CSP->u.Used = usc)->Code = wlk->Context->Code;
- }
- }
- /*
- * Push the new context.
- */
- owk = (ContextCar *) Malloc(sizeof(ContextCar));
- owk->Next = CSP;
- (CSP = owk)->Context = wlk->Context;
- owk->u.Used = NULL;
- return (wlk->Context->Code);
- }
- return (0);
-}
-/*
- * PopC:
- *
- * This pops the current context.
- */
-static void PopC()
-{
- /*
- * Locals.
- */
- register UsedCar *usc;
- register ContextCar *csp;
- /*
- * Release single markers and pop context.
- */
- while ( (usc = CSP->u.Used) ){
- CSP->u.Used = usc->Next;
- Free(usc);
- }
- csp = CSP->Next;
- Free(CSP);
- CSP = csp;
-}
-/*
- * Lexical analyzer states.
- */
-#define L_START 0
-#define L_INT 1
-#define L_IDENT 2
-#define L_KEYWORD 3
-#define L_STRING 4
-#define L_KEYWORD2 5
-#define L_ASCIICHAR 6
-#define L_ASCIICHAR2 7
-/*
- * yylex:
- *
- * This is the lexical analyzer called by the YACC/BISON parser.
- * It returns a pretty restricted set of token types and does the
- * context movement when acceptable keywords are found. The token
- * value returned is a NULL terminated string to allocated storage
- * (ie - it should get released some time) with some restrictions.
- * The token value for integers is strips a leading '+' if present.
- * String token values have the leading and trailing '"'-s stripped.
- * '%' conversion characters in string values are passed converted.
- * The '(' and ')' characters do not have a token value.
- */
-static int yylex()
-{
- /*
- * Locals.
- */
- register int c,s,l;
- /*
- * Keep on sucking up characters until we find something which
- * explicitly forces us out of this function.
- */
- for (s = L_START, l = 0; 1;){
- yytext[l++] = c = Getc(Input);
- switch (s){
- /*
- * Starting state, look for something resembling a token.
- */
- case L_START:
- if (isdigit(c) || c == '-')
- s = L_INT;
- else if (isalpha(c) || c == '&')
- s = L_IDENT;
- else if (isspace(c)){
- if (c == '\n')
- LineNumber += 1;
- l = 0;
- } else if (c == '('){
- l = 0;
- s = L_KEYWORD;
- } else if (c == '"')
- s = L_STRING;
- else if (c == '+'){
- l = 0; /* strip '+' */
- s = L_INT;
- } else if (c == EOF)
- return ('\0');
- else {
- yytext[1] = '\0';
- Stack(yytext,c);
- return (c);
- }
- break;
- /*
- * Suck up the integer digits.
- */
- case L_INT:
- if (isdigit(c))
- break;
- Ungetc(c);
- yytext[--l] = '\0';
- yylval.s = strcpy((char *)Malloc(l + 1),yytext);
- Stack(yytext,EDIF_TOK_INT);
- return (EDIF_TOK_INT);
- /*
- * Grab an identifier, see if the current context enables
- * it with a specific token value.
- */
- case L_IDENT:
- if (isalpha(c) || isdigit(c) || c == '_')
- break;
- Ungetc(c);
- yytext[--l] = '\0';
- if (CSP->Context->Token && (c = MatchToken(yytext))){
- Stack(yytext,c);
- return (c);
- }
- yylval.s = strcpy((char *)Malloc(l + 1),yytext);
- Stack(yytext, EDIF_TOK_IDENT);
- return (EDIF_TOK_IDENT);
- /*
- * Scan until you find the start of an identifier, discard
- * any whitespace found. On no identifier, return a '('.
- */
- case L_KEYWORD:
- if (isalpha(c) || c == '&'){
- s = L_KEYWORD2;
- break;
- } else if (isspace(c)){
- l = 0;
- break;
- }
- Ungetc(c);
- Stack("(",'(');
- return ('(');
- /*
- * Suck up the keyword identifier, if it matches the set of
- * allowable contexts then return its token value and push
- * the context, otherwise just return the identifier string.
- */
- case L_KEYWORD2:
- if (isalpha(c) || isdigit(c) || c == '_')
- break;
- Ungetc(c);
- yytext[--l] = '\0';
- if ( (c = MatchContext(yytext)) ){
- Stack(yytext,c);
- return (c);
- }
- yylval.s = strcpy((char *)Malloc(l + 1),yytext);
- Stack(yytext, EDIF_TOK_KEYWORD);
- return (EDIF_TOK_KEYWORD);
- /*
- * Suck up string characters but once resolved they should
- * be deposited in the string bucket because they can be
- * arbitrarily long.
- */
- case L_STRING:
- if (c == '\n')
- LineNumber += 1;
- else if (c == '\r')
- ;
- else if (c == '"' || c == EOF){
- yylval.s = FormString();
- Stack(yylval.s, EDIF_TOK_STR);
- return (EDIF_TOK_STR);
- } else if (c == '%')
- s = L_ASCIICHAR;
- else
- PushString(c);
- l = 0;
- break;
- /*
- * Skip white space and look for integers to be pushed
- * as characters.
- */
- case L_ASCIICHAR:
- if (isdigit(c)){
- s = L_ASCIICHAR2;
- break;
- } else if (c == '%' || c == EOF)
- s = L_STRING;
- else if (c == '\n')
- LineNumber += 1;
- l = 0;
- break;
- /*
- * Convert the accumulated integer into a char and push.
- */
- case L_ASCIICHAR2:
- if (isdigit(c))
- break;
- Ungetc(c);
- yytext[--l] = '\0';
- PushString(atoi(yytext));
- s = L_ASCIICHAR;
- l = 0;
- break;
- }
- }
-}
Index: trunk/src/Makefile.in
===================================================================
--- trunk/src/Makefile.in (revision 1053)
+++ trunk/src/Makefile.in (revision 1054)
@@ -60,6 +60,7 @@
select.o
set.o
strflags.o
+ stub_edif.o
stub_vendor.o
thermal.o
undo.o
@@ -75,7 +76,6 @@
pcb-mincut/solve.o
res_parse.o
res_lex.o
- edif.o
portability.o
ds.o
libpcb_fp.o
@@ -87,7 +87,7 @@
@]
# main: language generator files
-put /local/pcb/YACC {edif res_parse parse_y}
+put /local/pcb/YACC {res_parse parse_y}
put /local/pcb/LEX {res_lex parse_l}
# main: action registrations
@@ -127,8 +127,8 @@
include {../src_plugins/autoplace/Makefile.mod}
include {../src_plugins/vendordrill/Makefile.mod}
include {../src_plugins/puller/Makefile.mod}
+include {../src_plugins/edif/Makefile.mod}
-
if /target/libs/script/gpmi/presents then
include {Makefile.in.mod/gpmi_plugin}
end
Index: trunk/src/file.c
===================================================================
--- trunk/src/file.c (revision 1053)
+++ trunk/src/file.c (revision 1054)
@@ -80,7 +80,6 @@
#include "create.h"
#include "crosshair.h"
#include "data.h"
-#include "edif_parse.h"
#include "error.h"
#include "file.h"
#include "hid.h"
@@ -98,6 +97,7 @@
#include "libpcb_fp.h"
#include "paths.h"
#include "rats_patch.h"
+#include "stub_edif.h"
RCSID("$Id$");
@@ -1338,8 +1338,6 @@
return (0);
}
-static int ReadEdifNetlist(char *filename);
-
int ImportNetlist(char *filename)
{
FILE *fp;
@@ -1365,13 +1363,5 @@
if (!p)
return ReadNetlist(filename);
else
- return ReadEdifNetlist(filename);
+ return stub_ReadEdifNetlist(filename);
}
-
-static int ReadEdifNetlist(char *filename)
-{
- Message(_("Importing edif netlist %s\n"), filename);
- ParseEDIF(filename, NULL);
-
- return 0;
-}
Index: trunk/src/stub_edif.c
===================================================================
--- trunk/src/stub_edif.c (nonexistent)
+++ trunk/src/stub_edif.c (revision 1054)
@@ -0,0 +1,35 @@
+/*
+ * COPYRIGHT
+ *
+ * PCB, interactive printed circuit board design
+ * Copyright (C) 2016 Tibor 'Igor2' Palinkas
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+#include "config.h"
+#include "global.h"
+#include "error.h"
+#include "stub_edif.h"
+
+static int ReadEdifNetlist_dummy(char *filename)
+{
+ Message(_("Can not importing edif netlist %s: the edif plugin/buildin is not present.\n"), filename);
+ return 0;
+}
+
+int (*stub_ReadEdifNetlist)(char *filename) = ReadEdifNetlist_dummy;
+
Index: trunk/src/stub_edif.h
===================================================================
--- trunk/src/stub_edif.h (nonexistent)
+++ trunk/src/stub_edif.h (revision 1054)
@@ -0,0 +1,23 @@
+/*
+ * COPYRIGHT
+ *
+ * PCB, interactive printed circuit board design
+ * Copyright (C) 2016 Tibor 'Igor2' Palinkas
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+extern int (*stub_ReadEdifNetlist)(char *filename);
Index: trunk/src_plugins/edif/Makefile
===================================================================
--- trunk/src_plugins/edif/Makefile (nonexistent)
+++ trunk/src_plugins/edif/Makefile (revision 1054)
@@ -0,0 +1,4 @@
+all:
+ cd ../../src && make mod_edif
+
+
Index: trunk/src_plugins/edif/Makefile.mod
===================================================================
--- trunk/src_plugins/edif/Makefile.mod (nonexistent)
+++ trunk/src_plugins/edif/Makefile.mod (revision 1054)
@@ -0,0 +1,28 @@
+append /local/pcb/edif/enable {}
+append /local/pcb/edif/buildin {}
+
+append /local/pcb/edif/OBJS [@ ${PLUGDIR}/edif/edif.o @]
+append /local/pcb/YACC {edif}
+
+if /local/pcb/edif/enable then
+ if /local/pcb/edif/buildin then
+ append /local/pcb/buildin_init { extern void hid_edif_init(); hid_edif_init(); plugin_register("edif", "", NULL, 0); }
+ append /local/pcb/OBJS /local/pcb/edif/OBJS
+ append /local/pcb/RULES [@
+
+mod_edif: all
+
+@]
+
+ else
+ append /local/pcb/all [@ ${PLUGDIR}/edif/edif.so @]
+ append /local/pcb/RULES [@
+
+${PLUGDIR}/edif/edif.so: @/local/pcb/edif/OBJS@
+ $(CC) $(LDFLAGS) -shared @cc/rdynamic@ -o ${PLUGDIR}/edif/edif.so @/local/pcb/edif/OBJS@
+
+mod_edif: ${PLUGDIR}/edif/edif.so
+
+@]
+ end
+end
Index: trunk/src_plugins/edif/edif.c
===================================================================
--- trunk/src_plugins/edif/edif.c (nonexistent)
+++ trunk/src_plugins/edif/edif.c (revision 1054)
@@ -0,0 +1,6533 @@
+/* A Bison parser, made by GNU Bison 3.0.2. */
+
+/* Bison implementation for Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see . */
+
+/* As a special exception, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+/* C LALR(1) parser skeleton written by Richard Stallman, by
+ simplifying the original so-called "semantic" parser. */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+ infringing on user name space. This should be done even for local
+ variables, as they might otherwise be expanded by user macros.
+ There are some unavoidable exceptions within include files to
+ define necessary library symbols; they are noted "INFRINGES ON
+ USER NAME SPACE" below. */
+
+/* Identify Bison output. */
+#define YYBISON 1
+
+/* Bison version. */
+#define YYBISON_VERSION "3.0.2"
+
+/* Skeleton name. */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers. */
+#define YYPURE 0
+
+/* Push parsers. */
+#define YYPUSH 0
+
+/* Pull parsers. */
+#define YYPULL 1
+
+
+/* Substitute the variable and function names. */
+#define yyparse edifparse
+#define yylex ediflex
+#define yyerror ediferror
+#define yydebug edifdebug
+#define yynerrs edifnerrs
+
+#define yylval ediflval
+#define yychar edifchar
+
+/* Copy the first part of user declarations. */
+#line 1 "../src_plugins/edif/edif.y" /* yacc.c:339 */
+
+/*
+ * PCB Edif parser based heavily on:
+ *
+ * Header: edif.y,v 1.18 87/12/07 19:59:49 roger Locked
+ */
+/************************************************************************
+ * *
+ * edif.y *
+ * *
+ * EDIF 2.0.0 parser, Level 0 *
+ * *
+ * You are free to copy, distribute, use it, abuse it, make it *
+ * write bad tracks all over the disk ... or anything else. *
+ * *
+ * Your friendly neighborhood Rogue Monster - roger@mips.com *
+ * *
+ ************************************************************************/
+#include
+
+/* for malloc, free, atoi */
+#include
+
+/* for strcpy */
+#include
+
+#include
+
+#include "global.h"
+#include "data.h"
+/* from mymem.h, not include because of the malloc junk */
+LibraryMenuTypePtr GetLibraryMenuMemory (LibraryTypePtr);
+LibraryEntryTypePtr GetLibraryEntryMemory (LibraryMenuTypePtr);
+
+/*
+ * Local definitions.
+ */
+#define IDENT_LENGTH 255
+#define Malloc(s) malloc(s)
+#define Free(p) free(p)
+#define Getc(s) getc(s)
+#define Ungetc(c) ungetc(c,Input)
+
+ typedef struct _str_pair
+ {
+ char* str1;
+ char* str2;
+ struct _str_pair* next;
+ } str_pair;
+
+ typedef struct _pair_list
+ {
+ char* name;
+ str_pair* list;
+ } pair_list;
+
+ str_pair* new_str_pair(char* s1, char* s2)
+ {
+ str_pair* ps = (str_pair *)malloc(sizeof(str_pair));
+ ps->str1 = s1;
+ ps->str2 = s2;
+ ps->next = NULL;
+ return ps;
+ }
+
+ pair_list* new_pair_list(str_pair* ps)
+ {
+ pair_list* pl = (pair_list *)malloc(sizeof(pair_list));
+ pl->list = ps;
+ pl->name = NULL;
+ return pl;
+ }
+
+ void str_pair_free(str_pair* ps)
+ {
+ str_pair* node;
+ while ( ps )
+ {
+ free(ps->str1);
+ free(ps->str2);
+ node = ps;
+ ps = ps->next;
+ free(node);
+ }
+ }
+
+ void pair_list_free(pair_list* pl)
+ {
+ str_pair_free(pl->list);
+ free(pl->name);
+ free(pl);
+ }
+
+ void define_pcb_net(str_pair* name, pair_list* nodes)
+ {
+ int tl;
+ str_pair* done_node;
+ str_pair* node;
+ char* buf;
+ char* p;
+ LibraryEntryTypePtr entry;
+ LibraryMenuTypePtr menu = GetLibraryMenuMemory (&PCB->NetlistLib);
+
+ if ( !name->str1 )
+ {
+ /* no net name given, stop now */
+ /* if renamed str2 also exists and must be freed */
+ if ( name->str2 ) free(name->str2);
+ free(name);
+ pair_list_free(nodes);
+ return;
+ }
+ menu->Name = strdup (name->str1);
+ free(name->str1);
+ /* if renamed str2 also exists and must be freed */
+ if ( name->str2 ) free(name->str2);
+ free(name);
+ buf = (char *)malloc(256);
+ if ( !buf )
+ {
+ /* no memory */
+ pair_list_free(nodes);
+ return;
+ }
+
+ node = nodes->list;
+ free(nodes->name);
+ free(nodes);
+ while ( node )
+ {
+ /* check for node with no instance */
+ if ( !node->str1 )
+ {
+ /* toss it and move on */
+ free(node->str2);
+ done_node = node;
+ node = node->next;
+ free(done_node);
+ continue;
+ }
+ tl = strlen(node->str1) + strlen(node->str2);
+ if ( tl + 3 > 256 )
+ {
+ free(buf);
+ buf = (char *)malloc(tl+3);
+ if ( !buf )
+ {
+ /* no memory */
+ str_pair_free(node);
+ return;
+ }
+ }
+ strcpy(buf,node->str1);
+ /* make all upper case, because of PCB funky behaviour */
+ p=buf;
+ while ( *p )
+ {
+ *p = toupper( (int) *p);
+ p++;
+ }
+ /* add dash separating designator from node */
+ *(buf+strlen(node->str1)) = '-';
+ /* check for the edif number prefix */
+ if ( node->str2[0] == '&' )
+ {
+ /* skip number prefix */
+ strcpy(buf+strlen(node->str1)+1,node->str2 +1);
+ }
+ else
+ {
+ strcpy(buf+strlen(node->str1)+1,node->str2);
+ }
+ /* free the strings */
+ free(node->str1);
+ free(node->str2);
+ entry = GetLibraryEntryMemory (menu);
+ entry->ListEntry = strdup(buf);
+ done_node = node;
+ node = node->next;
+ free(done_node);
+ }
+ }
+
+
+/* forward function declarations */
+ static int yylex(void);
+ static void yyerror(const char *);
+ static void PopC(void);
+
+#line 264 "y.tab.c" /* yacc.c:339 */
+
+# ifndef YY_NULLPTR
+# if defined __cplusplus && 201103L <= __cplusplus
+# define YY_NULLPTR nullptr
+# else
+# define YY_NULLPTR 0
+# endif
+# endif
+
+/* Enabling verbose error messages. */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+
+/* Debug traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int edifdebug;
+#endif
+
+/* Token type. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ enum yytokentype
+ {
+ EDIF_TOK_IDENT = 258,
+ EDIF_TOK_INT = 259,
+ EDIF_TOK_KEYWORD = 260,
+ EDIF_TOK_STR = 261,
+ EDIF_TOK_ANGLE = 262,
+ EDIF_TOK_BEHAVIOR = 263,
+ EDIF_TOK_CALCULATED = 264,
+ EDIF_TOK_CAPACITANCE = 265,
+ EDIF_TOK_CENTERCENTER = 266,
+ EDIF_TOK_CENTERLEFT = 267,
+ EDIF_TOK_CENTERRIGHT = 268,
+ EDIF_TOK_CHARGE = 269,
+ EDIF_TOK_CONDUCTANCE = 270,
+ EDIF_TOK_CURRENT = 271,
+ EDIF_TOK_DISTANCE = 272,
+ EDIF_TOK_DOCUMENT = 273,
+ EDIF_TOK_ENERGY = 274,
+ EDIF_TOK_EXTEND = 275,
+ EDIF_TOK_FLUX = 276,
+ EDIF_TOK_FREQUENCY = 277,
+ EDIF_TOK_GENERIC = 278,
+ EDIF_TOK_GRAPHIC = 279,
+ EDIF_TOK_INDUCTANCE = 280,
+ EDIF_TOK_INOUT = 281,
+ EDIF_TOK_INPUT = 282,
+ EDIF_TOK_LOGICMODEL = 283,
+ EDIF_TOK_LOWERCENTER = 284,
+ EDIF_TOK_LOWERLEFT = 285,
+ EDIF_TOK_LOWERRIGHT = 286,
+ EDIF_TOK_MASKLAYOUT = 287,
+ EDIF_TOK_MASS = 288,
+ EDIF_TOK_MEASURED = 289,
+ EDIF_TOK_MX = 290,
+ EDIF_TOK_MXR90 = 291,
+ EDIF_TOK_MY = 292,
+ EDIF_TOK_MYR90 = 293,
+ EDIF_TOK_NETLIST = 294,
+ EDIF_TOK_OUTPUT = 295,
+ EDIF_TOK_PCBLAYOUT = 296,
+ EDIF_TOK_POWER = 297,
+ EDIF_TOK_R0 = 298,
+ EDIF_TOK_R180 = 299,
+ EDIF_TOK_R270 = 300,
+ EDIF_TOK_R90 = 301,
+ EDIF_TOK_REQUIRED = 302,
+ EDIF_TOK_RESISTANCE = 303,
+ EDIF_TOK_RIPPER = 304,
+ EDIF_TOK_ROUND = 305,
+ EDIF_TOK_SCHEMATIC = 306,
+ EDIF_TOK_STRANGER = 307,
+ EDIF_TOK_SYMBOLIC = 308,
+ EDIF_TOK_TEMPERATURE = 309,
+ EDIF_TOK_TIE = 310,
+ EDIF_TOK_TIME = 311,
+ EDIF_TOK_TRUNCATE = 312,
+ EDIF_TOK_UPPERCENTER = 313,
+ EDIF_TOK_UPPERLEFT = 314,
+ EDIF_TOK_UPPERRIGHT = 315,
+ EDIF_TOK_VOLTAGE = 316,
+ EDIF_TOK_ACLOAD = 317,
+ EDIF_TOK_AFTER = 318,
+ EDIF_TOK_ANNOTATE = 319,
+ EDIF_TOK_APPLY = 320,
+ EDIF_TOK_ARC = 321,
+ EDIF_TOK_ARRAY = 322,
+ EDIF_TOK_ARRAYMACRO = 323,
+ EDIF_TOK_ARRAYRELATEDINFO = 324,
+ EDIF_TOK_ARRAYSITE = 325,
+ EDIF_TOK_ATLEAST = 326,
+ EDIF_TOK_ATMOST = 327,
+ EDIF_TOK_AUTHOR = 328,
+ EDIF_TOK_BASEARRAY = 329,
+ EDIF_TOK_BECOMES = 330,
+ EDIF_TOK_BETWEEN = 331,
+ EDIF_TOK_BOOLEAN = 332,
+ EDIF_TOK_BOOLEANDISPLAY = 333,
+ EDIF_TOK_BOOLEANMAP = 334,
+ EDIF_TOK_BORDERPATTERN = 335,
+ EDIF_TOK_BORDERWIDTH = 336,
+ EDIF_TOK_BOUNDINGBOX = 337,
+ EDIF_TOK_CELL = 338,
+ EDIF_TOK_CELLREF = 339,
+ EDIF_TOK_CELLTYPE = 340,
+ EDIF_TOK_CHANGE = 341,
+ EDIF_TOK_CIRCLE = 342,
+ EDIF_TOK_COLOR = 343,
+ EDIF_TOK_COMMENT = 344,
+ EDIF_TOK_COMMENTGRAPHICS = 345,
+ EDIF_TOK_COMPOUND = 346,
+ EDIF_TOK_CONNECTLOCATION = 347,
+ EDIF_TOK_CONTENTS = 348,
+ EDIF_TOK_CORNERTYPE = 349,
+ EDIF_TOK_CRITICALITY = 350,
+ EDIF_TOK_CURRENTMAP = 351,
+ EDIF_TOK_CURVE = 352,
+ EDIF_TOK_CYCLE = 353,
+ EDIF_TOK_DATAORIGIN = 354,
+ EDIF_TOK_DCFANINLOAD = 355,
+ EDIF_TOK_DCFANOUTLOAD = 356,
+ EDIF_TOK_DCMAXFANIN = 357,
+ EDIF_TOK_DCMAXFANOUT = 358,
+ EDIF_TOK_DELAY = 359,
+ EDIF_TOK_DELTA = 360,
+ EDIF_TOK_DERIVATION = 361,
+ EDIF_TOK_DESIGN = 362,
+ EDIF_TOK_DESIGNATOR = 363,
+ EDIF_TOK_DIFFERENCE = 364,
+ EDIF_TOK_DIRECTION = 365,
+ EDIF_TOK_DISPLAY = 366,
+ EDIF_TOK_DOMINATES = 367,
+ EDIF_TOK_DOT = 368,
+ EDIF_TOK_DURATION = 369,
+ EDIF_TOK_E = 370,
+ EDIF_TOK_EDIF = 371,
+ EDIF_TOK_EDIFLEVEL = 372,
+ EDIF_TOK_EDIFVERSION = 373,
+ EDIF_TOK_ENCLOSUREDISTANCE = 374,
+ EDIF_TOK_ENDTYPE = 375,
+ EDIF_TOK_ENTRY = 376,
+ EDIF_TOK_EVENT = 377,
+ EDIF_TOK_EXACTLY = 378,
+ EDIF_TOK_EXTERNAL = 379,
+ EDIF_TOK_FABRICATE = 380,
+ EDIF_TOK_FALSE = 381,
+ EDIF_TOK_FIGURE = 382,
+ EDIF_TOK_FIGUREAREA = 383,
+ EDIF_TOK_FIGUREGROUP = 384,
+ EDIF_TOK_FIGUREGROUPOBJECT = 385,
+ EDIF_TOK_FIGUREGROUPOVERRIDE = 386,
+ EDIF_TOK_FIGUREGROUPREF = 387,
+ EDIF_TOK_FIGUREPERIMETER = 388,
+ EDIF_TOK_FIGUREWIDTH = 389,
+ EDIF_TOK_FILLPATTERN = 390,
+ EDIF_TOK_FOLLOW = 391,
+ EDIF_TOK_FORBIDDENEVENT = 392,
+ EDIF_TOK_GLOBALPORTREF = 393,
+ EDIF_TOK_GREATERTHAN = 394,
+ EDIF_TOK_GRIDMAP = 395,
+ EDIF_TOK_IGNORE = 396,
+ EDIF_TOK_INCLUDEFIGUREGROUP = 397,
+ EDIF_TOK_INITIAL = 398,
+ EDIF_TOK_INSTANCE = 399,
+ EDIF_TOK_INSTANCEBACKANNOTATE = 400,
+ EDIF_TOK_INSTANCEGROUP = 401,
+ EDIF_TOK_INSTANCEMAP = 402,
+ EDIF_TOK_INSTANCEREF = 403,
+ EDIF_TOK_INTEGER = 404,
+ EDIF_TOK_INTEGERDISPLAY = 405,
+ EDIF_TOK_INTERFACE = 406,
+ EDIF_TOK_INTERFIGUREGROUPSPACING = 407,
+ EDIF_TOK_INTERSECTION = 408,
+ EDIF_TOK_INTRAFIGUREGROUPSPACING = 409,
+ EDIF_TOK_INVERSE = 410,
+ EDIF_TOK_ISOLATED = 411,
+ EDIF_TOK_JOINED = 412,
+ EDIF_TOK_JUSTIFY = 413,
+ EDIF_TOK_KEYWORDDISPLAY = 414,
+ EDIF_TOK_KEYWORDLEVEL = 415,
+ EDIF_TOK_KEYWORDMAP = 416,
+ EDIF_TOK_LESSTHAN = 417,
+ EDIF_TOK_LIBRARY = 418,
+ EDIF_TOK_LIBRARYREF = 419,
+ EDIF_TOK_LISTOFNETS = 420,
+ EDIF_TOK_LISTOFPORTS = 421,
+ EDIF_TOK_LOADDELAY = 422,
+ EDIF_TOK_LOGICASSIGN = 423,
+ EDIF_TOK_LOGICINPUT = 424,
+ EDIF_TOK_LOGICLIST = 425,
+ EDIF_TOK_LOGICMAPINPUT = 426,
+ EDIF_TOK_LOGICMAPOUTPUT = 427,
+ EDIF_TOK_LOGICONEOF = 428,
+ EDIF_TOK_LOGICOUTPUT = 429,
+ EDIF_TOK_LOGICPORT = 430,
+ EDIF_TOK_LOGICREF = 431,
+ EDIF_TOK_LOGICVALUE = 432,
+ EDIF_TOK_LOGICWAVEFORM = 433,
+ EDIF_TOK_MAINTAIN = 434,
+ EDIF_TOK_MATCH = 435,
+ EDIF_TOK_MEMBER = 436,
+ EDIF_TOK_MINOMAX = 437,
+ EDIF_TOK_MINOMAXDISPLAY = 438,
+ EDIF_TOK_MNM = 439,
+ EDIF_TOK_MULTIPLEVALUESET = 440,
+ EDIF_TOK_MUSTJOIN = 441,
+ EDIF_TOK_NAME = 442,
+ EDIF_TOK_NET = 443,
+ EDIF_TOK_NETBACKANNOTATE = 444,
+ EDIF_TOK_NETBUNDLE = 445,
+ EDIF_TOK_NETDELAY = 446,
+ EDIF_TOK_NETGROUP = 447,
+ EDIF_TOK_NETMAP = 448,
+ EDIF_TOK_NETREF = 449,
+ EDIF_TOK_NOCHANGE = 450,
+ EDIF_TOK_NONPERMUTABLE = 451,
+ EDIF_TOK_NOTALLOWED = 452,
+ EDIF_TOK_NOTCHSPACING = 453,
+ EDIF_TOK_NUMBER = 454,
+ EDIF_TOK_NUMBERDEFINITION = 455,
+ EDIF_TOK_NUMBERDISPLAY = 456,
+ EDIF_TOK_OFFPAGECONNECTOR = 457,
+ EDIF_TOK_OFFSETEVENT = 458,
+ EDIF_TOK_OPENSHAPE = 459,
+ EDIF_TOK_ORIENTATION = 460,
+ EDIF_TOK_ORIGIN = 461,
+ EDIF_TOK_OVERHANGDISTANCE = 462,
+ EDIF_TOK_OVERLAPDISTANCE = 463,
+ EDIF_TOK_OVERSIZE = 464,
+ EDIF_TOK_OWNER = 465,
+ EDIF_TOK_PAGE = 466,
+ EDIF_TOK_PAGESIZE = 467,
+ EDIF_TOK_PARAMETER = 468,
+ EDIF_TOK_PARAMETERASSIGN = 469,
+ EDIF_TOK_PARAMETERDISPLAY = 470,
+ EDIF_TOK_PATH = 471,
+ EDIF_TOK_PATHDELAY = 472,
+ EDIF_TOK_PATHWIDTH = 473,
+ EDIF_TOK_PERMUTABLE = 474,
+ EDIF_TOK_PHYSICALDESIGNRULE = 475,
+ EDIF_TOK_PLUG = 476,
+ EDIF_TOK_POINT = 477,
+ EDIF_TOK_POINTDISPLAY = 478,
+ EDIF_TOK_POINTLIST = 479,
+ EDIF_TOK_POLYGON = 480,
+ EDIF_TOK_PORT = 481,
+ EDIF_TOK_PORTBACKANNOTATE = 482,
+ EDIF_TOK_PORTBUNDLE = 483,
+ EDIF_TOK_PORTDELAY = 484,
+ EDIF_TOK_PORTGROUP = 485,
+ EDIF_TOK_PORTIMPLEMENTATION = 486,
+ EDIF_TOK_PORTINSTANCE = 487,
+ EDIF_TOK_PORTLIST = 488,
+ EDIF_TOK_PORTLISTALIAS = 489,
+ EDIF_TOK_PORTMAP = 490,
+ EDIF_TOK_PORTREF = 491,
+ EDIF_TOK_PROGRAM = 492,
+ EDIF_TOK_PROPERTY = 493,
+ EDIF_TOK_PROPERTYDISPLAY = 494,
+ EDIF_TOK_PROTECTIONFRAME = 495,
+ EDIF_TOK_PT = 496,
+ EDIF_TOK_RANGEVECTOR = 497,
+ EDIF_TOK_RECTANGLE = 498,
+ EDIF_TOK_RECTANGLESIZE = 499,
+ EDIF_TOK_RENAME = 500,
+ EDIF_TOK_RESOLVES = 501,
+ EDIF_TOK_SCALE = 502,
+ EDIF_TOK_SCALEX = 503,
+ EDIF_TOK_SCALEY = 504,
+ EDIF_TOK_SECTION = 505,
+ EDIF_TOK_SHAPE = 506,
+ EDIF_TOK_SIMULATE = 507,
+ EDIF_TOK_SIMULATIONINFO = 508,
+ EDIF_TOK_SINGLEVALUESET = 509,
+ EDIF_TOK_SITE = 510,
+ EDIF_TOK_SOCKET = 511,
+ EDIF_TOK_SOCKETSET = 512,
+ EDIF_TOK_STATUS = 513,
+ EDIF_TOK_STEADY = 514,
+ EDIF_TOK_STRING = 515,
+ EDIF_TOK_STRINGDISPLAY = 516,
+ EDIF_TOK_STRONG = 517,
+ EDIF_TOK_SYMBOL = 518,
+ EDIF_TOK_SYMMETRY = 519,
+ EDIF_TOK_TABLE = 520,
+ EDIF_TOK_TABLEDEFAULT = 521,
+ EDIF_TOK_TECHNOLOGY = 522,
+ EDIF_TOK_TEXTHEIGHT = 523,
+ EDIF_TOK_TIMEINTERVAL = 524,
+ EDIF_TOK_TIMESTAMP = 525,
+ EDIF_TOK_TIMING = 526,
+ EDIF_TOK_TRANSFORM = 527,
+ EDIF_TOK_TRANSITION = 528,
+ EDIF_TOK_TRIGGER = 529,
+ EDIF_TOK_TRUE = 530,
+ EDIF_TOK_UNCONSTRAINED = 531,
+ EDIF_TOK_UNDEFINED = 532,
+ EDIF_TOK_UNION = 533,
+ EDIF_TOK_UNIT = 534,
+ EDIF_TOK_UNUSED = 535,
+ EDIF_TOK_USERDATA = 536,
+ EDIF_TOK_VERSION = 537,
+ EDIF_TOK_VIEW = 538,
+ EDIF_TOK_VIEWLIST = 539,
+ EDIF_TOK_VIEWMAP = 540,
+ EDIF_TOK_VIEWREF = 541,
+ EDIF_TOK_VIEWTYPE = 542,
+ EDIF_TOK_VISIBLE = 543,
+ EDIF_TOK_VOLTAGEMAP = 544,
+ EDIF_TOK_WAVEVALUE = 545,
+ EDIF_TOK_WEAK = 546,
+ EDIF_TOK_WEAKJOINED = 547,
+ EDIF_TOK_WHEN = 548,
+ EDIF_TOK_WRITTEN = 549
+ };
+#endif
+/* Tokens. */
+#define EDIF_TOK_IDENT 258
+#define EDIF_TOK_INT 259
+#define EDIF_TOK_KEYWORD 260
+#define EDIF_TOK_STR 261
+#define EDIF_TOK_ANGLE 262
+#define EDIF_TOK_BEHAVIOR 263
+#define EDIF_TOK_CALCULATED 264
+#define EDIF_TOK_CAPACITANCE 265
+#define EDIF_TOK_CENTERCENTER 266
+#define EDIF_TOK_CENTERLEFT 267
+#define EDIF_TOK_CENTERRIGHT 268
+#define EDIF_TOK_CHARGE 269
+#define EDIF_TOK_CONDUCTANCE 270
+#define EDIF_TOK_CURRENT 271
+#define EDIF_TOK_DISTANCE 272
+#define EDIF_TOK_DOCUMENT 273
+#define EDIF_TOK_ENERGY 274
+#define EDIF_TOK_EXTEND 275
+#define EDIF_TOK_FLUX 276
+#define EDIF_TOK_FREQUENCY 277
+#define EDIF_TOK_GENERIC 278
+#define EDIF_TOK_GRAPHIC 279
+#define EDIF_TOK_INDUCTANCE 280
+#define EDIF_TOK_INOUT 281
+#define EDIF_TOK_INPUT 282
+#define EDIF_TOK_LOGICMODEL 283
+#define EDIF_TOK_LOWERCENTER 284
+#define EDIF_TOK_LOWERLEFT 285
+#define EDIF_TOK_LOWERRIGHT 286
+#define EDIF_TOK_MASKLAYOUT 287
+#define EDIF_TOK_MASS 288
+#define EDIF_TOK_MEASURED 289
+#define EDIF_TOK_MX 290
+#define EDIF_TOK_MXR90 291
+#define EDIF_TOK_MY 292
+#define EDIF_TOK_MYR90 293
+#define EDIF_TOK_NETLIST 294
+#define EDIF_TOK_OUTPUT 295
+#define EDIF_TOK_PCBLAYOUT 296
+#define EDIF_TOK_POWER 297
+#define EDIF_TOK_R0 298
+#define EDIF_TOK_R180 299
+#define EDIF_TOK_R270 300
+#define EDIF_TOK_R90 301
+#define EDIF_TOK_REQUIRED 302
+#define EDIF_TOK_RESISTANCE 303
+#define EDIF_TOK_RIPPER 304
+#define EDIF_TOK_ROUND 305
+#define EDIF_TOK_SCHEMATIC 306
+#define EDIF_TOK_STRANGER 307
+#define EDIF_TOK_SYMBOLIC 308
+#define EDIF_TOK_TEMPERATURE 309
+#define EDIF_TOK_TIE 310
+#define EDIF_TOK_TIME 311
+#define EDIF_TOK_TRUNCATE 312
+#define EDIF_TOK_UPPERCENTER 313
+#define EDIF_TOK_UPPERLEFT 314
+#define EDIF_TOK_UPPERRIGHT 315
+#define EDIF_TOK_VOLTAGE 316
+#define EDIF_TOK_ACLOAD 317
+#define EDIF_TOK_AFTER 318
+#define EDIF_TOK_ANNOTATE 319
+#define EDIF_TOK_APPLY 320
+#define EDIF_TOK_ARC 321
+#define EDIF_TOK_ARRAY 322
+#define EDIF_TOK_ARRAYMACRO 323
+#define EDIF_TOK_ARRAYRELATEDINFO 324
+#define EDIF_TOK_ARRAYSITE 325
+#define EDIF_TOK_ATLEAST 326
+#define EDIF_TOK_ATMOST 327
+#define EDIF_TOK_AUTHOR 328
+#define EDIF_TOK_BASEARRAY 329
+#define EDIF_TOK_BECOMES 330
+#define EDIF_TOK_BETWEEN 331
+#define EDIF_TOK_BOOLEAN 332
+#define EDIF_TOK_BOOLEANDISPLAY 333
+#define EDIF_TOK_BOOLEANMAP 334
+#define EDIF_TOK_BORDERPATTERN 335
+#define EDIF_TOK_BORDERWIDTH 336
+#define EDIF_TOK_BOUNDINGBOX 337
+#define EDIF_TOK_CELL 338
+#define EDIF_TOK_CELLREF 339
+#define EDIF_TOK_CELLTYPE 340
+#define EDIF_TOK_CHANGE 341
+#define EDIF_TOK_CIRCLE 342
+#define EDIF_TOK_COLOR 343
+#define EDIF_TOK_COMMENT 344
+#define EDIF_TOK_COMMENTGRAPHICS 345
+#define EDIF_TOK_COMPOUND 346
+#define EDIF_TOK_CONNECTLOCATION 347
+#define EDIF_TOK_CONTENTS 348
+#define EDIF_TOK_CORNERTYPE 349
+#define EDIF_TOK_CRITICALITY 350
+#define EDIF_TOK_CURRENTMAP 351
+#define EDIF_TOK_CURVE 352
+#define EDIF_TOK_CYCLE 353
+#define EDIF_TOK_DATAORIGIN 354
+#define EDIF_TOK_DCFANINLOAD 355
+#define EDIF_TOK_DCFANOUTLOAD 356
+#define EDIF_TOK_DCMAXFANIN 357
+#define EDIF_TOK_DCMAXFANOUT 358
+#define EDIF_TOK_DELAY 359
+#define EDIF_TOK_DELTA 360
+#define EDIF_TOK_DERIVATION 361
+#define EDIF_TOK_DESIGN 362
+#define EDIF_TOK_DESIGNATOR 363
+#define EDIF_TOK_DIFFERENCE 364
+#define EDIF_TOK_DIRECTION 365
+#define EDIF_TOK_DISPLAY 366
+#define EDIF_TOK_DOMINATES 367
+#define EDIF_TOK_DOT 368
+#define EDIF_TOK_DURATION 369
+#define EDIF_TOK_E 370
+#define EDIF_TOK_EDIF 371
+#define EDIF_TOK_EDIFLEVEL 372
+#define EDIF_TOK_EDIFVERSION 373
+#define EDIF_TOK_ENCLOSUREDISTANCE 374
+#define EDIF_TOK_ENDTYPE 375
+#define EDIF_TOK_ENTRY 376
+#define EDIF_TOK_EVENT 377
+#define EDIF_TOK_EXACTLY 378
+#define EDIF_TOK_EXTERNAL 379
+#define EDIF_TOK_FABRICATE 380
+#define EDIF_TOK_FALSE 381
+#define EDIF_TOK_FIGURE 382
+#define EDIF_TOK_FIGUREAREA 383
+#define EDIF_TOK_FIGUREGROUP 384
+#define EDIF_TOK_FIGUREGROUPOBJECT 385
+#define EDIF_TOK_FIGUREGROUPOVERRIDE 386
+#define EDIF_TOK_FIGUREGROUPREF 387
+#define EDIF_TOK_FIGUREPERIMETER 388
+#define EDIF_TOK_FIGUREWIDTH 389
+#define EDIF_TOK_FILLPATTERN 390
+#define EDIF_TOK_FOLLOW 391
+#define EDIF_TOK_FORBIDDENEVENT 392
+#define EDIF_TOK_GLOBALPORTREF 393
+#define EDIF_TOK_GREATERTHAN 394
+#define EDIF_TOK_GRIDMAP 395
+#define EDIF_TOK_IGNORE 396
+#define EDIF_TOK_INCLUDEFIGUREGROUP 397
+#define EDIF_TOK_INITIAL 398
+#define EDIF_TOK_INSTANCE 399
+#define EDIF_TOK_INSTANCEBACKANNOTATE 400
+#define EDIF_TOK_INSTANCEGROUP 401
+#define EDIF_TOK_INSTANCEMAP 402
+#define EDIF_TOK_INSTANCEREF 403
+#define EDIF_TOK_INTEGER 404
+#define EDIF_TOK_INTEGERDISPLAY 405
+#define EDIF_TOK_INTERFACE 406
+#define EDIF_TOK_INTERFIGUREGROUPSPACING 407
+#define EDIF_TOK_INTERSECTION 408
+#define EDIF_TOK_INTRAFIGUREGROUPSPACING 409
+#define EDIF_TOK_INVERSE 410
+#define EDIF_TOK_ISOLATED 411
+#define EDIF_TOK_JOINED 412
+#define EDIF_TOK_JUSTIFY 413
+#define EDIF_TOK_KEYWORDDISPLAY 414
+#define EDIF_TOK_KEYWORDLEVEL 415
+#define EDIF_TOK_KEYWORDMAP 416
+#define EDIF_TOK_LESSTHAN 417
+#define EDIF_TOK_LIBRARY 418
+#define EDIF_TOK_LIBRARYREF 419
+#define EDIF_TOK_LISTOFNETS 420
+#define EDIF_TOK_LISTOFPORTS 421
+#define EDIF_TOK_LOADDELAY 422
+#define EDIF_TOK_LOGICASSIGN 423
+#define EDIF_TOK_LOGICINPUT 424
+#define EDIF_TOK_LOGICLIST 425
+#define EDIF_TOK_LOGICMAPINPUT 426
+#define EDIF_TOK_LOGICMAPOUTPUT 427
+#define EDIF_TOK_LOGICONEOF 428
+#define EDIF_TOK_LOGICOUTPUT 429
+#define EDIF_TOK_LOGICPORT 430
+#define EDIF_TOK_LOGICREF 431
+#define EDIF_TOK_LOGICVALUE 432
+#define EDIF_TOK_LOGICWAVEFORM 433
+#define EDIF_TOK_MAINTAIN 434
+#define EDIF_TOK_MATCH 435
+#define EDIF_TOK_MEMBER 436
+#define EDIF_TOK_MINOMAX 437
+#define EDIF_TOK_MINOMAXDISPLAY 438
+#define EDIF_TOK_MNM 439
+#define EDIF_TOK_MULTIPLEVALUESET 440
+#define EDIF_TOK_MUSTJOIN 441
+#define EDIF_TOK_NAME 442
+#define EDIF_TOK_NET 443
+#define EDIF_TOK_NETBACKANNOTATE 444
+#define EDIF_TOK_NETBUNDLE 445
+#define EDIF_TOK_NETDELAY 446
+#define EDIF_TOK_NETGROUP 447
+#define EDIF_TOK_NETMAP 448
+#define EDIF_TOK_NETREF 449
+#define EDIF_TOK_NOCHANGE 450
+#define EDIF_TOK_NONPERMUTABLE 451
+#define EDIF_TOK_NOTALLOWED 452
+#define EDIF_TOK_NOTCHSPACING 453
+#define EDIF_TOK_NUMBER 454
+#define EDIF_TOK_NUMBERDEFINITION 455
+#define EDIF_TOK_NUMBERDISPLAY 456
+#define EDIF_TOK_OFFPAGECONNECTOR 457
+#define EDIF_TOK_OFFSETEVENT 458
+#define EDIF_TOK_OPENSHAPE 459
+#define EDIF_TOK_ORIENTATION 460
+#define EDIF_TOK_ORIGIN 461
+#define EDIF_TOK_OVERHANGDISTANCE 462
+#define EDIF_TOK_OVERLAPDISTANCE 463
+#define EDIF_TOK_OVERSIZE 464
+#define EDIF_TOK_OWNER 465
+#define EDIF_TOK_PAGE 466
+#define EDIF_TOK_PAGESIZE 467
+#define EDIF_TOK_PARAMETER 468
+#define EDIF_TOK_PARAMETERASSIGN 469
+#define EDIF_TOK_PARAMETERDISPLAY 470
+#define EDIF_TOK_PATH 471
+#define EDIF_TOK_PATHDELAY 472
+#define EDIF_TOK_PATHWIDTH 473
+#define EDIF_TOK_PERMUTABLE 474
+#define EDIF_TOK_PHYSICALDESIGNRULE 475
+#define EDIF_TOK_PLUG 476
+#define EDIF_TOK_POINT 477
+#define EDIF_TOK_POINTDISPLAY 478
+#define EDIF_TOK_POINTLIST 479
+#define EDIF_TOK_POLYGON 480
+#define EDIF_TOK_PORT 481
+#define EDIF_TOK_PORTBACKANNOTATE 482
+#define EDIF_TOK_PORTBUNDLE 483
+#define EDIF_TOK_PORTDELAY 484
+#define EDIF_TOK_PORTGROUP 485
+#define EDIF_TOK_PORTIMPLEMENTATION 486
+#define EDIF_TOK_PORTINSTANCE 487
+#define EDIF_TOK_PORTLIST 488
+#define EDIF_TOK_PORTLISTALIAS 489
+#define EDIF_TOK_PORTMAP 490
+#define EDIF_TOK_PORTREF 491
+#define EDIF_TOK_PROGRAM 492
+#define EDIF_TOK_PROPERTY 493
+#define EDIF_TOK_PROPERTYDISPLAY 494
+#define EDIF_TOK_PROTECTIONFRAME 495
+#define EDIF_TOK_PT 496
+#define EDIF_TOK_RANGEVECTOR 497
+#define EDIF_TOK_RECTANGLE 498
+#define EDIF_TOK_RECTANGLESIZE 499
+#define EDIF_TOK_RENAME 500
+#define EDIF_TOK_RESOLVES 501
+#define EDIF_TOK_SCALE 502
+#define EDIF_TOK_SCALEX 503
+#define EDIF_TOK_SCALEY 504
+#define EDIF_TOK_SECTION 505
+#define EDIF_TOK_SHAPE 506
+#define EDIF_TOK_SIMULATE 507
+#define EDIF_TOK_SIMULATIONINFO 508
+#define EDIF_TOK_SINGLEVALUESET 509
+#define EDIF_TOK_SITE 510
+#define EDIF_TOK_SOCKET 511
+#define EDIF_TOK_SOCKETSET 512
+#define EDIF_TOK_STATUS 513
+#define EDIF_TOK_STEADY 514
+#define EDIF_TOK_STRING 515
+#define EDIF_TOK_STRINGDISPLAY 516
+#define EDIF_TOK_STRONG 517
+#define EDIF_TOK_SYMBOL 518
+#define EDIF_TOK_SYMMETRY 519
+#define EDIF_TOK_TABLE 520
+#define EDIF_TOK_TABLEDEFAULT 521
+#define EDIF_TOK_TECHNOLOGY 522
+#define EDIF_TOK_TEXTHEIGHT 523
+#define EDIF_TOK_TIMEINTERVAL 524
+#define EDIF_TOK_TIMESTAMP 525
+#define EDIF_TOK_TIMING 526
+#define EDIF_TOK_TRANSFORM 527
+#define EDIF_TOK_TRANSITION 528
+#define EDIF_TOK_TRIGGER 529
+#define EDIF_TOK_TRUE 530
+#define EDIF_TOK_UNCONSTRAINED 531
+#define EDIF_TOK_UNDEFINED 532
+#define EDIF_TOK_UNION 533
+#define EDIF_TOK_UNIT 534
+#define EDIF_TOK_UNUSED 535
+#define EDIF_TOK_USERDATA 536
+#define EDIF_TOK_VERSION 537
+#define EDIF_TOK_VIEW 538
+#define EDIF_TOK_VIEWLIST 539
+#define EDIF_TOK_VIEWMAP 540
+#define EDIF_TOK_VIEWREF 541
+#define EDIF_TOK_VIEWTYPE 542
+#define EDIF_TOK_VISIBLE 543
+#define EDIF_TOK_VOLTAGEMAP 544
+#define EDIF_TOK_WAVEVALUE 545
+#define EDIF_TOK_WEAK 546
+#define EDIF_TOK_WEAKJOINED 547
+#define EDIF_TOK_WHEN 548
+#define EDIF_TOK_WRITTEN 549
+
+/* Value type. */
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE YYSTYPE;
+union YYSTYPE
+{
+#line 193 "../src_plugins/edif/edif.y" /* yacc.c:355 */
+
+ char* s;
+ pair_list* pl;
+ str_pair* ps;
+
+#line 895 "y.tab.c" /* yacc.c:355 */
+};
+# define YYSTYPE_IS_TRIVIAL 1
+# define YYSTYPE_IS_DECLARED 1
+#endif
+
+
+extern YYSTYPE ediflval;
+
+int edifparse (void);
+
+
+
+/* Copy the second part of user declarations. */
+
+#line 910 "y.tab.c" /* yacc.c:358 */
+
+#ifdef short
+# undef short
+#endif
+
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
+#else
+typedef unsigned char yytype_uint8;
+#endif
+
+#ifdef YYTYPE_INT8
+typedef YYTYPE_INT8 yytype_int8;
+#else
+typedef signed char yytype_int8;
+#endif
+
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
+#else
+typedef unsigned short int yytype_uint16;
+#endif
+
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+# define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+# define YYSIZE_T size_t
+# elif ! defined YYSIZE_T
+# include /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# else
+# define YYSIZE_T unsigned int
+# endif
+#endif
+
+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+#ifndef YY_
+# if defined YYENABLE_NLS && YYENABLE_NLS
+# if ENABLE_NLS
+# include /* INFRINGES ON USER NAME SPACE */
+# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
+# endif
+# endif
+# ifndef YY_
+# define YY_(Msgid) Msgid
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE
+# if (defined __GNUC__ \
+ && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
+ || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
+# define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+# else
+# define YY_ATTRIBUTE(Spec) /* empty */
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_PURE
+# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
+#endif
+
+#if !defined _Noreturn \
+ && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
+# if defined _MSC_VER && 1200 <= _MSC_VER
+# define _Noreturn __declspec (noreturn)
+# else
+# define _Noreturn YY_ATTRIBUTE ((__noreturn__))
+# endif
+#endif
+
+/* Suppress unused-variable warnings by "using" E. */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(E) ((void) (E))
+#else
+# define YYUSE(E) /* empty */
+#endif
+
+#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized. */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+ _Pragma ("GCC diagnostic pop")
+#else
+# define YY_INITIAL_VALUE(Value) Value
+#endif
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
+
+
+#if ! defined yyoverflow || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols. */
+
+# ifdef YYSTACK_USE_ALLOCA
+# if YYSTACK_USE_ALLOCA
+# ifdef __GNUC__
+# define YYSTACK_ALLOC __builtin_alloca
+# elif defined __BUILTIN_VA_ARG_INCR
+# include /* INFRINGES ON USER NAME SPACE */
+# elif defined _AIX
+# define YYSTACK_ALLOC __alloca
+# elif defined _MSC_VER
+# include /* INFRINGES ON USER NAME SPACE */
+# define alloca _alloca
+# else
+# define YYSTACK_ALLOC alloca
+# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
+# include /* INFRINGES ON USER NAME SPACE */
+ /* Use EXIT_SUCCESS as a witness for stdlib.h. */
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+# endif
+# endif
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's 'empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+# ifndef YYSTACK_ALLOC_MAXIMUM
+ /* The OS might guarantee only one guard page at the bottom of the stack,
+ and a page size can be as small as 4096 bytes. So we cannot safely
+ invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
+ to allow for a few compiler-allocated temporary stack slots. */
+# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+# endif
+# else
+# define YYSTACK_ALLOC YYMALLOC
+# define YYSTACK_FREE YYFREE
+# ifndef YYSTACK_ALLOC_MAXIMUM
+# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+# endif
+# if (defined __cplusplus && ! defined EXIT_SUCCESS \
+ && ! ((defined YYMALLOC || defined malloc) \
+ && (defined YYFREE || defined free)))
+# include /* INFRINGES ON USER NAME SPACE */
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+# endif
+# endif
+# ifndef YYMALLOC
+# define YYMALLOC malloc
+# if ! defined malloc && ! defined EXIT_SUCCESS
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# ifndef YYFREE
+# define YYFREE free
+# if ! defined free && ! defined EXIT_SUCCESS
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# endif
+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+
+
+#if (! defined yyoverflow \
+ && (! defined __cplusplus \
+ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member. */
+union yyalloc
+{
+ yytype_int16 yyss_alloc;
+ YYSTYPE yyvs_alloc;
+};
+
+/* The size of the maximum gap between one aligned stack and the next. */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+ N elements. */
+# define YYSTACK_BYTES(N) \
+ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ + YYSTACK_GAP_MAXIMUM)
+
+# define YYCOPY_NEEDED 1
+
+/* Relocate STACK from its old location to the new one. The
+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
+ elements in the stack, and YYPTR gives the new location of the
+ stack. Advance YYPTR to a properly aligned location for the next
+ stack. */
+# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
+ do \
+ { \
+ YYSIZE_T yynewbytes; \
+ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
+ Stack = &yyptr->Stack_alloc; \
+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ yyptr += yynewbytes / sizeof (*yyptr); \
+ } \
+ while (0)
+
+#endif
+
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from SRC to DST. The source and destination do
+ not overlap. */
+# ifndef YYCOPY
+# if defined __GNUC__ && 1 < __GNUC__
+# define YYCOPY(Dst, Src, Count) \
+ __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
+# else
+# define YYCOPY(Dst, Src, Count) \
+ do \
+ { \
+ YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (Dst)[yyi] = (Src)[yyi]; \
+ } \
+ while (0)
+# endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL 11
+/* YYLAST -- Last index in YYTABLE. */
+#define YYLAST 2619
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS 296
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS 472
+/* YYNRULES -- Number of rules. */
+#define YYNRULES 1129
+/* YYNSTATES -- Number of states. */
+#define YYNSTATES 1626
+
+/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
+ by yylex, with out-of-bounds checking. */
+#define YYUNDEFTOK 2
+#define YYMAXUTOK 549
+
+#define YYTRANSLATE(YYX) \
+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+ as returned by yylex, without out-of-bounds checking. */
+static const yytype_uint16 yytranslate[] =
+{
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 295, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294
+};
+
+#if YYDEBUG
+ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
+static const yytype_uint16 yyrline[] =
+{
+ 0, 505, 505, 508, 511, 512, 513, 514, 515, 516,
+ 517, 520, 523, 526, 530, 533, 534, 537, 540, 541,
+ 542, 543, 544, 545, 548, 551, 552, 555, 558, 559,
+ 560, 561, 562, 565, 568, 571, 572, 575, 578, 581,
+ 582, 583, 584, 585, 588, 591, 594, 597, 600, 603,
+ 606, 607, 608, 611, 614, 615, 618, 619, 622, 625,
+ 626, 627, 628, 631, 634, 635, 638, 641, 642, 645,
+ 648, 651, 654, 657, 658, 659, 660, 661, 662, 663,
+ 666, 669, 672, 673, 676, 679, 682, 683, 684, 687,
+ 690, 691, 692, 695, 696, 697, 700, 703, 704, 707,
+ 710, 713, 714, 717, 720, 721, 722, 723, 724, 725,
+ 726, 727, 730, 733, 736, 737, 738, 739, 740, 741,
+ 742, 743, 744, 745, 746, 747, 748, 749, 750, 751,
+ 752, 753, 756, 759, 760, 763, 766, 767, 768, 771,
+ 774, 775, 778, 781, 784, 785, 786, 789, 792, 793,
+ 796, 799, 800, 803, 806, 807, 810, 813, 814, 817,
+ 820, 821, 824, 827, 828, 831, 834, 835, 838, 841,
+ 842, 845, 848, 849, 850, 853, 856, 857, 858, 859,
+ 860, 863, 866, 867, 870, 873, 876, 877, 878, 879,
+ 880, 881, 882, 883, 884, 885, 886, 887, 888, 889,
+ 890, 893, 896, 897, 898, 899, 902, 905, 906, 907,
+ 910, 913, 914, 917, 918, 921, 922, 925, 926, 929,
+ 932, 933, 936, 939, 940, 943, 946, 950, 951, 952,
+ 953, 956, 959, 960, 961, 964, 968, 969, 970, 973,
+ 974, 975, 976, 979, 980, 981, 984, 987, 988, 989,
+ 990, 991, 992, 993, 996, 999, 1002, 1003, 1004, 1005,
+ 1006, 1009, 1012, 1015, 1018, 1019, 1020, 1021, 1022, 1023,
+ 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1034, 1037,
+ 1040, 1043, 1044, 1045, 1048, 1051, 1052, 1053, 1054, 1055,
+ 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1066, 1069,
+ 1070, 1073, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083,
+ 1084, 1085, 1086, 1089, 1092, 1093, 1094, 1095, 1098, 1099,
+ 1100, 1101, 1102, 1105, 1108, 1109, 1110, 1111, 1114, 1117,
+ 1118, 1119, 1120, 1123, 1126, 1129, 1130, 1133, 1134, 1135,
+ 1136, 1139, 1142, 1143, 1146, 1149, 1150, 1151, 1152, 1153,
+ 1156, 1159, 1162, 1165, 1168, 1171, 1172, 1175, 1178, 1181,
+ 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1193,
+ 1196, 1197, 1198, 1201, 1204, 1205, 1206, 1207, 1208, 1211,
+ 1214, 1215, 1218, 1221, 1222, 1223, 1224, 1225, 1228, 1229,
+ 1232, 1233, 1236, 1239, 1240, 1243, 1246, 1247, 1248, 1249,
+ 1252, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263,
+ 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1274, 1278,
+ 1279, 1280, 1281, 1284, 1287, 1288, 1289, 1290, 1293, 1296,
+ 1297, 1298, 1299, 1302, 1305, 1306, 1309, 1312, 1315, 1316,
+ 1317, 1318, 1321, 1324, 1325, 1326, 1327, 1328, 1329, 1330,
+ 1331, 1332, 1335, 1338, 1339, 1342, 1345, 1348, 1349, 1352,
+ 1355, 1358, 1361, 1364, 1367, 1370, 1371, 1372, 1373, 1374,
+ 1377, 1380, 1383, 1384, 1387, 1390, 1391, 1392, 1395, 1398,
+ 1399, 1402, 1405, 1406, 1409, 1410, 1411, 1414, 1415, 1416,
+ 1419, 1422, 1423, 1424, 1425, 1428, 1431, 1432, 1433, 1434,
+ 1437, 1440, 1441, 1444, 1447, 1448, 1451, 1454, 1457, 1460,
+ 1461, 1462, 1465, 1468, 1469, 1470, 1471, 1474, 1477, 1478,
+ 1479, 1480, 1483, 1486, 1487, 1490, 1493, 1494, 1495, 1496,
+ 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506,
+ 1507, 1510, 1513, 1514, 1515, 1516, 1517, 1520, 1523, 1524,
+ 1527, 1528, 1529, 1532, 1535, 1536, 1537, 1540, 1541, 1542,
+ 1545, 1548, 1549, 1552, 1555, 1556, 1557, 1558, 1561, 1564,
+ 1565, 1568, 1569, 1572, 1575, 1576, 1577, 1580, 1583, 1584,
+ 1587, 1590, 1591, 1592, 1593, 1594, 1597, 1600, 1601, 1604,
+ 1605, 1606, 1609, 1610, 1613, 1616, 1617, 1618, 1619, 1620,
+ 1621, 1622, 1623, 1624, 1625, 1628, 1631, 1632, 1633, 1634,
+ 1635, 1638, 1641, 1642, 1643, 1644, 1645, 1646, 1649, 1652,
+ 1653, 1654, 1657, 1660, 1661, 1662, 1665, 1668, 1669, 1670,
+ 1671, 1672, 1675, 1676, 1680, 1681, 1684, 1687, 1688, 1689,
+ 1690, 1693, 1696, 1699, 1700, 1701, 1704, 1707, 1708, 1709,
+ 1712, 1715, 1716, 1717, 1718, 1721, 1724, 1725, 1726, 1727,
+ 1730, 1733, 1734, 1737, 1740, 1741, 1742, 1743, 1746, 1749,
+ 1750, 1751, 1752, 1753, 1756, 1759, 1762, 1763, 1766, 1769,
+ 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1779, 1782, 1786,
+ 1787, 1788, 1789, 1792, 1796, 1797, 1798, 1799, 1802, 1805,
+ 1806, 1809, 1812, 1815, 1816, 1817, 1818, 1819, 1820, 1821,
+ 1822, 1823, 1824, 1827, 1830, 1833, 1834, 1837, 1840, 1841,
+ 1844, 1847, 1850, 1851, 1854, 1857, 1858, 1861, 1864, 1867,
+ 1868, 1869, 1870, 1873, 1876, 1877, 1880, 1883, 1884, 1885,
+ 1886, 1889, 1892, 1893, 1896, 1899, 1900, 1903, 1906, 1909,
+ 1910, 1913, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923,
+ 1924, 1925, 1926, 1927, 1928, 1931, 1934, 1935, 1936, 1937,
+ 1938, 1939, 1940, 1941, 1942, 1943, 1946, 1949, 1950, 1951,
+ 1952, 1955, 1958, 1959, 1960, 1961, 1964, 1967, 1968, 1969,
+ 1972, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983,
+ 1984, 1985, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+ 1998, 1999, 2000, 2001, 2002, 2003, 2006, 2009, 2010, 2011,
+ 2014, 2017, 2020, 2021, 2022, 2023, 2024, 2027, 2028, 2031,
+ 2032, 2035, 2050, 2051, 2052, 2053, 2056, 2059, 2060, 2063,
+ 2066, 2067, 2070, 2073, 2074, 2075, 2076, 2077, 2080, 2083,
+ 2086, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097,
+ 2098, 2099, 2100, 2103, 2104, 2105, 2106, 2107, 2108, 2111,
+ 2114, 2115, 2116, 2119, 2122, 2123, 2126, 2129, 2130, 2131,
+ 2132, 2135, 2139, 2140, 2143, 2144, 2147, 2150, 2151, 2154,
+ 2157, 2160, 2161, 2164, 2167, 2170, 2173, 2174, 2175, 2176,
+ 2179, 2182, 2183, 2186, 2189, 2192, 2193, 2194, 2195, 2196,
+ 2197, 2200, 2203, 2204, 2205, 2206, 2209, 2212, 2213, 2216,
+ 2219, 2220, 2223, 2226, 2227, 2230, 2233, 2234, 2237, 2240,
+ 2241, 2242, 2243, 2246, 2249, 2250, 2251, 2254, 2255, 2256,
+ 2259, 2262, 2265, 2266, 2267, 2268, 2271, 2272, 2275, 2278,
+ 2281, 2282, 2283, 2284, 2285, 2286, 2287, 2288, 2289, 2290,
+ 2291, 2292, 2293, 2294, 2297, 2300, 2301, 2304, 2307, 2308,
+ 2309, 2312, 2315, 2316, 2317, 2318, 2321, 2322, 2323, 2326,
+ 2329, 2330, 2331, 2332, 2333, 2334, 2335, 2338, 2341, 2344,
+ 2345, 2348, 2349, 2350, 2353, 2357, 2360, 2361, 2362, 2363,
+ 2364, 2367, 2371, 2372, 2375, 2376, 2379, 2380, 2383, 2384,
+ 2387, 2388, 2391, 2394, 2395, 2396, 2399, 2402, 2403, 2404,
+ 2405, 2408, 2411, 2412, 2413, 2414, 2415, 2416, 2419, 2422,
+ 2425, 2428, 2429, 2430, 2431, 2434, 2437, 2438, 2439, 2440,
+ 2441, 2442, 2443, 2444, 2445, 2446, 2447, 2448, 2449, 2450,
+ 2451, 2452, 2455, 2458, 2461, 2462, 2463, 2464, 2465, 2468,
+ 2469, 2472, 2473, 2476, 2479, 2482, 2483, 2484, 2485, 2486,
+ 2487, 2490, 2493, 2494, 2495, 2498, 2501, 2502, 2503, 2504,
+ 2505, 2506, 2507, 2508, 2509, 2512, 2515, 2518, 2521, 2522,
+ 2525, 2528, 2529, 2530, 2531, 2532, 2533, 2534, 2535, 2536,
+ 2537, 2540, 2543, 2546, 2549, 2552, 2555, 2556, 2557, 2558,
+ 2561, 2564, 2565, 2566, 2567, 2568, 2569, 2570, 2573, 2576,
+ 2577, 2578, 2579, 2580, 2581, 2582, 2585, 2588, 2591, 2594
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || 0
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+ "$end", "error", "$undefined", "EDIF_TOK_IDENT", "EDIF_TOK_INT",
+ "EDIF_TOK_KEYWORD", "EDIF_TOK_STR", "EDIF_TOK_ANGLE",
+ "EDIF_TOK_BEHAVIOR", "EDIF_TOK_CALCULATED", "EDIF_TOK_CAPACITANCE",
+ "EDIF_TOK_CENTERCENTER", "EDIF_TOK_CENTERLEFT", "EDIF_TOK_CENTERRIGHT",
+ "EDIF_TOK_CHARGE", "EDIF_TOK_CONDUCTANCE", "EDIF_TOK_CURRENT",
+ "EDIF_TOK_DISTANCE", "EDIF_TOK_DOCUMENT", "EDIF_TOK_ENERGY",
+ "EDIF_TOK_EXTEND", "EDIF_TOK_FLUX", "EDIF_TOK_FREQUENCY",
+ "EDIF_TOK_GENERIC", "EDIF_TOK_GRAPHIC", "EDIF_TOK_INDUCTANCE",
+ "EDIF_TOK_INOUT", "EDIF_TOK_INPUT", "EDIF_TOK_LOGICMODEL",
+ "EDIF_TOK_LOWERCENTER", "EDIF_TOK_LOWERLEFT", "EDIF_TOK_LOWERRIGHT",
+ "EDIF_TOK_MASKLAYOUT", "EDIF_TOK_MASS", "EDIF_TOK_MEASURED",
+ "EDIF_TOK_MX", "EDIF_TOK_MXR90", "EDIF_TOK_MY", "EDIF_TOK_MYR90",
+ "EDIF_TOK_NETLIST", "EDIF_TOK_OUTPUT", "EDIF_TOK_PCBLAYOUT",
+ "EDIF_TOK_POWER", "EDIF_TOK_R0", "EDIF_TOK_R180", "EDIF_TOK_R270",
+ "EDIF_TOK_R90", "EDIF_TOK_REQUIRED", "EDIF_TOK_RESISTANCE",
+ "EDIF_TOK_RIPPER", "EDIF_TOK_ROUND", "EDIF_TOK_SCHEMATIC",
+ "EDIF_TOK_STRANGER", "EDIF_TOK_SYMBOLIC", "EDIF_TOK_TEMPERATURE",
+ "EDIF_TOK_TIE", "EDIF_TOK_TIME", "EDIF_TOK_TRUNCATE",
+ "EDIF_TOK_UPPERCENTER", "EDIF_TOK_UPPERLEFT", "EDIF_TOK_UPPERRIGHT",
+ "EDIF_TOK_VOLTAGE", "EDIF_TOK_ACLOAD", "EDIF_TOK_AFTER",
+ "EDIF_TOK_ANNOTATE", "EDIF_TOK_APPLY", "EDIF_TOK_ARC", "EDIF_TOK_ARRAY",
+ "EDIF_TOK_ARRAYMACRO", "EDIF_TOK_ARRAYRELATEDINFO", "EDIF_TOK_ARRAYSITE",
+ "EDIF_TOK_ATLEAST", "EDIF_TOK_ATMOST", "EDIF_TOK_AUTHOR",
+ "EDIF_TOK_BASEARRAY", "EDIF_TOK_BECOMES", "EDIF_TOK_BETWEEN",
+ "EDIF_TOK_BOOLEAN", "EDIF_TOK_BOOLEANDISPLAY", "EDIF_TOK_BOOLEANMAP",
+ "EDIF_TOK_BORDERPATTERN", "EDIF_TOK_BORDERWIDTH", "EDIF_TOK_BOUNDINGBOX",
+ "EDIF_TOK_CELL", "EDIF_TOK_CELLREF", "EDIF_TOK_CELLTYPE",
+ "EDIF_TOK_CHANGE", "EDIF_TOK_CIRCLE", "EDIF_TOK_COLOR",
+ "EDIF_TOK_COMMENT", "EDIF_TOK_COMMENTGRAPHICS", "EDIF_TOK_COMPOUND",
+ "EDIF_TOK_CONNECTLOCATION", "EDIF_TOK_CONTENTS", "EDIF_TOK_CORNERTYPE",
+ "EDIF_TOK_CRITICALITY", "EDIF_TOK_CURRENTMAP", "EDIF_TOK_CURVE",
+ "EDIF_TOK_CYCLE", "EDIF_TOK_DATAORIGIN", "EDIF_TOK_DCFANINLOAD",
+ "EDIF_TOK_DCFANOUTLOAD", "EDIF_TOK_DCMAXFANIN", "EDIF_TOK_DCMAXFANOUT",
+ "EDIF_TOK_DELAY", "EDIF_TOK_DELTA", "EDIF_TOK_DERIVATION",
+ "EDIF_TOK_DESIGN", "EDIF_TOK_DESIGNATOR", "EDIF_TOK_DIFFERENCE",
+ "EDIF_TOK_DIRECTION", "EDIF_TOK_DISPLAY", "EDIF_TOK_DOMINATES",
+ "EDIF_TOK_DOT", "EDIF_TOK_DURATION", "EDIF_TOK_E", "EDIF_TOK_EDIF",
+ "EDIF_TOK_EDIFLEVEL", "EDIF_TOK_EDIFVERSION",
+ "EDIF_TOK_ENCLOSUREDISTANCE", "EDIF_TOK_ENDTYPE", "EDIF_TOK_ENTRY",
+ "EDIF_TOK_EVENT", "EDIF_TOK_EXACTLY", "EDIF_TOK_EXTERNAL",
+ "EDIF_TOK_FABRICATE", "EDIF_TOK_FALSE", "EDIF_TOK_FIGURE",
+ "EDIF_TOK_FIGUREAREA", "EDIF_TOK_FIGUREGROUP",
+ "EDIF_TOK_FIGUREGROUPOBJECT", "EDIF_TOK_FIGUREGROUPOVERRIDE",
+ "EDIF_TOK_FIGUREGROUPREF", "EDIF_TOK_FIGUREPERIMETER",
+ "EDIF_TOK_FIGUREWIDTH", "EDIF_TOK_FILLPATTERN", "EDIF_TOK_FOLLOW",
+ "EDIF_TOK_FORBIDDENEVENT", "EDIF_TOK_GLOBALPORTREF",
+ "EDIF_TOK_GREATERTHAN", "EDIF_TOK_GRIDMAP", "EDIF_TOK_IGNORE",
+ "EDIF_TOK_INCLUDEFIGUREGROUP", "EDIF_TOK_INITIAL", "EDIF_TOK_INSTANCE",
+ "EDIF_TOK_INSTANCEBACKANNOTATE", "EDIF_TOK_INSTANCEGROUP",
+ "EDIF_TOK_INSTANCEMAP", "EDIF_TOK_INSTANCEREF", "EDIF_TOK_INTEGER",
+ "EDIF_TOK_INTEGERDISPLAY", "EDIF_TOK_INTERFACE",
+ "EDIF_TOK_INTERFIGUREGROUPSPACING", "EDIF_TOK_INTERSECTION",
+ "EDIF_TOK_INTRAFIGUREGROUPSPACING", "EDIF_TOK_INVERSE",
+ "EDIF_TOK_ISOLATED", "EDIF_TOK_JOINED", "EDIF_TOK_JUSTIFY",
+ "EDIF_TOK_KEYWORDDISPLAY", "EDIF_TOK_KEYWORDLEVEL",
+ "EDIF_TOK_KEYWORDMAP", "EDIF_TOK_LESSTHAN", "EDIF_TOK_LIBRARY",
+ "EDIF_TOK_LIBRARYREF", "EDIF_TOK_LISTOFNETS", "EDIF_TOK_LISTOFPORTS",
+ "EDIF_TOK_LOADDELAY", "EDIF_TOK_LOGICASSIGN", "EDIF_TOK_LOGICINPUT",
+ "EDIF_TOK_LOGICLIST", "EDIF_TOK_LOGICMAPINPUT",
+ "EDIF_TOK_LOGICMAPOUTPUT", "EDIF_TOK_LOGICONEOF", "EDIF_TOK_LOGICOUTPUT",
+ "EDIF_TOK_LOGICPORT", "EDIF_TOK_LOGICREF", "EDIF_TOK_LOGICVALUE",
+ "EDIF_TOK_LOGICWAVEFORM", "EDIF_TOK_MAINTAIN", "EDIF_TOK_MATCH",
+ "EDIF_TOK_MEMBER", "EDIF_TOK_MINOMAX", "EDIF_TOK_MINOMAXDISPLAY",
+ "EDIF_TOK_MNM", "EDIF_TOK_MULTIPLEVALUESET", "EDIF_TOK_MUSTJOIN",
+ "EDIF_TOK_NAME", "EDIF_TOK_NET", "EDIF_TOK_NETBACKANNOTATE",
+ "EDIF_TOK_NETBUNDLE", "EDIF_TOK_NETDELAY", "EDIF_TOK_NETGROUP",
+ "EDIF_TOK_NETMAP", "EDIF_TOK_NETREF", "EDIF_TOK_NOCHANGE",
+ "EDIF_TOK_NONPERMUTABLE", "EDIF_TOK_NOTALLOWED", "EDIF_TOK_NOTCHSPACING",
+ "EDIF_TOK_NUMBER", "EDIF_TOK_NUMBERDEFINITION", "EDIF_TOK_NUMBERDISPLAY",
+ "EDIF_TOK_OFFPAGECONNECTOR", "EDIF_TOK_OFFSETEVENT",
+ "EDIF_TOK_OPENSHAPE", "EDIF_TOK_ORIENTATION", "EDIF_TOK_ORIGIN",
+ "EDIF_TOK_OVERHANGDISTANCE", "EDIF_TOK_OVERLAPDISTANCE",
+ "EDIF_TOK_OVERSIZE", "EDIF_TOK_OWNER", "EDIF_TOK_PAGE",
+ "EDIF_TOK_PAGESIZE", "EDIF_TOK_PARAMETER", "EDIF_TOK_PARAMETERASSIGN",
+ "EDIF_TOK_PARAMETERDISPLAY", "EDIF_TOK_PATH", "EDIF_TOK_PATHDELAY",
+ "EDIF_TOK_PATHWIDTH", "EDIF_TOK_PERMUTABLE",
+ "EDIF_TOK_PHYSICALDESIGNRULE", "EDIF_TOK_PLUG", "EDIF_TOK_POINT",
+ "EDIF_TOK_POINTDISPLAY", "EDIF_TOK_POINTLIST", "EDIF_TOK_POLYGON",
+ "EDIF_TOK_PORT", "EDIF_TOK_PORTBACKANNOTATE", "EDIF_TOK_PORTBUNDLE",
+ "EDIF_TOK_PORTDELAY", "EDIF_TOK_PORTGROUP",
+ "EDIF_TOK_PORTIMPLEMENTATION", "EDIF_TOK_PORTINSTANCE",
+ "EDIF_TOK_PORTLIST", "EDIF_TOK_PORTLISTALIAS", "EDIF_TOK_PORTMAP",
+ "EDIF_TOK_PORTREF", "EDIF_TOK_PROGRAM", "EDIF_TOK_PROPERTY",
+ "EDIF_TOK_PROPERTYDISPLAY", "EDIF_TOK_PROTECTIONFRAME", "EDIF_TOK_PT",
+ "EDIF_TOK_RANGEVECTOR", "EDIF_TOK_RECTANGLE", "EDIF_TOK_RECTANGLESIZE",
+ "EDIF_TOK_RENAME", "EDIF_TOK_RESOLVES", "EDIF_TOK_SCALE",
+ "EDIF_TOK_SCALEX", "EDIF_TOK_SCALEY", "EDIF_TOK_SECTION",
+ "EDIF_TOK_SHAPE", "EDIF_TOK_SIMULATE", "EDIF_TOK_SIMULATIONINFO",
+ "EDIF_TOK_SINGLEVALUESET", "EDIF_TOK_SITE", "EDIF_TOK_SOCKET",
+ "EDIF_TOK_SOCKETSET", "EDIF_TOK_STATUS", "EDIF_TOK_STEADY",
+ "EDIF_TOK_STRING", "EDIF_TOK_STRINGDISPLAY", "EDIF_TOK_STRONG",
+ "EDIF_TOK_SYMBOL", "EDIF_TOK_SYMMETRY", "EDIF_TOK_TABLE",
+ "EDIF_TOK_TABLEDEFAULT", "EDIF_TOK_TECHNOLOGY", "EDIF_TOK_TEXTHEIGHT",
+ "EDIF_TOK_TIMEINTERVAL", "EDIF_TOK_TIMESTAMP", "EDIF_TOK_TIMING",
+ "EDIF_TOK_TRANSFORM", "EDIF_TOK_TRANSITION", "EDIF_TOK_TRIGGER",
+ "EDIF_TOK_TRUE", "EDIF_TOK_UNCONSTRAINED", "EDIF_TOK_UNDEFINED",
+ "EDIF_TOK_UNION", "EDIF_TOK_UNIT", "EDIF_TOK_UNUSED",
+ "EDIF_TOK_USERDATA", "EDIF_TOK_VERSION", "EDIF_TOK_VIEW",
+ "EDIF_TOK_VIEWLIST", "EDIF_TOK_VIEWMAP", "EDIF_TOK_VIEWREF",
+ "EDIF_TOK_VIEWTYPE", "EDIF_TOK_VISIBLE", "EDIF_TOK_VOLTAGEMAP",
+ "EDIF_TOK_WAVEVALUE", "EDIF_TOK_WEAK", "EDIF_TOK_WEAKJOINED",
+ "EDIF_TOK_WHEN", "EDIF_TOK_WRITTEN", "')'", "$accept", "PopC", "Edif",
+ "_Edif", "EdifFileName", "EdifLevel", "EdifVersion", "AcLoad", "_AcLoad",
+ "After", "_After", "Annotate", "_Annotate", "Apply", "_Apply", "Arc",
+ "Array", "_Array", "ArrayMacro", "ArrayRelInfo", "_ArrayRelInfo",
+ "ArraySite", "AtLeast", "AtMost", "Author", "BaseArray", "Becomes",
+ "_Becomes", "Between", "__Between", "_Between", "Boolean", "_Boolean",
+ "BooleanDisp", "_BooleanDisp", "BooleanMap", "BooleanValue", "BorderPat",
+ "BorderWidth", "BoundBox", "Cell", "_Cell", "CellNameDef", "CellRef",
+ "_CellRef", "CellNameRef", "CellType", "_CellType", "Change", "__Change",
+ "_Change", "Circle", "_Circle", "Color", "Comment", "_Comment",
+ "CommGraph", "_CommGraph", "Compound", "Contents", "_Contents",
+ "ConnectLoc", "_ConnectLoc", "CornerType", "_CornerType", "Criticality",
+ "_Criticality", "CurrentMap", "Curve", "_Curve", "Cycle", "_Cycle",
+ "DataOrigin", "_DataOrigin", "DcFanInLoad", "_DcFanInLoad",
+ "DcFanOutLoad", "_DcFanOutLoad", "DcMaxFanIn", "_DcMaxFanIn",
+ "DcMaxFanOut", "_DcMaxFanOut", "Delay", "_Delay", "Delta", "_Delta",
+ "Derivation", "_Derivation", "Design", "_Design", "Designator",
+ "_Designator", "DesignNameDef", "DesignRule", "_DesignRule",
+ "Difference", "_Difference", "Direction", "_Direction", "Display",
+ "_Display", "_DisplayJust", "_DisplayOrien", "_DisplayOrg", "Dominates",
+ "_Dominates", "Dot", "_Dot", "Duration", "EncloseDist", "_EncloseDist",
+ "EndType", "_EndType", "Entry", "___Entry", "__Entry", "_Entry", "Event",
+ "_Event", "Exactly", "External", "_External", "Fabricate", "False",
+ "FigGrp", "_FigGrp", "FigGrpNameDef", "FigGrpNameRef", "FigGrpObj",
+ "_FigGrpObj", "FigGrpOver", "_FigGrpOver", "FigGrpRef", "_FigGrpRef",
+ "Figure", "_Figure", "FigureArea", "_FigureArea", "FigureOp",
+ "FigurePerim", "_FigurePerim", "FigureWidth", "_FigureWidth",
+ "FillPattern", "Follow", "__Follow", "_Follow", "Forbidden",
+ "_Forbidden", "Form", "_Form", "GlobPortRef", "GreaterThan", "GridMap",
+ "Ignore", "IncFigGrp", "_IncFigGrp", "Initial", "Instance", "_Instance",
+ "InstanceRef", "_InstanceRef", "InstBackAn", "_InstBackAn", "InstGroup",
+ "_InstGroup", "InstMap", "_InstMap", "InstNameDef", "InstNameRef",
+ "IntDisplay", "_IntDisplay", "Integer", "_Integer", "Interface",
+ "_Interface", "InterFigGrp", "_InterFigGrp", "Intersection",
+ "_Intersection", "IntraFigGrp", "_IntraFigGrp", "Inverse", "_Inverse",
+ "Isolated", "Joined", "_Joined", "Justify", "_Justify", "KeywordDisp",
+ "_KeywordDisp", "KeywordLevel", "KeywordMap", "_KeywordMap",
+ "KeywordName", "LayerNameDef", "LessThan", "LibNameDef", "LibNameRef",
+ "Library", "_Library", "LibraryRef", "ListOfNets", "_ListOfNets",
+ "ListOfPorts", "_ListOfPorts", "LoadDelay", "_LoadDelay", "LogicAssn",
+ "___LogicAssn", "__LogicAssn", "_LogicAssn", "LogicIn", "_LogicIn",
+ "LogicList", "_LogicList", "LogicMapIn", "_LogicMapIn", "LogicMapOut",
+ "_LogicMapOut", "LogicNameDef", "LogicNameRef", "LogicOneOf",
+ "_LogicOneOf", "LogicOut", "_LogicOut", "LogicPort", "_LogicPort",
+ "LogicRef", "_LogicRef", "LogicValue", "_LogicValue", "LogicWave",
+ "_LogicWave", "Maintain", "__Maintain", "_Maintain", "Match", "__Match",
+ "_Match", "Member", "_Member", "MiNoMa", "_MiNoMa", "MiNoMaDisp",
+ "_MiNoMaDisp", "MiNoMaValue", "Mnm", "_Mnm", "MultValSet", "_MultValSet",
+ "MustJoin", "_MustJoin", "Name", "_Name", "NameDef", "NameRef", "Net",
+ "_Net", "NetBackAn", "_NetBackAn", "NetBundle", "_NetBundle", "NetDelay",
+ "_NetDelay", "NetGroup", "_NetGroup", "NetMap", "_NetMap", "NetNameDef",
+ "NetNameRef", "NetRef", "_NetRef", "NoChange", "NonPermut", "_NonPermut",
+ "NotAllowed", "_NotAllowed", "NotchSpace", "_NotchSpace", "Number",
+ "_Number", "NumbDisplay", "_NumbDisplay", "NumberDefn", "_NumberDefn",
+ "OffPageConn", "_OffPageConn", "OffsetEvent", "OpenShape", "_OpenShape",
+ "Orientation", "_Orientation", "Origin", "OverhngDist", "_OverhngDist",
+ "OverlapDist", "_OverlapDist", "Oversize", "_Oversize", "Owner", "Page",
+ "_Page", "PageSize", "ParamDisp", "_ParamDisp", "Parameter",
+ "_Parameter", "ParamAssign", "Path", "_Path", "PathDelay", "_PathDelay",
+ "PathWidth", "Permutable", "_Permutable", "Plug", "_Plug", "Point",
+ "_Point", "PointDisp", "_PointDisp", "PointList", "_PointList",
+ "PointValue", "Polygon", "_Polygon", "Port", "_Port", "PortBackAn",
+ "_PortBackAn", "PortBundle", "_PortBundle", "PortDelay", "_PortDelay",
+ "PortGroup", "_PortGroup", "PortImpl", "_PortImpl", "PortInst",
+ "_PortInst", "PortList", "_PortList", "PortListAls", "PortMap",
+ "_PortMap", "PortNameDef", "PortNameRef", "PortRef", "_PortRef",
+ "Program", "_Program", "PropDisplay", "_PropDisplay", "Property",
+ "_Property", "PropNameDef", "PropNameRef", "ProtectFrame",
+ "_ProtectFrame", "Range", "RangeVector", "_RangeVector", "Rectangle",
+ "_Rectangle", "RectSize", "_RectSize", "Rename", "__Rename", "_Rename",
+ "Resolves", "_Resolves", "RuleNameDef", "Scale", "ScaledInt", "ScaleX",
+ "ScaleY", "Section", "_Section", "Shape", "_Shape", "SimNameDef",
+ "Simulate", "_Simulate", "SimulInfo", "_SimulInfo", "SingleValSet",
+ "_SingleValSet", "Site", "_Site", "Socket", "_Socket", "SocketSet",
+ "_SocketSet", "Status", "_Status", "Steady", "__Steady", "_Steady",
+ "StrDisplay", "String", "_String", "_StrDisplay", "Strong", "Symbol",
+ "_Symbol", "Symmetry", "_Symmetry", "Table", "_Table", "TableDeflt",
+ "__TableDeflt", "_TableDeflt", "Technology", "_Technology", "TextHeight",
+ "TimeIntval", "__TimeIntval", "_TimeIntval", "TimeStamp", "Timing",
+ "_Timing", "Transform", "_TransX", "_TransY", "_TransDelta",
+ "_TransOrien", "_TransOrg", "Transition", "_Transition", "Trigger",
+ "_Trigger", "True", "TypedValue", "Unconstrained", "Undefined", "Union",
+ "_Union", "Unit", "_Unit", "Unused", "UserData", "_UserData",
+ "ValueNameDef", "ValueNameRef", "Version", "View", "_View", "ViewList",
+ "_ViewList", "ViewMap", "_ViewMap", "ViewNameDef", "ViewNameRef",
+ "ViewRef", "_ViewRef", "ViewType", "_ViewType", "Visible", "VoltageMap",
+ "WaveValue", "Weak", "WeakJoined", "_WeakJoined", "When", "_When",
+ "Written", "_Written", "Ident", "Str", "Int", "Keyword", YY_NULLPTR
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+ (internal) symbol number NUM (which must be that of a token). */
+static const yytype_uint16 yytoknum[] =
+{
+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
+ 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
+ 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
+ 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
+ 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
+ 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
+ 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
+ 525, 526, 527, 528, 529, 530, 531, 532, 533, 534,
+ 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
+ 545, 546, 547, 548, 549, 41
+};
+# endif
+
+#define YYPACT_NINF -1333
+
+#define yypact_value_is_default(Yystate) \
+ (!!((Yystate) == (-1333)))
+
+#define YYTABLE_NINF -1
+
+#define yytable_value_is_error(Yytable_value) \
+ 0
+
+ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
+static const yytype_int16 yypact[] =
+{
+ 41, 152, 149, -1333, 176, 81, 305, -1333, -1333, -1333,
+ -1333, -1333, 33, -1333, -1333, 59, -1333, 148, 317, 101,
+ -1333, -1333, -1333, -1333, 437, 150, -1333, -1333, -1333, 148,
+ 148, 304, 81, 312, -1333, -1333, -1333, -1333, -1333, 33,
+ -1333, -1333, 148, 150, 316, -1333, -1333, 1508, 1780, 272,
+ -1333, -1333, -1333, 150, -1333, 148, -1333, 122, 715, 148,
+ 148, 111, -1333, 997, 1020, 148, 148, 152, 148, 176,
+ 300, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, 150, 1588, 280, -1333, -1333, 150, -1333,
+ -1333, 152, 152, 152, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, 148, 150, 148, 111, -1333, 36, -1333, -1333,
+ -1333, 150, -1333, -1333, -1333, 150, 148, 150, -1333, 1023,
+ 150, 66, -1333, 150, 150, 150, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, 150, 260, 150,
+ -1333, -1333, 424, -1333, 317, -1333, 317, 273, 439, -1333,
+ 148, 111, -1333, -1333, -1333, -1333, 439, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 310,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, 148, 150, -1333, 81, -1333, 441,
+ 254, 254, 266, -1333, -1333, -1333, -1333, 150, 150, 150,
+ 150, 416, 49, 115, 91, 801, 77, 437, 2006, -1333,
+ -1333, -1333, -1333, -1333, 71, 148, -1333, 376, -1333, -1333,
+ -1333, -1333, -1333, -1333, 343, 445, -1333, 445, -1333, 148,
+ -1333, 158, -1333, -1333, -1333, -1333, 300, -1333, -1333, -1333,
+ -1333, 148, -1333, -1333, -1333, -1333, 276, 144, -1333, -1333,
+ -1333, -1333, -1333, -1333, 111, -1333, -1333, -1333, -1333, 260,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 150, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, 150, -1333, -1333, -1333, -1333,
+ -1333, 150, 81, 150, -1333, -1333, -1333, 546, 152, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 148,
+ 437, 437, 437, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ 33, -1333, 33, -1333, 33, -1333, 150, 150, 144, -1333,
+ -1333, -1333, 33, -1333, 33, -1333, -1333, -1333, -1333, 150,
+ -1333, -1333, 132, 152, 152, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, 468, -1333, 148, 150, 306, 306,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 144, -1333,
+ -1333, -1333, -1333, -1333, 111, 111, -1333, -1333, -1333, -1333,
+ 81, -1333, 1442, -1333, -1333, 1794, 519, 832, 940, -1333,
+ 148, -1333, 437, 150, -1333, 150, -1333, 150, 111, 111,
+ 150, 1196, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, 152, 152, 152, 152,
+ 152, 152, 152, 152, 152, 152, 152, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, 152, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ 150, 152, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ 148, 150, -1333, -1333, -1333, 150, 321, -1333, 1196, 81,
+ 1196, 1196, 148, 1196, -1333, -1333, -1333, 150, -1333, -1333,
+ -1333, -1333, -1333, 461, 461, 461, 461, 461, 461, 461,
+ 461, 461, 461, 461, -1333, 1198, -1333, -1333, -1333, 322,
+ 867, 148, -1333, -1333, 150, 1263, -1333, -1333, 376, -1333,
+ -1333, 1263, -1333, -1333, 150, 1196, -1333, -1333, 1263, -1333,
+ 342, 461, 1545, 1545, 1545, 461, 1545, -1333, 130, 1545,
+ 461, 461, -29, 300, 81, 276, -1333, 150, -1333, -1333,
+ -1333, 81, 276, 81, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 1879,
+ 444, 466, -1333, 425, -1333, 382, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, 150, -1333, -1333, -1333,
+ -1333, 150, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 540,
+ -1333, -1333, -1333, -1333, 150, -1333, -1333, 1545, 111, 111,
+ 42, 111, 111, 111, 1276, -1333, -1333, -1333, -1333, 130,
+ -1333, -1333, -1333, -1333, 130, -1333, -1333, 130, -1333, -1333,
+ 1545, 130, -1333, -1333, -1333, -1333, -1333, 130, -1333, -1333,
+ 1545, 1545, -1333, -1333, -1333, -1333, 130, 150, 150, -1333,
+ 150, 63, -1333, 63, 63, 63, 150, 150, 150, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 150,
+ -1333, -1333, 186, 529, -1333, 653, 833, 529, 605, -1333,
+ 171, 529, 581, -1333, 783, -1333, -1333, 150, -1333, 130,
+ -1333, -1333, 150, 150, -1333, 53, -1333, 150, 150, 150,
+ -1333, 150, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, 130, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ 130, -1333, -1333, 130, -1333, -1333, -75, 361, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, 990, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, 81, -34, -1333, -1333, 59, 548,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, 442, 460, 548, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 539,
+ 523, 93, 93, 93, 93, 548, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 150,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 543,
+ -1333, -1333, 108, -1333, 108, 108, -1333, 152, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, 1584, 148, 81,
+ -1333, 150, -1333, 150, -1333, -1333, 894, -1333, 708, 252,
+ -1333, -1333, 150, -1333, 150, -1333, -1333, 561, 46, -1333,
+ -1333, 150, -1333, 150, -1333, -1333, 150, -1333, -1333, 150,
+ -1333, -1333, 150, -1333, -1333, 150, -1333, -1333, 26, 86,
+ -1333, 431, 421, 150, -1333, 130, -1333, -1333, 531, 281,
+ 152, -1333, -1333, 1023, -73, -1333, -1333, 631, -1333, 512,
+ 762, -1333, -1333, 481, 365, 588, 454, -1333, 76, 104,
+ 108, 108, 108, 108, 108, 108, 104, 437, 418, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, 51, -1333, -1333,
+ 424, -1333, -1333, -1333, -1333, -1333, 150, 436, 561, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 523, -1333,
+ -31, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ 523, -1333, -1333, -31, -1333, -1333, -1333, -1333, 150, 453,
+ 150, -1333, -1333, -1333, -1333, 529, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, 148, 321, -1333, -1333,
+ -1333, -1333, -1333, 711, 150, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ 726, 176, 529, 81, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, 620, 108, 152, -1333,
+ -1333, -1333, -1333, -1333, -1333, 59, 454, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, 260, 150, 691, -1333, -1333,
+ 751, -85, -1333, -1333, -1333, -115, -1333, 726, -1333, -1333,
+ -1333, 568, 562, 635, -1333, -1333, 449, 1253, -1333, -1333,
+ 97, -1333, -1333, -1333, 448, -1333, -1333, -1333, 150, -1333,
+ 384, -24, -1333, -1333, -24, 150, -1333, -1333, 950, 950,
+ -1333, -1333, -1333, 523, -1333, -1333, -1333, -1333, -1333, -122,
+ -1333, -1333, 150, -1333, -1333, 150, 86, 148, 150, -1333,
+ -77, -1333, -1333, -1333, 150, -1333, -90, -1333, -1333, -1333,
+ -1333, 33, -1333, -1333, -1333, -1333, 33, -1333, -1333, 33,
+ -1333, 148, 409, -1333, 530, 111, 150, -1333, -1333, 150,
+ 260, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ 260, 260, 675, 553, 553, 675, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, 99, -1333, -1333,
+ -1333, 812, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 679,
+ -1333, -1333, 946, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 651, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, 34, 276, 104, 104, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, 1014, 671, -1333, -1333, 634,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, 150, -1333, -1333,
+ -1333, -1333, -1333, -1333, 950, 150, 453, -1333, -1333, -119,
+ -1333, -1333, -1333, -1333, -1333, 150, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, 684, 255, 255, -1333, -1333, -1333, -1333, -1333, 150,
+ 624, -1333, -1333, -1333, -117, 260, -117, -1333, -1333, -1333,
+ -117, -1333, -117, -1333, -1333, -117, -1333, -117, 269, -1333,
+ -1333, -1333, 428, 529, 104, 560, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -98, -1333, -1333, -1333, -1333,
+ -1333, -1333, 150, -1333, 255, 150, 255, -1333, -1333, -1333,
+ -1333, 739, -1333, -64, -1333, -1333, 26, -1333, -1333, -31,
+ -1333, -1333, -1333, -1333, -1333, 111, 111, -1333, -1333, -1333,
+ 150, 114, 64, -1333, 150, -1333, -127, -1333, -1333, -1333,
+ -1333, 150, -1333, -52, -1333, -1333, -1333, -52, -1333, -1333,
+ -1333, -1333, -1333, 150, -1333, -1333, -1333, -1333, -1333, 28,
+ -1333, -1333, -46, -1333, -1333, -1333, -1333, -1333, -1333, 383,
+ 890, -1333, -1333, -1333, -1333, -1333, -1333, 1023, 657, -1333,
+ -1333, 148, -1333, 564, -1333, -1333, -1333, 11, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, 684, -1333, -1333, -1333, -1333,
+ -1333, -1333, 81, 26, -1333, -1333, -1333, -1333, -1333, 150,
+ -1333, -1333, -1333, 150, 150, -1333, 150, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, 534, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, 113, -1333, -117, 260, -1333, -1333, -1333,
+ -1333, -1333, 255, -1333, 890, -1333, -1333, 150, -1333, -1333,
+ -1333, -1333, 26, 150, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -1333, 148, 148, -1333, 725,
+ -1333, 150, -1333, -1333, -31, 376, -1333, -1333, 150, -1333,
+ -1333, -1333, -1333, 577, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, 260, 950, -1333, -1333, -1333, 26, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, 150, -1333, 150, 148, -1333, -1333,
+ 272, -1333, -1333, -1333, -1333, -1333, 150, -1333, 150, -1333,
+ 260, -1333, -1333, -1333, 150, -1333, 150, -1333, -1333, -1333,
+ 150, -46, -1333, 280, -1333, -1333, 150, -1333, -1333, -1333,
+ -1333, -1333, -1333, 150, -1333, -1333
+};
+
+ /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+ Performed when YYTABLE does not specify something else to do. Zero
+ means the default is an error. */
+static const yytype_uint16 yydefact[] =
+{
+ 0, 0, 0, 1126, 0, 0, 0, 590, 11, 591,
+ 589, 1, 0, 587, 883, 0, 882, 0, 0, 0,
+ 2, 586, 588, 1127, 0, 0, 885, 884, 1128, 0,
+ 0, 0, 0, 213, 211, 212, 593, 279, 592, 0,
+ 946, 881, 0, 0, 0, 4, 285, 0, 0, 215,
+ 214, 940, 947, 0, 12, 0, 457, 0, 0, 0,
+ 0, 0, 101, 0, 0, 0, 0, 0, 0, 0,
+ 0, 284, 292, 289, 290, 295, 286, 287, 291, 288,
+ 296, 293, 297, 294, 443, 444, 445, 446, 447, 448,
+ 449, 450, 451, 0, 0, 217, 216, 13, 0, 456,
+ 458, 0, 0, 0, 929, 3, 9, 8, 6, 7,
+ 5, 10, 0, 0, 0, 0, 891, 0, 136, 137,
+ 138, 0, 232, 233, 234, 0, 0, 0, 848, 0,
+ 0, 0, 1054, 0, 0, 0, 68, 67, 442, 683,
+ 686, 684, 685, 679, 681, 682, 680, 0, 0, 0,
+ 218, 455, 0, 184, 0, 462, 0, 0, 0, 70,
+ 0, 0, 100, 102, 135, 231, 0, 727, 59, 396,
+ 564, 656, 737, 942, 1022, 1023, 1024, 1025, 1026, 0,
+ 1027, 843, 987, 1129, 1053, 1058, 1057, 1056, 1055, 345,
+ 262, 1021, 1101, 678, 0, 0, 210, 0, 176, 0,
+ 0, 0, 0, 928, 931, 932, 930, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 842,
+ 847, 844, 846, 845, 0, 0, 687, 82, 84, 175,
+ 178, 179, 177, 180, 0, 0, 256, 0, 465, 0,
+ 1119, 0, 69, 892, 99, 333, 0, 58, 62, 61,
+ 60, 0, 395, 398, 399, 397, 0, 0, 563, 567,
+ 566, 565, 571, 572, 0, 655, 659, 658, 657, 0,
+ 736, 740, 739, 738, 941, 944, 945, 943, 0, 1051,
+ 1037, 1048, 1049, 1038, 1036, 1046, 1050, 1044, 1045, 1043,
+ 1047, 1039, 1040, 1041, 1042, 0, 344, 349, 348, 347,
+ 346, 0, 0, 0, 83, 664, 980, 0, 0, 255,
+ 258, 259, 257, 260, 464, 467, 468, 466, 469, 0,
+ 0, 0, 0, 1118, 1120, 1124, 1122, 1121, 1123, 1125,
+ 0, 64, 0, 393, 0, 569, 0, 0, 0, 574,
+ 576, 575, 0, 661, 0, 742, 701, 1035, 747, 0,
+ 463, 81, 0, 0, 0, 186, 912, 979, 985, 984,
+ 982, 981, 983, 986, 0, 80, 0, 0, 151, 837,
+ 63, 65, 392, 394, 568, 570, 1028, 1029, 0, 660,
+ 662, 741, 743, 470, 0, 0, 663, 667, 666, 665,
+ 0, 460, 0, 264, 278, 0, 0, 0, 0, 73,
+ 0, 47, 0, 0, 152, 0, 838, 0, 0, 0,
+ 0, 0, 263, 271, 268, 269, 274, 265, 266, 270,
+ 277, 267, 275, 272, 276, 273, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 185, 199, 193,
+ 198, 188, 190, 187, 194, 195, 197, 196, 192, 191,
+ 189, 200, 0, 911, 914, 913, 915, 88, 87, 86,
+ 0, 0, 1076, 72, 77, 79, 74, 78, 76, 75,
+ 0, 0, 150, 836, 573, 0, 0, 261, 0, 0,
+ 0, 0, 0, 0, 320, 355, 356, 0, 318, 321,
+ 322, 319, 889, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 526, 0, 506, 85, 1085, 0,
+ 0, 0, 1063, 352, 0, 0, 202, 203, 299, 424,
+ 425, 0, 434, 435, 0, 0, 1031, 1032, 0, 354,
+ 0, 0, 0, 0, 0, 0, 0, 647, 0, 0,
+ 0, 0, 0, 0, 0, 0, 220, 0, 501, 504,
+ 887, 0, 0, 0, 525, 529, 539, 530, 528, 533,
+ 536, 535, 534, 538, 537, 532, 540, 527, 531, 0,
+ 0, 0, 383, 0, 627, 0, 822, 1075, 1083, 1080,
+ 1079, 1082, 1081, 1078, 1077, 1084, 0, 890, 201, 204,
+ 205, 0, 300, 423, 426, 427, 433, 699, 700, 0,
+ 1030, 1033, 1034, 281, 0, 282, 283, 0, 0, 0,
+ 0, 0, 0, 0, 917, 866, 865, 868, 867, 0,
+ 864, 863, 314, 315, 0, 324, 325, 0, 329, 330,
+ 0, 0, 429, 430, 646, 648, 649, 0, 651, 652,
+ 0, 0, 578, 870, 878, 877, 0, 0, 0, 507,
+ 0, 0, 436, 0, 0, 0, 0, 0, 0, 1096,
+ 1098, 1099, 1097, 1091, 1093, 1092, 1094, 1100, 1095, 0,
+ 401, 1065, 0, 0, 374, 0, 0, 0, 0, 606,
+ 0, 0, 0, 766, 0, 994, 298, 0, 280, 0,
+ 227, 228, 0, 0, 54, 0, 55, 0, 0, 0,
+ 918, 0, 313, 316, 317, 323, 326, 327, 328, 331,
+ 332, 0, 419, 420, 428, 431, 432, 650, 653, 654,
+ 0, 689, 690, 0, 694, 695, 0, 0, 876, 879,
+ 880, 66, 112, 142, 219, 221, 500, 502, 503, 505,
+ 886, 888, 948, 1102, 1104, 1090, 0, 114, 1064, 1068,
+ 1067, 1069, 1066, 1070, 0, 370, 391, 390, 0, 0,
+ 373, 378, 375, 377, 376, 380, 382, 386, 384, 385,
+ 387, 635, 634, 637, 0, 0, 605, 610, 608, 607,
+ 609, 623, 626, 630, 629, 628, 631, 830, 829, 832,
+ 0, 0, 0, 0, 0, 0, 765, 773, 775, 769,
+ 770, 771, 772, 767, 768, 774, 787, 821, 825, 824,
+ 823, 826, 698, 226, 229, 230, 45, 46, 56, 0,
+ 57, 254, 351, 461, 916, 418, 421, 422, 688, 691,
+ 692, 693, 696, 697, 577, 579, 869, 871, 872, 0,
+ 438, 581, 0, 729, 0, 0, 851, 0, 950, 1106,
+ 400, 406, 416, 414, 408, 409, 407, 411, 402, 403,
+ 415, 405, 413, 404, 412, 417, 410, 0, 0, 0,
+ 371, 0, 372, 0, 183, 182, 0, 996, 0, 0,
+ 639, 638, 0, 640, 0, 141, 140, 0, 0, 834,
+ 833, 0, 835, 0, 16, 15, 0, 155, 154, 0,
+ 158, 157, 0, 161, 160, 0, 164, 163, 0, 0,
+ 53, 0, 0, 0, 41, 0, 40, 39, 0, 0,
+ 0, 1060, 1059, 0, 0, 828, 827, 0, 752, 0,
+ 0, 903, 905, 0, 0, 0, 0, 104, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 113,
+ 129, 130, 122, 117, 127, 115, 128, 119, 120, 116,
+ 121, 123, 118, 125, 124, 131, 126, 0, 561, 1086,
+ 1088, 369, 181, 172, 173, 174, 0, 0, 0, 995,
+ 999, 998, 997, 1000, 379, 381, 636, 139, 0, 619,
+ 0, 622, 624, 625, 831, 14, 153, 156, 159, 162,
+ 0, 782, 783, 0, 786, 788, 789, 734, 0, 923,
+ 0, 48, 38, 42, 43, 0, 817, 437, 441, 440,
+ 439, 580, 585, 583, 582, 584, 0, 718, 643, 728,
+ 732, 731, 730, 0, 0, 751, 761, 763, 757, 758,
+ 759, 760, 756, 753, 755, 762, 754, 764, 475, 777,
+ 0, 0, 0, 0, 850, 856, 861, 855, 853, 854,
+ 858, 859, 852, 857, 860, 862, 0, 0, 0, 904,
+ 908, 909, 906, 910, 907, 0, 0, 949, 955, 957,
+ 962, 954, 952, 953, 959, 956, 960, 951, 958, 961,
+ 963, 1105, 1109, 1108, 1107, 0, 0, 0, 302, 303,
+ 0, 0, 335, 336, 389, 0, 388, 0, 518, 633,
+ 632, 0, 0, 0, 669, 703, 0, 0, 792, 791,
+ 0, 896, 1017, 1111, 0, 560, 562, 1089, 0, 171,
+ 0, 0, 342, 725, 0, 0, 167, 166, 0, 0,
+ 618, 621, 620, 0, 480, 479, 781, 785, 784, 0,
+ 37, 965, 0, 924, 44, 0, 0, 35, 0, 719,
+ 0, 207, 208, 209, 0, 1052, 0, 776, 779, 778,
+ 780, 0, 453, 459, 1062, 1061, 0, 715, 849, 0,
+ 840, 0, 0, 28, 0, 0, 0, 26, 25, 0,
+ 0, 71, 103, 105, 108, 110, 106, 107, 109, 111,
+ 0, 0, 0, 0, 0, 0, 301, 304, 311, 305,
+ 306, 307, 308, 309, 310, 312, 968, 0, 337, 338,
+ 1072, 0, 360, 359, 517, 520, 519, 521, 595, 0,
+ 472, 612, 0, 668, 672, 671, 670, 673, 702, 710,
+ 711, 707, 704, 705, 706, 709, 708, 712, 133, 790,
+ 801, 796, 793, 794, 795, 798, 797, 799, 800, 895,
+ 899, 897, 898, 0, 0, 0, 0, 1110, 1112, 1116,
+ 1113, 1115, 1114, 1117, 1087, 0, 0, 989, 990, 0,
+ 341, 343, 724, 726, 165, 496, 509, 0, 51, 50,
+ 52, 1014, 1013, 1015, 0, 0, 0, 733, 735, 0,
+ 922, 350, 816, 819, 818, 0, 36, 717, 642, 645,
+ 644, 206, 474, 476, 477, 452, 454, 714, 716, 839,
+ 841, 148, 0, 0, 27, 31, 29, 30, 32, 0,
+ 0, 24, 713, 874, 0, 0, 0, 223, 144, 676,
+ 0, 745, 0, 722, 749, 0, 901, 0, 0, 334,
+ 339, 340, 0, 0, 0, 1002, 358, 367, 365, 362,
+ 363, 366, 364, 361, 368, 594, 603, 601, 596, 598,
+ 600, 599, 597, 602, 604, 0, 611, 616, 614, 613,
+ 615, 617, 0, 134, 0, 0, 0, 1016, 1018, 1020,
+ 1019, 0, 18, 0, 482, 483, 550, 548, 549, 0,
+ 251, 250, 249, 248, 247, 0, 0, 993, 991, 992,
+ 0, 0, 0, 49, 0, 478, 0, 926, 964, 966,
+ 34, 0, 149, 0, 491, 493, 492, 0, 513, 515,
+ 514, 820, 542, 0, 873, 875, 97, 222, 224, 0,
+ 675, 677, 0, 721, 723, 748, 750, 900, 902, 0,
+ 0, 967, 969, 970, 1071, 1074, 1073, 0, 0, 804,
+ 803, 0, 1003, 1004, 471, 473, 132, 93, 92, 90,
+ 91, 357, 936, 934, 935, 0, 17, 22, 19, 21,
+ 20, 23, 0, 487, 485, 484, 486, 551, 552, 0,
+ 246, 253, 252, 0, 0, 988, 0, 495, 499, 497,
+ 498, 508, 511, 510, 1012, 0, 925, 927, 147, 490,
+ 494, 512, 516, 0, 1103, 0, 0, 143, 145, 146,
+ 744, 746, 0, 237, 0, 236, 238, 0, 972, 974,
+ 973, 975, 976, 0, 802, 812, 814, 808, 809, 810,
+ 811, 807, 806, 813, 805, 815, 0, 0, 1005, 1006,
+ 94, 0, 95, 937, 0, 523, 488, 489, 0, 547,
+ 674, 225, 353, 920, 541, 546, 544, 543, 545, 96,
+ 98, 0, 0, 556, 554, 555, 243, 239, 241, 240,
+ 242, 641, 977, 978, 0, 720, 0, 0, 169, 1007,
+ 1008, 89, 933, 939, 938, 524, 0, 481, 0, 921,
+ 0, 558, 557, 559, 0, 244, 0, 245, 971, 893,
+ 0, 0, 1009, 1010, 522, 919, 0, 553, 235, 894,
+ 168, 170, 1011, 0, 33, 1001
+};
+
+ /* YYPGOTO[NTERM-NUM]. */
+static const yytype_int16 yypgoto[] =
+{
+ -1333, -25, -1333, -1333, -1333, 8, -1333, -906, -1333, -1333,
+ -1333, -265, -1333, -1333, -1333, -1333, 173, -1333, -1333, -1333,
+ -1333, -1333, 223, 139, -1333, -1333, -996, -1333, -1333, -1333,
+ -1333, 645, -1333, -1333, -1333, -1333, -168, 470, 473, -285,
+ 599, -1333, -1333, -91, -1333, -1333, -1333, -1333, -557, -1333,
+ -1333, -1333, -1333, 504, 1011, -1333, -878, -1333, -1333, -1333,
+ -1333, -1333, -1333, -310, -1333, -316, -1333, -1333, -291, -1333,
+ -1333, -1333, -1333, -1333, -902, -1333, -901, -1333, -896, -1333,
+ -893, -1333, -891, -1333, -1333, -1333, -630, -1333, -1333, -1333,
+ -666, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -26,
+ -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -890, -1333,
+ -1333, 527, -1333, -1333, -1333, -1333, -1333, -284, -1333, -1333,
+ -1333, -1333, -1333, -1333, 528, -1333, -11, 3, 1663, -1333,
+ -7, -1333, 1085, -1333, -880, -1333, -1333, -1333, 1301, -1333,
+ -1333, -1333, -1333, 544, -1043, -1333, -1333, -1333, -1333, 716,
+ -1333, -1333, 329, -1333, -570, -1333, -1333, -1333, -872, -1333,
+ 308, -1333, -1333, -1333, -1333, -1333, -1333, -1333, 4, -1333,
+ 180, -1333, 745, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -1333, -834, -1333, -1333, -1333, -871,
+ -1333, -1333, -1333, -1333, -1333, -1333, 263, 858, -1333, -1333,
+ -1333, -517, -1333, -1333, -1333, -1333, -1202, -181, -428, -1333,
+ -1333, -1333, -1333, -1333, -1109, -1333, -1333, -1333, -1333, -1333,
+ -99, -514, -1097, -1333, -1333, -1333, -1333, -1333, -1332, -1333,
+ -1333, -1333, -1227, -1333, -420, -1333, -1333, -1333, -1333, -1333,
+ -665, -1333, 769, -1333, -193, -1333, -209, -1333, 90, -1333,
+ -1333, -1333, -1333, 355, -1333, 903, 128, -1025, -1333, -1333,
+ -1333, -141, -1333, -242, -1333, -287, -1333, -1333, -1333, 55,
+ 123, -674, -1333, -502, -1333, -1333, -1333, -1333, -1333, -1333,
+ 813, -1333, 472, -1333, -1333, -1333, -1333, -1333, -251, -1333,
+ -1333, -560, -1333, -582, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, -83, 105, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, -1333, 656, -864, -1333, -1333, -1333, 830, -1333,
+ -1333, -1333, -155, -1333, -210, -1333, -1333, -113, -1333, -1333,
+ -1333, -105, -1333, -889, -1333, -213, -1333, -803, -1333, -1333,
+ -1333, -874, -1333, -1333, -1333, -1333, -679, -882, 502, -1333,
+ -1333, -1333, -699, -1333, 767, -1333, -1333, -1333, -1333, -1333,
+ 845, 339, -1333, -942, -1333, -1333, -1333, -1333, -1333, -1333,
+ -1333, -1333, 902, -1333, 141, -1333, -1333, -44, -1333, -1333,
+ -1333, -1333, 213, -1333, -1333, -1333, 411, -1333, -1333, -1333,
+ -1333, -1333, -1333, -1333, -189, -1333, -363, -1333, -1333, -214,
+ 873, -1333, -1333, -1333, -1333, -1333, -195, -1333, -1300, -1333,
+ -1333, -1333, -1333, 904, -1333, 712, -1333, -1333, -1333, -1333,
+ -706, -1333, -1248, -1333, -1333, -1333, -1333, -1333, -980, -186,
+ -1333, -1333, -1333, -912, -1333, -1333, -1333, -1333, -467, -1333,
+ -1089, 1032, -1333, -1333, -241, 742, -1333, -1333, -235, -1333,
+ -1333, -1333, -1333, -1333, -770, -1333, -1333, -1333, 727, -1333,
+ -1333, -1333, 203, -1333, -1333, -1333, -1333, -1333, 1551, 12,
+ 347, -1333
+};
+
+ /* YYDEFGOTO[NTERM-NUM]. */
+static const yytype_int16 yydefgoto[] =
+{
+ -1, 21, 2, 58, 6, 31, 18, 797, 893, 1268,
+ 1391, 1078, 1186, 1070, 1182, 1518, 925, 1305, 914, 851,
+ 915, 916, 615, 616, 324, 917, 1141, 1287, 617, 695,
+ 819, 174, 211, 249, 330, 555, 135, 72, 73, 950,
+ 310, 398, 364, 198, 303, 227, 399, 460, 1388, 1467,
+ 1551, 1207, 1515, 74, 75, 117, 952, 1097, 557, 750,
+ 867, 1252, 1382, 76, 121, 778, 884, 558, 1339, 1439,
+ 1183, 1421, 326, 403, 799, 896, 800, 899, 801, 902,
+ 802, 905, 989, 1135, 1589, 1611, 877, 976, 107, 199,
+ 762, 873, 152, 359, 395, 484, 515, 1043, 1164, 22,
+ 33, 49, 95, 149, 559, 651, 1209, 1336, 1407, 439,
+ 689, 77, 125, 1452, 1524, 1576, 1606, 1277, 1399, 618,
+ 108, 235, 360, 136, 361, 392, 393, 34, 531, 604,
+ 35, 47, 485, 591, 953, 1100, 441, 619, 486, 442,
+ 624, 443, 627, 78, 954, 1101, 1217, 981, 1131, 185,
+ 224, 1018, 620, 388, 1498, 420, 487, 1389, 955, 1221,
+ 674, 871, 579, 675, 769, 879, 580, 676, 1105, 755,
+ 253, 332, 175, 212, 671, 746, 444, 711, 488, 521,
+ 445, 631, 489, 524, 560, 854, 918, 50, 93, 1060,
+ 1171, 56, 45, 57, 1172, 390, 621, 154, 349, 109,
+ 237, 304, 1231, 1375, 1049, 1166, 1002, 1143, 1271, 1393,
+ 1483, 1558, 1326, 1423, 1291, 1411, 561, 653, 562, 654,
+ 504, 1292, 1293, 1412, 1327, 1427, 956, 1107, 1484, 1596,
+ 455, 505, 1433, 1513, 1272, 1396, 1489, 1525, 1572, 1604,
+ 787, 967, 176, 213, 1144, 334, 1145, 262, 338, 644,
+ 726, 855, 919, 36, 12, 492, 649, 957, 1229, 581,
+ 678, 958, 1232, 779, 990, 784, 888, 582, 680, 1111,
+ 773, 679, 882, 1529, 1030, 1160, 446, 538, 447, 637,
+ 177, 214, 267, 342, 306, 352, 959, 1113, 1278, 1210,
+ 1340, 96, 147, 150, 448, 720, 449, 723, 490, 599,
+ 221, 960, 1116, 1085, 1061, 1176, 856, 1158, 1359, 1211,
+ 1342, 982, 1134, 79, 857, 924, 1008, 1149, 178, 215,
+ 272, 344, 1343, 1442, 195, 1212, 1345, 858, 927, 583,
+ 682, 859, 1050, 804, 1003, 809, 909, 961, 1117, 1360,
+ 1458, 1019, 1156, 1072, 584, 684, 928, 789, 683, 891,
+ 327, 405, 1063, 1179, 80, 179, 129, 1180, 861, 930,
+ 622, 645, 727, 1096, 1334, 450, 646, 9, 15, 25,
+ 564, 655, 493, 389, 263, 1462, 1548, 962, 1120, 1214,
+ 1347, 932, 862, 933, 362, 396, 623, 701, 1507, 1598,
+ 1010, 1152, 1298, 1416, 110, 157, 1390, 1475, 1554, 26,
+ 180, 216, 39, 565, 863, 934, 1153, 1299, 1219, 1348,
+ 1453, 1532, 1584, 236, 307, 81, 1132, 1279, 1410, 240,
+ 764, 878, 1363, 1463, 1549, 1590, 1613, 1623, 1142, 1294,
+ 1123, 1263, 137, 181, 340, 341, 491, 528, 223, 295,
+ 1046, 82, 131, 923, 1177, 404, 468, 672, 1222, 1352,
+ 469, 510, 509, 970, 872, 1128, 570, 669, 83, 567,
+ 1074, 568, 866, 935, 966, 1124, 206, 241, 38, 27,
+ 116, 189
+};
+
+ /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule whose
+ number is the opposite. If YYTABLE_NINF, syntax error. */
+static const yytype_uint16 yytable[] =
+{
+ 41, 592, 275, 883, 261, 273, 785, 1147, 756, 514,
+ 232, 1027, 771, 52, 51, 1351, 803, 1001, 54, 892,
+ 260, 1036, 71, 1148, 1236, 1038, 1039, 1005, 97, 1288,
+ 648, 1040, 99, 105, 1041, 46, 40, 656, 1044, 658,
+ 864, 1290, 23, 250, 1138, 1023, 312, 335, 317, 3,
+ 1058, 1419, 1057, 28, 1082, 28, 1081, 1102, 1059, 345,
+ 1031, 1093, 1083, 1084, 1118, 23, 3, 3, 138, 3,
+ 28, 183, 23, 151, 3, 28, 183, 23, 331, 3,
+ 853, 1270, 417, 23, 3, 1022, 1138, 1133, 159, 3,
+ 942, 1243, 162, 1486, 1516, 28, 164, 28, 1275, 881,
+ 165, 1092, 167, 23, 3, 182, 184, 3, 190, 191,
+ 192, 3, 1482, 608, 673, 28, 3, 3, 1528, 28,
+ 1384, 67, 193, 1028, 196, 609, 1432, 1062, 1505, 163,
+ 988, 1087, 203, 1155, 1189, 1296, 844, 735, 845, 737,
+ 739, 741, 843, 187, 19, 887, 843, 37, 28, 11,
+ 1531, 681, 28, 1355, 219, 3, 642, 1, 1213, 681,
+ 37, 964, 200, 681, 201, 908, 929, 643, 20, 1220,
+ 226, 869, 681, 20, 229, 920, 20, 1385, 20, 3,
+ 1216, 612, 242, 243, 244, 245, 247, 252, 258, 265,
+ 270, 274, 1577, 1000, 1488, 194, 1510, 20, 169, 251,
+ 1512, 1216, 115, 988, 1371, 20, 114, 32, 114, 466,
+ 309, 62, 314, 643, 993, 613, 323, 1196, 20, 62,
+ 20, 62, 20, 771, 1580, 1197, 114, 754, 277, 278,
+ 114, 320, 32, 4, 1285, 1088, 299, 1253, 1241, 1251,
+ 677, 940, 1139, 20, 1242, 1254, 1255, 62, 1260, 20,
+ 4, 4, 869, 346, 1496, 1496, 161, 321, 3, 114,
+ 62, 1042, 1108, 4, 20, 1114, 1000, 754, 4, 194,
+ 347, 20, 384, 4, 1303, 62, 348, 1228, 351, 747,
+ 28, 1557, 357, 1285, 1139, 754, 1286, 1286, 4, 687,
+ 171, 4, 264, 1386, 264, 4, 1309, 170, 256, 257,
+ 4, 4, 209, 1502, 371, 370, 373, 372, 375, 374,
+ 1329, 376, 377, 1246, 1500, 1599, 380, 379, 382, 381,
+ 24, 5, 681, 20, 383, 228, 1350, 386, 20, 20,
+ 1583, 20, 367, 368, 369, 1223, 650, 173, 24, 4,
+ 681, 20, 401, 657, 20, 3, 20, 947, 1478, 1369,
+ 1465, 1367, 1379, 5, 1378, 268, 7, 1370, 20, 20,
+ 14, 20, 62, 781, 29, 677, 296, 412, 1383, 1544,
+ 437, 453, 20, 463, 1607, 647, 42, 43, 472, 385,
+ 473, 20, 474, 1394, 1397, 477, 20, 1174, 1184, 53,
+ 1449, 114, 20, 410, 20, 322, 67, 5, 339, 62,
+ 673, 1403, 98, 1491, 1566, 343, 112, 113, 20, 20,
+ 20, 69, 126, 127, 471, 130, 1568, 20, 1256, 1492,
+ 336, 337, 7, 17, 67, 20, 133, 20, 378, 1075,
+ 350, 1422, 608, 609, 30, 507, 754, 610, 840, 69,
+ 1425, 1429, 4, 23, 104, 20, 512, 936, 1424, 1428,
+ 513, 478, 69, 20, 62, 937, 7, 7, 7, 158,
+ 257, 160, 529, 1601, 28, 44, 20, 69, 407, 1384,
+ 48, 1550, 1459, 166, 479, 1603, 55, 94, 188, 339,
+ 554, 20, 518, 752, 611, 577, 148, 1552, 1016, 587,
+ 588, 681, 938, 168, 246, 480, 593, 481, 62, 596,
+ 612, 194, 1469, 600, 1473, 1487, 1275, 208, 197, 940,
+ 1468, 1264, 1472, 634, 1016, 1362, 168, 681, 37, 339,
+ 217, 234, 652, 613, 1051, 408, 409, 28, 308, 4,
+ 62, 936, 3, 603, 62, 1450, 239, 62, 62, 937,
+ 302, 225, 133, 305, 874, 1533, 1066, 20, 67, 475,
+ 476, 482, 1535, 397, 69, 1358, 1537, 1538, 1593, 255,
+ 1159, 685, 1539, 1522, 20, 1540, 686, 202, 20, 1542,
+ 62, 300, 301, 849, 1594, 134, 20, 1076, 1322, 688,
+ 1052, 895, 1456, 1323, 939, 1553, 319, 1276, 402, 218,
+ 673, 530, 1556, 940, 702, 670, 946, 894, 333, 705,
+ 218, 1401, 708, 67, 1053, 20, 714, 37, 62, 569,
+ 251, 911, 717, 912, 673, 614, 1265, 913, 681, 677,
+ 483, 728, 731, 732, 1289, 733, 734, 1266, 736, 738,
+ 740, 742, 743, 744, 63, 62, 677, 942, 114, 943,
+ 1574, 1582, 1386, 790, 745, 1055, 69, 748, 1573, 1079,
+ 760, 766, 1007, 776, 876, 782, 20, 796, 37, 807,
+ 20, 1076, 812, 7, 813, 988, 366, 816, 817, 1015,
+ 62, 353, 821, 822, 823, 354, 824, 1009, 1048, 67,
+ 946, 791, 792, 793, 794, 1605, 825, 673, 1174, 758,
+ 69, 134, 1122, 790, 62, 828, 452, 1095, 831, 104,
+ 774, 834, 836, 104, 20, 1130, 256, 257, 7, 7,
+ 754, 20, 1220, 400, 869, 1067, 4, 1151, 1181, 790,
+ 62, 850, 69, 20, 62, 840, 69, 1230, 869, 69,
+ 69, 791, 792, 793, 794, 1563, 20, 1161, 1162, 758,
+ 20, 1033, 62, 20, 20, 840, 62, 470, 1406, 692,
+ 693, 1163, 697, 698, 699, 1075, 1275, 791, 792, 793,
+ 794, 758, 69, 1016, 1016, 758, 355, 681, 62, 937,
+ 875, 1068, 1338, 936, 774, 681, 20, 1341, 938, 1137,
+ 62, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 1541, 1275, 910, 1136, 775, 62, 1406, 356,
+ 69, 757, 1432, 207, 62, 772, 938, 7, 1461, 788,
+ 795, 210, 1194, 1547, 20, 62, 7, 511, 938, 67,
+ 869, 1016, 101, 940, 681, 869, 20, 69, 62, 525,
+ 1588, 1239, 1193, 694, 818, 940, 315, 1276, 1200, 102,
+ 62, 20, 949, 67, 936, 977, 971, 1281, 972, 1355,
+ 1283, 62, 937, 979, 984, 457, 248, 986, 586, 987,
+ 795, 1187, 413, 991, 1201, 414, 994, 942, 995, 67,
+ 775, 996, 62, 67, 997, 939, 20, 998, 103, 1127,
+ 999, 458, 868, 20, 1004, 1190, 795, 459, 1011, 938,
+ 1012, 67, 1523, 1017, 1021, 67, 415, 1499, 1503, 1029,
+ 20, 62, 1035, 973, 8, 1054, 940, 1265, 1069, 1077,
+ 1091, 1034, 69, 1368, 1346, 1034, 69, 67, 1266, 418,
+ 758, 1051, 62, 440, 759, 978, 20, 1098, 974, 67,
+ 20, 1099, 898, 901, 904, 907, 419, 1034, 69, 696,
+ 297, 975, 1125, 1565, 626, 629, 222, 633, 20, 1115,
+ 639, 1129, 20, 3, 885, 1202, 62, 254, 820, 1121,
+ 69, 156, 1295, 1479, 67, 1140, 231, 1203, 1555, 1185,
+ 128, 1480, 69, 104, 20, 1244, 1204, 1052, 1146, 765,
+ 1333, 673, 259, 1150, 768, 1154, 20, 1372, 1400, 69,
+ 1335, 1337, 1405, 946, 1095, 1408, 69, 969, 1112, 1567,
+ 67, 1053, 1205, 20, 153, 155, 155, 69, 328, 1165,
+ 20, 992, 571, 806, 572, 921, 772, 118, 691, 681,
+ 69, 20, 1578, 172, 269, 1167, 1353, 266, 1409, 62,
+ 1612, 1622, 69, 1245, 20, 62, 937, 788, 1595, 1086,
+ 122, 713, 194, 69, 1354, 271, 20, 119, 421, 1344,
+ 67, 722, 725, 1313, 120, 1392, 573, 20, 1602, 839,
+ 574, 1314, 1402, 870, 69, 835, 1482, 788, 100, 106,
+ 123, 1191, 1192, 938, 788, 1206, 1261, 124, 20, 62,
+ 963, 880, 1224, 759, 1355, 1527, 1526, 1188, 1233, 276,
+ 111, 1238, 1249, 69, 575, 1259, 20, 889, 758, 1267,
+ 168, 1417, 576, 1274, 423, 238, 1280, 20, 1414, 1282,
+ 1284, 406, 1457, 1104, 69, 1109, 1109, 1455, 1104, 425,
+ 1285, 886, 1025, 1286, 1297, 1436, 681, 1300, 20, 0,
+ 1301, 1302, 1262, 1307, 0, 1308, 0, 4, 838, 1311,
+ 0, 1312, 0, 788, 0, 1316, 1315, 840, 69, 0,
+ 1318, 1317, 0, 1320, 1319, 1216, 0, 1324, 0, 422,
+ 0, 1331, 20, 0, 1332, 465, 0, 0, 204, 0,
+ 0, 0, 169, 0, 0, 0, 841, 0, 67, 0,
+ 1175, 1178, 0, 0, 67, 0, 810, 985, 0, 205,
+ 220, 0, 1349, 0, 0, 0, 1356, 7, 104, 7,
+ 7, 0, 7, 842, 1365, 170, 781, 1376, 677, 843,
+ 230, 365, 0, 0, 0, 968, 844, 0, 845, 0,
+ 0, 69, 171, 461, 0, 462, 0, 69, 67, 1519,
+ 846, 233, 1521, 0, 0, 20, 0, 0, 1387, 0,
+ 0, 20, 847, 0, 806, 172, 311, 1016, 316, 0,
+ 681, 0, 325, 848, 0, 0, 391, 394, 0, 0,
+ 0, 759, 1413, 897, 900, 903, 906, 313, 0, 318,
+ 1415, 69, 563, 329, 1418, 7, 0, 543, 0, 0,
+ 1420, 0, 849, 173, 788, 20, 0, 62, 0, 544,
+ 0, 890, 0, 7, 545, 7, 7, 7, 7, 7,
+ 7, 0, 0, 0, 1431, 478, 1571, 0, 0, 1434,
+ 546, 1437, 0, 0, 1126, 1440, 0, 1443, 358, 0,
+ 1445, 0, 1447, 1451, 0, 0, 1330, 1454, 479, 494,
+ 495, 496, 497, 498, 499, 500, 501, 502, 503, 363,
+ 0, 0, 62, 937, 0, 1248, 0, 608, 609, 480,
+ 1464, 481, 610, 0, 547, 506, 0, 1466, 0, 0,
+ 1471, 1600, 0, 387, 508, 0, 1476, 0, 0, 548,
+ 549, 0, 478, 1157, 1490, 0, 0, 0, 625, 628,
+ 938, 632, 0, 0, 638, 1495, 1497, 1501, 0, 1504,
+ 1616, 1506, 0, 788, 788, 479, 1508, 940, 1509, 611,
+ 0, 1621, 1511, 416, 0, 482, 438, 454, 1514, 464,
+ 0, 1006, 1051, 0, 1517, 612, 480, 1520, 481, 0,
+ 1020, 1024, 7, 7, 424, 0, 1032, 451, 456, 0,
+ 467, 0, 0, 1534, 0, 0, 67, 1094, 613, 751,
+ 0, 1103, 763, 0, 550, 780, 0, 0, 1119, 805,
+ 788, 788, 690, 0, 0, 0, 0, 0, 0, 700,
+ 551, 0, 0, 0, 1559, 0, 0, 0, 1560, 1561,
+ 0, 1562, 482, 0, 483, 712, 0, 0, 0, 69,
+ 0, 1175, 788, 0, 0, 721, 724, 552, 1564, 553,
+ 1569, 67, 1053, 20, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1581, 0, 1306, 0, 0, 0, 1585, 0,
+ 0, 0, 788, 860, 788, 0, 556, 0, 0, 0,
+ 0, 578, 59, 60, 0, 0, 1591, 0, 1321, 1592,
+ 61, 62, 0, 1597, 69, 0, 63, 566, 0, 0,
+ 0, 483, 585, 0, 0, 0, 1493, 1494, 20, 635,
+ 0, 0, 10, 0, 0, 13, 16, 0, 20, 1608,
+ 0, 1609, 64, 516, 0, 519, 522, 0, 526, 0,
+ 636, 1614, 837, 1615, 0, 0, 0, 65, 0, 1617,
+ 0, 1618, 0, 0, 411, 1619, 1620, 0, 59, 60,
+ 0, 1624, 0, 0, 0, 0, 61, 62, 1625, 0,
+ 589, 0, 63, 1218, 0, 0, 594, 0, 0, 0,
+ 597, 0, 0, 601, 0, 605, 608, 609, 10, 0,
+ 132, 610, 0, 139, 140, 141, 142, 0, 64, 0,
+ 703, 143, 144, 145, 146, 706, 0, 0, 709, 0,
+ 0, 0, 715, 65, 0, 0, 0, 0, 718, 0,
+ 788, 704, 10, 10, 10, 0, 707, 729, 1304, 710,
+ 66, 0, 1310, 716, 0, 0, 936, 0, 611, 719,
+ 0, 0, 0, 62, 937, 0, 0, 0, 730, 0,
+ 67, 0, 186, 749, 612, 0, 761, 767, 0, 777,
+ 0, 783, 0, 798, 1045, 808, 0, 1064, 0, 0,
+ 814, 1089, 0, 0, 753, 0, 0, 613, 770, 0,
+ 68, 938, 786, 0, 0, 0, 811, 0, 0, 0,
+ 939, 815, 826, 69, 0, 0, 66, 0, 940, 0,
+ 70, 829, 0, 0, 832, 0, 0, 20, 0, 0,
+ 0, 0, 0, 827, 0, 922, 67, 926, 926, 0,
+ 931, 0, 830, 0, 0, 833, 0, 852, 0, 941,
+ 0, 0, 0, 0, 0, 0, 0, 1395, 1398, 0,
+ 0, 0, 942, 0, 943, 298, 68, 1404, 865, 517,
+ 0, 520, 523, 0, 527, 0, 944, 0, 0, 69,
+ 0, 84, 85, 86, 0, 945, 70, 0, 0, 614,
+ 0, 0, 0, 20, 0, 0, 0, 0, 1546, 87,
+ 88, 89, 0, 0, 0, 946, 590, 1169, 0, 0,
+ 0, 0, 595, 1026, 1426, 1430, 598, 0, 0, 602,
+ 0, 606, 0, 0, 947, 0, 847, 0, 90, 91,
+ 92, 394, 0, 1106, 926, 1110, 1110, 926, 1106, 0,
+ 0, 0, 0, 0, 0, 759, 1460, 0, 0, 10,
+ 0, 0, 0, 0, 1198, 69, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1226, 0, 0, 948, 951, 20,
+ 1235, 0, 0, 62, 1257, 0, 1470, 659, 1474, 980,
+ 0, 0, 0, 1586, 1587, 1485, 0, 660, 0, 965,
+ 0, 0, 0, 661, 10, 10, 0, 662, 0, 0,
+ 983, 663, 0, 426, 0, 0, 0, 0, 664, 0,
+ 665, 0, 427, 354, 0, 0, 1013, 428, 429, 0,
+ 666, 667, 668, 0, 1610, 0, 0, 0, 1037, 0,
+ 0, 1056, 0, 0, 1071, 1080, 430, 1014, 431, 0,
+ 0, 0, 1530, 0, 0, 0, 0, 0, 0, 1047,
+ 0, 0, 1065, 0, 0, 1073, 1090, 0, 0, 0,
+ 926, 506, 0, 0, 0, 0, 0, 10, 10, 10,
+ 10, 10, 10, 10, 10, 10, 10, 10, 1361, 0,
+ 0, 432, 433, 0, 0, 0, 1373, 0, 0, 1380,
+ 0, 434, 435, 10, 0, 0, 0, 0, 0, 0,
+ 0, 0, 10, 279, 0, 0, 280, 0, 0, 0,
+ 281, 282, 283, 284, 1575, 285, 1579, 286, 287, 0,
+ 0, 288, 0, 0, 0, 0, 0, 0, 436, 289,
+ 0, 0, 0, 0, 0, 0, 0, 0, 290, 0,
+ 0, 0, 0, 0, 291, 0, 0, 0, 0, 0,
+ 292, 1168, 293, 0, 0, 0, 0, 294, 0, 0,
+ 0, 0, 0, 0, 0, 69, 0, 0, 0, 0,
+ 0, 0, 1170, 0, 0, 0, 0, 0, 0, 20,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1435, 0, 1438, 0, 0, 0, 1441, 1195, 1444,
+ 0, 1208, 1446, 0, 1448, 0, 0, 0, 1225, 0,
+ 0, 0, 0, 0, 1234, 0, 0, 1240, 1250, 1199,
+ 0, 0, 1215, 0, 0, 1269, 0, 0, 0, 1227,
+ 0, 0, 0, 0, 0, 1237, 0, 0, 1247, 1258,
+ 0, 0, 0, 0, 0, 0, 1273, 532, 533, 534,
+ 535, 536, 537, 539, 540, 541, 542, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1325, 607, 0, 0, 0, 630, 0,
+ 0, 0, 0, 640, 641, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1328, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1543, 0, 0, 0, 0,
+ 0, 0, 1357, 0, 0, 0, 0, 0, 0, 0,
+ 1366, 0, 0, 1377, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1364, 0, 0, 0, 0, 0, 0,
+ 0, 1374, 0, 0, 1381, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1570, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 10, 0, 10, 10, 0, 10, 0,
+ 0, 0, 1477, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1481, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1536,
+ 0, 10, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,
+ 1545, 10, 10, 10, 10, 10, 10, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1173, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 10, 10
+};
+
+static const yytype_int16 yycheck[] =
+{
+ 25, 518, 216, 773, 213, 215, 680, 1003, 673, 476,
+ 199, 923, 677, 39, 39, 1217, 682, 908, 43, 789,
+ 213, 927, 47, 1003, 1113, 927, 927, 909, 53, 1138,
+ 544, 927, 57, 58, 927, 32, 24, 551, 927, 553,
+ 746, 1138, 6, 211, 75, 919, 235, 256, 237, 3,
+ 930, 1299, 930, 4, 934, 4, 934, 939, 930, 269,
+ 924, 935, 934, 934, 946, 6, 3, 3, 93, 3,
+ 4, 5, 6, 98, 3, 4, 5, 6, 246, 3,
+ 746, 1124, 392, 6, 3, 919, 75, 978, 113, 3,
+ 188, 1116, 117, 1393, 66, 4, 121, 4, 122, 773,
+ 125, 935, 127, 6, 3, 130, 131, 3, 133, 134,
+ 135, 3, 176, 71, 148, 4, 3, 3, 1450, 4,
+ 86, 238, 147, 196, 149, 72, 178, 930, 255, 117,
+ 104, 934, 157, 1015, 1076, 257, 226, 651, 228, 653,
+ 654, 655, 219, 131, 111, 775, 219, 19, 4, 0,
+ 1450, 236, 4, 272, 179, 3, 185, 116, 1100, 236,
+ 32, 867, 154, 236, 156, 795, 845, 242, 295, 284,
+ 195, 286, 236, 295, 199, 67, 295, 143, 295, 3,
+ 265, 139, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 1524, 167, 1396, 241, 1423, 295, 149, 150,
+ 1427, 265, 61, 104, 1229, 295, 115, 131, 115, 398,
+ 235, 89, 237, 242, 888, 162, 241, 1097, 295, 89,
+ 295, 89, 295, 888, 1524, 1097, 115, 181, 216, 217,
+ 115, 73, 131, 187, 170, 934, 224, 1117, 1116, 1117,
+ 194, 144, 273, 295, 1116, 1117, 1117, 89, 1120, 295,
+ 187, 187, 286, 278, 141, 141, 115, 99, 3, 115,
+ 89, 927, 941, 187, 295, 944, 167, 181, 187, 241,
+ 295, 295, 140, 187, 1156, 89, 301, 1111, 303, 93,
+ 4, 1483, 307, 170, 273, 181, 173, 173, 187, 599,
+ 199, 187, 201, 259, 201, 187, 1160, 182, 183, 184,
+ 187, 187, 161, 1412, 330, 330, 332, 332, 334, 334,
+ 1184, 336, 337, 1116, 1411, 1563, 342, 342, 344, 344,
+ 261, 245, 236, 295, 349, 197, 1217, 352, 295, 295,
+ 1532, 295, 320, 321, 322, 1105, 545, 260, 261, 187,
+ 236, 295, 367, 552, 295, 3, 295, 250, 1391, 1229,
+ 1375, 1229, 1232, 245, 1232, 214, 1, 1229, 295, 295,
+ 5, 295, 89, 192, 17, 194, 295, 392, 1248, 1458,
+ 395, 396, 295, 398, 1576, 543, 29, 30, 403, 247,
+ 405, 295, 407, 1265, 1266, 410, 295, 1052, 1067, 42,
+ 121, 115, 295, 390, 295, 237, 238, 245, 257, 89,
+ 148, 1275, 55, 1399, 1513, 264, 59, 60, 295, 295,
+ 295, 281, 65, 66, 402, 68, 1513, 295, 1117, 1399,
+ 276, 277, 67, 118, 238, 295, 126, 295, 338, 64,
+ 302, 1321, 71, 72, 117, 460, 181, 76, 157, 281,
+ 1322, 1323, 187, 6, 258, 295, 471, 82, 1322, 1323,
+ 475, 109, 281, 295, 89, 90, 101, 102, 103, 112,
+ 184, 114, 487, 1572, 4, 161, 295, 281, 378, 86,
+ 158, 1467, 1354, 126, 132, 1572, 160, 205, 131, 338,
+ 505, 295, 479, 672, 123, 510, 206, 1467, 233, 514,
+ 515, 236, 127, 77, 78, 153, 521, 155, 89, 524,
+ 139, 241, 1384, 528, 1386, 1396, 122, 160, 84, 144,
+ 1384, 63, 1386, 538, 233, 1221, 77, 236, 390, 378,
+ 210, 267, 547, 162, 159, 384, 385, 4, 83, 187,
+ 89, 82, 3, 530, 89, 266, 270, 89, 89, 90,
+ 164, 194, 126, 200, 758, 1457, 65, 295, 238, 408,
+ 409, 209, 1458, 85, 281, 1221, 1458, 1458, 1554, 212,
+ 1027, 586, 1458, 180, 295, 1458, 591, 294, 295, 1458,
+ 89, 224, 225, 292, 1554, 275, 295, 212, 169, 604,
+ 215, 790, 1352, 174, 136, 1475, 239, 203, 282, 279,
+ 148, 130, 1483, 144, 619, 151, 231, 790, 251, 624,
+ 279, 1275, 627, 238, 239, 295, 631, 479, 89, 287,
+ 150, 68, 637, 70, 148, 254, 168, 74, 236, 194,
+ 278, 646, 647, 648, 1138, 650, 651, 179, 653, 654,
+ 655, 656, 657, 658, 94, 89, 194, 188, 115, 190,
+ 1522, 1532, 259, 62, 669, 930, 281, 672, 1522, 934,
+ 675, 676, 221, 678, 106, 680, 295, 682, 530, 684,
+ 295, 212, 687, 308, 689, 104, 319, 692, 693, 138,
+ 89, 125, 697, 698, 699, 129, 701, 256, 166, 238,
+ 231, 100, 101, 102, 103, 1576, 711, 148, 1353, 108,
+ 281, 275, 274, 62, 89, 720, 177, 243, 723, 258,
+ 95, 726, 727, 258, 295, 269, 183, 184, 353, 354,
+ 181, 295, 284, 366, 286, 234, 187, 264, 98, 62,
+ 89, 746, 281, 295, 89, 157, 281, 165, 286, 281,
+ 281, 100, 101, 102, 103, 1505, 295, 26, 27, 108,
+ 295, 110, 89, 295, 295, 157, 89, 400, 114, 608,
+ 609, 40, 611, 612, 613, 64, 122, 100, 101, 102,
+ 103, 108, 281, 233, 233, 108, 220, 236, 89, 90,
+ 758, 290, 97, 82, 95, 236, 295, 224, 127, 988,
+ 89, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 1458, 122, 819, 988, 191, 89, 114, 253,
+ 281, 673, 178, 158, 89, 677, 127, 452, 248, 681,
+ 229, 166, 1097, 249, 295, 89, 461, 470, 127, 238,
+ 286, 233, 107, 144, 236, 286, 295, 281, 89, 482,
+ 105, 1116, 1097, 610, 695, 144, 237, 203, 87, 124,
+ 89, 295, 867, 238, 82, 137, 871, 1131, 873, 272,
+ 1134, 89, 90, 878, 879, 23, 211, 882, 511, 884,
+ 229, 1075, 392, 888, 113, 392, 891, 188, 893, 238,
+ 191, 896, 89, 238, 899, 136, 295, 902, 163, 970,
+ 905, 49, 754, 295, 909, 1095, 229, 55, 913, 127,
+ 915, 238, 1449, 918, 919, 238, 392, 1411, 1412, 924,
+ 295, 89, 927, 9, 1, 930, 144, 168, 933, 934,
+ 935, 280, 281, 1229, 1205, 280, 281, 238, 179, 392,
+ 108, 159, 89, 395, 271, 217, 295, 938, 34, 238,
+ 295, 938, 791, 792, 793, 794, 392, 280, 281, 610,
+ 224, 47, 967, 1513, 533, 534, 179, 536, 295, 945,
+ 539, 976, 295, 3, 774, 204, 89, 212, 695, 947,
+ 281, 103, 1143, 1391, 238, 990, 199, 216, 1482, 1068,
+ 67, 1391, 281, 258, 295, 1116, 225, 215, 1003, 146,
+ 1190, 148, 213, 1008, 676, 1010, 295, 1229, 1275, 281,
+ 1200, 1201, 1276, 231, 243, 1279, 281, 869, 943, 1513,
+ 238, 239, 251, 295, 101, 102, 103, 281, 241, 1034,
+ 295, 888, 145, 230, 147, 842, 888, 20, 607, 236,
+ 281, 295, 1524, 222, 223, 1050, 214, 214, 1279, 89,
+ 1590, 1613, 281, 1116, 295, 89, 90, 909, 1555, 934,
+ 20, 630, 241, 281, 232, 215, 295, 50, 392, 1204,
+ 238, 640, 641, 1166, 57, 1264, 189, 295, 1572, 69,
+ 193, 1166, 1275, 755, 281, 726, 176, 939, 57, 58,
+ 50, 1096, 1097, 127, 946, 1100, 1120, 57, 295, 89,
+ 867, 773, 1107, 271, 272, 195, 1449, 1075, 1113, 216,
+ 58, 1116, 1117, 281, 227, 1120, 295, 789, 108, 1124,
+ 77, 1296, 235, 1128, 392, 201, 1131, 295, 1294, 1134,
+ 1135, 369, 1353, 940, 281, 942, 943, 1352, 945, 392,
+ 170, 774, 919, 173, 1149, 1335, 236, 1152, 295, -1,
+ 1155, 1156, 1120, 1158, -1, 1160, -1, 187, 727, 1164,
+ -1, 1166, -1, 1015, -1, 1171, 1171, 157, 281, -1,
+ 1176, 1176, -1, 1179, 1179, 265, -1, 1182, -1, 392,
+ -1, 1186, 295, -1, 1189, 398, -1, -1, 157, -1,
+ -1, -1, 149, -1, -1, -1, 186, -1, 238, -1,
+ 1052, 1053, -1, -1, 238, -1, 684, 879, -1, 157,
+ 179, -1, 1217, -1, -1, -1, 1221, 842, 258, 844,
+ 845, -1, 847, 213, 1229, 182, 192, 1232, 194, 219,
+ 199, 308, -1, -1, -1, 868, 226, -1, 228, -1,
+ -1, 281, 199, 283, -1, 285, -1, 281, 238, 1439,
+ 240, 199, 1442, -1, -1, 295, -1, -1, 1263, -1,
+ -1, 295, 252, -1, 230, 222, 235, 233, 237, -1,
+ 236, -1, 241, 263, -1, -1, 353, 354, -1, -1,
+ -1, 271, 1287, 791, 792, 793, 794, 235, -1, 237,
+ 1295, 281, 505, 241, 1299, 920, -1, 79, -1, -1,
+ 1305, -1, 292, 260, 1156, 295, -1, 89, -1, 91,
+ -1, 789, -1, 938, 96, 940, 941, 942, 943, 944,
+ 945, -1, -1, -1, 1329, 109, 1516, -1, -1, 1334,
+ 112, 1336, -1, -1, 967, 1340, -1, 1342, 307, -1,
+ 1345, -1, 1347, 1348, -1, -1, 1185, 1352, 132, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 307,
+ -1, -1, 89, 90, -1, 92, -1, 71, 72, 153,
+ 1375, 155, 76, -1, 156, 452, -1, 1382, -1, -1,
+ 1385, 1571, -1, 352, 461, -1, 1391, -1, -1, 171,
+ 172, -1, 109, 1026, 1399, -1, -1, -1, 533, 534,
+ 127, 536, -1, -1, 539, 1410, 1411, 1412, -1, 1414,
+ 1600, 1416, -1, 1265, 1266, 132, 1421, 144, 1423, 123,
+ -1, 1611, 1427, 392, -1, 209, 395, 396, 1433, 398,
+ -1, 909, 159, -1, 1439, 139, 153, 1442, 155, -1,
+ 918, 919, 1067, 1068, 392, -1, 924, 395, 396, -1,
+ 398, -1, -1, 1458, -1, -1, 238, 935, 162, 672,
+ -1, 939, 675, -1, 246, 678, -1, -1, 946, 682,
+ 1322, 1323, 607, -1, -1, -1, -1, -1, -1, 614,
+ 262, -1, -1, -1, 1489, -1, -1, -1, 1493, 1494,
+ -1, 1496, 209, -1, 278, 630, -1, -1, -1, 281,
+ -1, 1353, 1354, -1, -1, 640, 641, 289, 1513, 291,
+ 1515, 238, 239, 295, -1, -1, -1, -1, -1, -1,
+ -1, -1, 1527, -1, 1157, -1, -1, -1, 1533, -1,
+ -1, -1, 1384, 746, 1386, -1, 505, -1, -1, -1,
+ -1, 510, 80, 81, -1, -1, 1551, -1, 1181, 1554,
+ 88, 89, -1, 1558, 281, -1, 94, 505, -1, -1,
+ -1, 278, 510, -1, -1, -1, 1405, 1406, 295, 538,
+ -1, -1, 1, -1, -1, 4, 5, -1, 295, 1584,
+ -1, 1586, 120, 478, -1, 480, 481, -1, 483, -1,
+ 538, 1596, 727, 1598, -1, -1, -1, 135, -1, 1604,
+ -1, 1606, -1, -1, 142, 1610, 1611, -1, 80, 81,
+ -1, 1616, -1, -1, -1, -1, 88, 89, 1623, -1,
+ 515, -1, 94, 1101, -1, -1, 521, -1, -1, -1,
+ 525, -1, -1, 528, -1, 530, 71, 72, 67, -1,
+ 69, 76, -1, 35, 36, 37, 38, -1, 120, -1,
+ 619, 43, 44, 45, 46, 624, -1, -1, 627, -1,
+ -1, -1, 631, 135, -1, -1, -1, -1, 637, -1,
+ 1522, 619, 101, 102, 103, -1, 624, 646, 1156, 627,
+ 218, -1, 1160, 631, -1, -1, 82, -1, 123, 637,
+ -1, -1, -1, 89, 90, -1, -1, -1, 646, -1,
+ 238, -1, 131, 672, 139, -1, 675, 676, -1, 678,
+ -1, 680, -1, 682, 927, 684, -1, 930, -1, -1,
+ 689, 934, -1, -1, 672, -1, -1, 162, 676, -1,
+ 268, 127, 680, -1, -1, -1, 684, -1, -1, -1,
+ 136, 689, 711, 281, -1, -1, 218, -1, 144, -1,
+ 288, 720, -1, -1, 723, -1, -1, 295, -1, -1,
+ -1, -1, -1, 711, -1, 842, 238, 844, 845, -1,
+ 847, -1, 720, -1, -1, 723, -1, 746, -1, 175,
+ -1, -1, -1, -1, -1, -1, -1, 1265, 1266, -1,
+ -1, -1, 188, -1, 190, 224, 268, 1275, 746, 478,
+ -1, 480, 481, -1, 483, -1, 202, -1, -1, 281,
+ -1, 11, 12, 13, -1, 211, 288, -1, -1, 254,
+ -1, -1, -1, 295, -1, -1, -1, -1, 1461, 29,
+ 30, 31, -1, -1, -1, 231, 515, 1050, -1, -1,
+ -1, -1, 521, 920, 1322, 1323, 525, -1, -1, 528,
+ -1, 530, -1, -1, 250, -1, 252, -1, 58, 59,
+ 60, 938, -1, 940, 941, 942, 943, 944, 945, -1,
+ -1, -1, -1, -1, -1, 271, 1354, -1, -1, 308,
+ -1, -1, -1, -1, 1097, 281, -1, -1, -1, -1,
+ -1, -1, -1, -1, 1107, -1, -1, 293, 867, 295,
+ 1113, -1, -1, 89, 1117, -1, 1384, 8, 1386, 878,
+ -1, -1, -1, 1546, 1547, 1393, -1, 18, -1, 867,
+ -1, -1, -1, 24, 353, 354, -1, 28, -1, -1,
+ 878, 32, -1, 119, -1, -1, -1, -1, 39, -1,
+ 41, -1, 128, 129, -1, -1, 915, 133, 134, -1,
+ 51, 52, 53, -1, 1587, -1, -1, -1, 927, -1,
+ -1, 930, -1, -1, 933, 934, 152, 915, 154, -1,
+ -1, -1, 1450, -1, -1, -1, -1, -1, -1, 927,
+ -1, -1, 930, -1, -1, 933, 934, -1, -1, -1,
+ 1067, 1068, -1, -1, -1, -1, -1, 426, 427, 428,
+ 429, 430, 431, 432, 433, 434, 435, 436, 1221, -1,
+ -1, 197, 198, -1, -1, -1, 1229, -1, -1, 1232,
+ -1, 207, 208, 452, -1, -1, -1, -1, -1, -1,
+ -1, -1, 461, 7, -1, -1, 10, -1, -1, -1,
+ 14, 15, 16, 17, 1522, 19, 1524, 21, 22, -1,
+ -1, 25, -1, -1, -1, -1, -1, -1, 244, 33,
+ -1, -1, -1, -1, -1, -1, -1, -1, 42, -1,
+ -1, -1, -1, -1, 48, -1, -1, -1, -1, -1,
+ 54, 1050, 56, -1, -1, -1, -1, 61, -1, -1,
+ -1, -1, -1, -1, -1, 281, -1, -1, -1, -1,
+ -1, -1, 1050, -1, -1, -1, -1, -1, -1, 295,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 1334, -1, 1336, -1, -1, -1, 1340, 1097, 1342,
+ -1, 1100, 1345, -1, 1347, -1, -1, -1, 1107, -1,
+ -1, -1, -1, -1, 1113, -1, -1, 1116, 1117, 1097,
+ -1, -1, 1100, -1, -1, 1124, -1, -1, -1, 1107,
+ -1, -1, -1, -1, -1, 1113, -1, -1, 1116, 1117,
+ -1, -1, -1, -1, -1, -1, 1124, 494, 495, 496,
+ 497, 498, 499, 500, 501, 502, 503, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 1182, 531, -1, -1, -1, 535, -1,
+ -1, -1, -1, 540, 541, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 1182, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 1458, -1, -1, -1, -1,
+ -1, -1, 1221, -1, -1, -1, -1, -1, -1, -1,
+ 1229, -1, -1, 1232, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 1221, -1, -1, -1, -1, -1, -1,
+ -1, 1229, -1, -1, 1232, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 1515, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 842, -1, 844, 845, -1, 847, -1,
+ -1, -1, 1391, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 1391, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 1458,
+ -1, 920, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 938,
+ 1458, 940, 941, 942, 943, 944, 945, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 1051, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 1067, 1068
+};
+
+ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
+static const yytype_uint16 yystos[] =
+{
+ 0, 116, 298, 3, 187, 245, 300, 549, 551, 663,
+ 764, 0, 550, 764, 549, 664, 764, 118, 302, 111,
+ 295, 297, 395, 6, 261, 665, 695, 765, 4, 766,
+ 117, 301, 131, 396, 423, 426, 549, 552, 764, 698,
+ 765, 297, 766, 766, 161, 488, 423, 427, 158, 397,
+ 483, 297, 395, 766, 297, 160, 487, 489, 299, 80,
+ 81, 88, 89, 94, 120, 135, 218, 238, 268, 281,
+ 288, 297, 333, 334, 349, 350, 359, 407, 439, 609,
+ 650, 711, 737, 754, 11, 12, 13, 29, 30, 31,
+ 58, 59, 60, 484, 205, 398, 587, 297, 766, 297,
+ 350, 107, 124, 163, 258, 297, 350, 384, 416, 495,
+ 690, 737, 766, 766, 115, 670, 766, 351, 20, 50,
+ 57, 360, 20, 50, 57, 408, 766, 766, 551, 652,
+ 766, 738, 764, 126, 275, 332, 419, 728, 297, 35,
+ 36, 37, 38, 43, 44, 45, 46, 588, 206, 399,
+ 589, 297, 388, 551, 493, 551, 493, 691, 766, 297,
+ 766, 670, 297, 765, 297, 297, 766, 297, 77, 149,
+ 182, 199, 222, 260, 327, 468, 538, 576, 614, 651,
+ 696, 729, 297, 5, 297, 445, 764, 765, 766, 767,
+ 297, 297, 297, 297, 241, 620, 297, 84, 339, 385,
+ 301, 301, 294, 297, 350, 737, 762, 327, 766, 670,
+ 327, 328, 469, 539, 577, 615, 697, 210, 279, 297,
+ 350, 596, 650, 734, 446, 766, 297, 341, 552, 297,
+ 350, 650, 690, 737, 267, 417, 709, 496, 709, 270,
+ 715, 763, 297, 297, 297, 297, 78, 297, 327, 329,
+ 332, 150, 297, 466, 468, 766, 183, 184, 297, 538,
+ 540, 542, 543, 670, 201, 297, 576, 578, 670, 223,
+ 297, 614, 616, 620, 297, 695, 696, 765, 765, 7,
+ 10, 14, 15, 16, 17, 19, 21, 22, 25, 33,
+ 42, 48, 54, 56, 61, 735, 295, 445, 764, 765,
+ 766, 766, 164, 340, 497, 200, 580, 710, 83, 297,
+ 336, 350, 690, 737, 297, 336, 350, 690, 737, 766,
+ 73, 99, 237, 297, 320, 350, 368, 646, 650, 737,
+ 330, 332, 467, 766, 541, 542, 276, 277, 544, 670,
+ 730, 731, 579, 670, 617, 620, 297, 297, 297, 494,
+ 552, 297, 581, 125, 129, 220, 253, 297, 350, 389,
+ 418, 420, 680, 737, 338, 551, 766, 765, 765, 765,
+ 297, 395, 297, 395, 297, 395, 297, 297, 544, 297,
+ 395, 297, 395, 297, 140, 247, 297, 350, 449, 669,
+ 491, 551, 421, 422, 551, 390, 681, 85, 337, 342,
+ 766, 297, 282, 369, 741, 647, 741, 544, 670, 670,
+ 423, 142, 297, 333, 334, 349, 350, 359, 407, 439,
+ 451, 609, 650, 711, 737, 754, 119, 128, 133, 134,
+ 152, 154, 197, 198, 207, 208, 244, 297, 350, 405,
+ 420, 432, 435, 437, 472, 476, 572, 574, 590, 592,
+ 661, 737, 177, 297, 350, 526, 737, 23, 49, 55,
+ 343, 283, 285, 297, 350, 650, 690, 737, 742, 746,
+ 766, 765, 297, 297, 297, 670, 670, 297, 109, 132,
+ 153, 155, 209, 278, 391, 428, 434, 452, 474, 478,
+ 594, 732, 551, 668, 668, 668, 668, 668, 668, 668,
+ 668, 668, 668, 668, 516, 527, 551, 297, 551, 748,
+ 747, 766, 297, 297, 734, 392, 428, 434, 423, 428,
+ 434, 475, 428, 434, 479, 766, 428, 434, 733, 297,
+ 130, 424, 424, 424, 424, 424, 424, 424, 573, 424,
+ 424, 424, 424, 79, 91, 96, 112, 156, 171, 172,
+ 246, 262, 289, 291, 297, 331, 350, 354, 363, 400,
+ 480, 512, 514, 650, 666, 699, 737, 755, 757, 287,
+ 752, 145, 147, 189, 193, 227, 235, 297, 350, 458,
+ 462, 555, 563, 625, 640, 737, 766, 297, 297, 428,
+ 434, 429, 497, 297, 428, 434, 297, 428, 434, 595,
+ 297, 428, 434, 423, 425, 428, 434, 424, 71, 72,
+ 76, 123, 139, 162, 254, 318, 319, 324, 415, 433,
+ 448, 492, 656, 682, 436, 656, 682, 438, 656, 682,
+ 424, 477, 656, 682, 297, 350, 737, 575, 656, 682,
+ 424, 424, 185, 242, 545, 657, 662, 332, 517, 552,
+ 542, 401, 297, 513, 515, 667, 517, 542, 517, 8,
+ 18, 24, 28, 32, 39, 41, 51, 52, 53, 753,
+ 151, 470, 743, 148, 456, 459, 463, 194, 556, 567,
+ 564, 236, 626, 644, 641, 297, 297, 359, 297, 406,
+ 656, 682, 670, 670, 318, 325, 448, 670, 670, 670,
+ 656, 683, 297, 350, 737, 297, 350, 737, 297, 350,
+ 737, 473, 656, 682, 297, 350, 737, 297, 350, 737,
+ 591, 656, 682, 593, 656, 682, 546, 658, 297, 350,
+ 737, 297, 297, 297, 297, 517, 297, 517, 297, 517,
+ 297, 517, 297, 297, 297, 297, 471, 93, 297, 350,
+ 355, 650, 690, 737, 181, 465, 536, 552, 108, 271,
+ 297, 350, 386, 650, 716, 146, 297, 350, 456, 460,
+ 737, 536, 552, 566, 95, 191, 297, 350, 361, 559,
+ 650, 192, 297, 350, 561, 567, 737, 536, 552, 643,
+ 62, 100, 101, 102, 103, 229, 297, 303, 350, 370,
+ 372, 374, 376, 386, 629, 650, 230, 297, 350, 631,
+ 644, 737, 297, 297, 350, 737, 297, 297, 319, 326,
+ 492, 297, 297, 297, 297, 297, 350, 737, 297, 350,
+ 737, 297, 350, 737, 297, 657, 297, 656, 682, 69,
+ 157, 186, 213, 219, 226, 228, 240, 252, 263, 292,
+ 297, 315, 350, 386, 481, 547, 602, 610, 623, 627,
+ 650, 654, 678, 700, 716, 737, 758, 356, 552, 286,
+ 456, 457, 750, 387, 695, 765, 106, 382, 717, 461,
+ 456, 567, 568, 750, 362, 466, 766, 382, 562, 456,
+ 644, 645, 750, 304, 540, 542, 371, 578, 670, 373,
+ 578, 670, 375, 578, 670, 377, 578, 670, 382, 632,
+ 297, 68, 70, 74, 314, 316, 317, 321, 482, 548,
+ 67, 312, 551, 739, 611, 312, 551, 624, 642, 642,
+ 655, 551, 677, 679, 701, 759, 82, 90, 127, 136,
+ 144, 175, 188, 190, 202, 211, 231, 250, 293, 297,
+ 335, 350, 352, 430, 440, 454, 522, 553, 557, 582,
+ 597, 633, 673, 678, 716, 737, 760, 537, 766, 552,
+ 749, 297, 297, 9, 34, 47, 383, 137, 217, 297,
+ 350, 443, 607, 737, 297, 456, 297, 297, 104, 378,
+ 560, 297, 566, 567, 297, 297, 297, 297, 297, 297,
+ 167, 378, 502, 630, 297, 643, 644, 221, 612, 256,
+ 686, 297, 297, 350, 737, 138, 233, 297, 447, 637,
+ 644, 297, 481, 637, 644, 758, 551, 729, 196, 297,
+ 570, 610, 644, 110, 280, 297, 303, 350, 370, 372,
+ 374, 376, 386, 393, 629, 650, 736, 737, 166, 500,
+ 628, 159, 215, 239, 297, 335, 350, 352, 430, 454,
+ 485, 600, 633, 648, 650, 737, 65, 234, 290, 297,
+ 309, 350, 639, 737, 756, 64, 212, 297, 307, 335,
+ 350, 352, 430, 454, 485, 599, 600, 633, 648, 650,
+ 737, 297, 481, 637, 644, 243, 659, 353, 422, 426,
+ 431, 441, 643, 644, 312, 464, 551, 523, 642, 312,
+ 551, 565, 565, 583, 642, 464, 598, 634, 643, 644,
+ 674, 765, 274, 726, 761, 297, 766, 339, 751, 297,
+ 269, 444, 712, 378, 608, 379, 540, 542, 75, 273,
+ 297, 322, 724, 503, 540, 542, 297, 322, 724, 613,
+ 297, 264, 687, 702, 297, 643, 638, 766, 603, 734,
+ 571, 26, 27, 40, 394, 297, 501, 297, 350, 650,
+ 737, 486, 490, 764, 536, 552, 601, 740, 552, 649,
+ 653, 98, 310, 366, 642, 516, 308, 695, 765, 659,
+ 620, 297, 297, 307, 335, 350, 430, 454, 650, 737,
+ 87, 113, 204, 216, 225, 251, 297, 347, 350, 402,
+ 585, 605, 621, 659, 675, 737, 265, 442, 644, 704,
+ 284, 455, 744, 750, 297, 350, 650, 737, 481, 554,
+ 165, 498, 558, 297, 350, 650, 736, 737, 297, 335,
+ 350, 352, 454, 553, 557, 599, 633, 737, 92, 297,
+ 350, 352, 357, 430, 454, 485, 648, 650, 737, 297,
+ 454, 673, 765, 727, 63, 168, 179, 297, 305, 350,
+ 440, 504, 530, 737, 297, 122, 203, 413, 584, 713,
+ 297, 413, 297, 413, 297, 170, 173, 323, 510, 517,
+ 518, 510, 517, 518, 725, 503, 257, 297, 688, 703,
+ 297, 297, 297, 643, 644, 313, 766, 297, 297, 610,
+ 644, 297, 297, 623, 627, 297, 395, 297, 395, 297,
+ 395, 766, 169, 174, 297, 350, 508, 520, 737, 637,
+ 670, 297, 297, 620, 660, 620, 403, 620, 97, 364,
+ 586, 224, 606, 618, 618, 622, 364, 676, 705, 297,
+ 378, 502, 745, 214, 232, 272, 297, 350, 386, 604,
+ 635, 650, 716, 718, 737, 297, 350, 352, 361, 430,
+ 454, 553, 559, 650, 737, 499, 297, 350, 352, 430,
+ 650, 737, 358, 430, 86, 143, 259, 297, 344, 453,
+ 692, 306, 542, 505, 643, 644, 531, 643, 644, 414,
+ 561, 567, 631, 637, 644, 413, 114, 404, 413, 584,
+ 714, 511, 519, 297, 725, 297, 689, 702, 297, 718,
+ 297, 367, 404, 509, 637, 643, 644, 521, 637, 643,
+ 644, 297, 178, 528, 297, 650, 620, 297, 650, 365,
+ 297, 650, 619, 297, 650, 297, 650, 297, 650, 121,
+ 266, 297, 409, 706, 297, 744, 750, 740, 636, 643,
+ 644, 248, 671, 719, 297, 553, 297, 345, 637, 643,
+ 644, 297, 637, 643, 644, 693, 297, 350, 440, 504,
+ 530, 737, 176, 506, 524, 644, 704, 378, 502, 532,
+ 297, 322, 724, 670, 670, 297, 141, 297, 450, 517,
+ 518, 297, 510, 517, 297, 255, 297, 684, 297, 297,
+ 528, 297, 528, 529, 297, 348, 66, 297, 311, 620,
+ 297, 620, 180, 344, 410, 533, 692, 195, 524, 569,
+ 644, 704, 707, 729, 297, 303, 350, 370, 372, 374,
+ 376, 386, 629, 650, 736, 737, 766, 249, 672, 720,
+ 322, 346, 724, 404, 694, 517, 378, 502, 507, 297,
+ 297, 297, 297, 750, 297, 450, 510, 517, 518, 297,
+ 650, 620, 534, 637, 643, 644, 411, 524, 569, 644,
+ 704, 297, 378, 502, 708, 297, 766, 766, 105, 380,
+ 721, 297, 297, 322, 724, 497, 525, 297, 685, 718,
+ 620, 510, 517, 518, 535, 378, 412, 502, 297, 297,
+ 766, 381, 587, 722, 297, 297, 620, 297, 297, 297,
+ 297, 620, 589, 723, 297, 297
+};
+
+ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const yytype_uint16 yyr1[] =
+{
+ 0, 296, 297, 298, 299, 299, 299, 299, 299, 299,
+ 299, 300, 301, 302, 303, 304, 304, 305, 306, 306,
+ 306, 306, 306, 306, 307, 308, 308, 309, 310, 310,
+ 310, 310, 310, 311, 312, 313, 313, 314, 315, 316,
+ 316, 316, 316, 316, 317, 318, 319, 320, 321, 322,
+ 323, 323, 323, 324, 325, 325, 326, 326, 327, 328,
+ 328, 328, 328, 329, 330, 330, 331, 332, 332, 333,
+ 334, 335, 336, 337, 337, 337, 337, 337, 337, 337,
+ 338, 339, 340, 340, 341, 342, 343, 343, 343, 344,
+ 345, 345, 345, 346, 346, 346, 347, 348, 348, 349,
+ 350, 351, 351, 352, 353, 353, 353, 353, 353, 353,
+ 353, 353, 354, 355, 356, 356, 356, 356, 356, 356,
+ 356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
+ 356, 356, 357, 358, 358, 359, 360, 360, 360, 361,
+ 362, 362, 363, 364, 365, 365, 365, 366, 367, 367,
+ 368, 369, 369, 370, 371, 371, 372, 373, 373, 374,
+ 375, 375, 376, 377, 377, 378, 379, 379, 380, 381,
+ 381, 382, 383, 383, 383, 384, 385, 385, 385, 385,
+ 385, 386, 387, 387, 388, 389, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 391, 392, 392, 392, 392, 393, 394, 394, 394,
+ 395, 396, 396, 397, 397, 398, 398, 399, 399, 400,
+ 401, 401, 402, 403, 403, 404, 405, 406, 406, 406,
+ 406, 407, 408, 408, 408, 409, 410, 410, 410, 411,
+ 411, 411, 411, 412, 412, 412, 413, 414, 414, 414,
+ 414, 414, 414, 414, 415, 416, 417, 417, 417, 417,
+ 417, 418, 419, 420, 421, 421, 421, 421, 421, 421,
+ 421, 421, 421, 421, 421, 421, 421, 421, 422, 423,
+ 424, 425, 425, 425, 426, 427, 427, 427, 427, 427,
+ 427, 427, 427, 427, 427, 427, 427, 427, 428, 429,
+ 429, 430, 431, 431, 431, 431, 431, 431, 431, 431,
+ 431, 431, 431, 432, 433, 433, 433, 433, 434, 434,
+ 434, 434, 434, 435, 436, 436, 436, 436, 437, 438,
+ 438, 438, 438, 439, 440, 441, 441, 442, 442, 442,
+ 442, 443, 444, 444, 445, 446, 446, 446, 446, 446,
+ 447, 448, 449, 450, 451, 452, 452, 453, 454, 455,
+ 455, 455, 455, 455, 455, 455, 455, 455, 455, 456,
+ 457, 457, 457, 458, 459, 459, 459, 459, 459, 460,
+ 461, 461, 462, 463, 463, 463, 463, 463, 464, 464,
+ 465, 465, 466, 467, 467, 468, 469, 469, 469, 469,
+ 470, 471, 471, 471, 471, 471, 471, 471, 471, 471,
+ 471, 471, 471, 471, 471, 471, 471, 471, 472, 473,
+ 473, 473, 473, 474, 475, 475, 475, 475, 476, 477,
+ 477, 477, 477, 478, 479, 479, 480, 481, 482, 482,
+ 482, 482, 483, 484, 484, 484, 484, 484, 484, 484,
+ 484, 484, 485, 486, 486, 487, 488, 489, 489, 490,
+ 491, 492, 493, 494, 495, 496, 496, 496, 496, 496,
+ 497, 498, 499, 499, 500, 501, 501, 501, 502, 503,
+ 503, 504, 505, 505, 506, 506, 506, 507, 507, 507,
+ 508, 509, 509, 509, 509, 510, 511, 511, 511, 511,
+ 512, 513, 513, 514, 515, 515, 516, 517, 518, 519,
+ 519, 519, 520, 521, 521, 521, 521, 522, 523, 523,
+ 523, 523, 524, 525, 525, 526, 527, 527, 527, 527,
+ 527, 527, 527, 527, 527, 527, 527, 527, 527, 527,
+ 527, 528, 529, 529, 529, 529, 529, 530, 531, 531,
+ 532, 532, 532, 533, 534, 534, 534, 535, 535, 535,
+ 536, 537, 537, 538, 539, 539, 539, 539, 540, 541,
+ 541, 542, 542, 543, 544, 544, 544, 545, 546, 546,
+ 547, 548, 548, 548, 548, 548, 549, 550, 550, 551,
+ 551, 551, 552, 552, 553, 554, 554, 554, 554, 554,
+ 554, 554, 554, 554, 554, 555, 556, 556, 556, 556,
+ 556, 557, 558, 558, 558, 558, 558, 558, 559, 560,
+ 560, 560, 561, 562, 562, 562, 563, 564, 564, 564,
+ 564, 564, 565, 565, 566, 566, 567, 568, 568, 568,
+ 568, 569, 570, 571, 571, 571, 572, 573, 573, 573,
+ 574, 575, 575, 575, 575, 576, 577, 577, 577, 577,
+ 578, 579, 579, 580, 581, 581, 581, 581, 582, 583,
+ 583, 583, 583, 583, 584, 585, 586, 586, 587, 588,
+ 588, 588, 588, 588, 588, 588, 588, 589, 590, 591,
+ 591, 591, 591, 592, 593, 593, 593, 593, 594, 595,
+ 595, 596, 597, 598, 598, 598, 598, 598, 598, 598,
+ 598, 598, 598, 599, 600, 601, 601, 602, 603, 603,
+ 604, 605, 606, 606, 607, 608, 608, 609, 610, 611,
+ 611, 611, 611, 612, 613, 613, 614, 615, 615, 615,
+ 615, 616, 617, 617, 618, 619, 619, 620, 621, 622,
+ 622, 623, 624, 624, 624, 624, 624, 624, 624, 624,
+ 624, 624, 624, 624, 624, 625, 626, 626, 626, 626,
+ 626, 626, 626, 626, 626, 626, 627, 628, 628, 628,
+ 628, 629, 630, 630, 630, 630, 631, 632, 632, 632,
+ 633, 634, 634, 634, 634, 634, 634, 634, 634, 634,
+ 634, 634, 635, 636, 636, 636, 636, 636, 636, 636,
+ 636, 636, 636, 636, 636, 636, 637, 638, 638, 638,
+ 639, 640, 641, 641, 641, 641, 641, 642, 642, 643,
+ 643, 644, 645, 645, 645, 645, 646, 647, 647, 648,
+ 649, 649, 650, 651, 651, 651, 651, 651, 652, 653,
+ 654, 655, 655, 655, 655, 655, 655, 655, 655, 655,
+ 655, 655, 655, 656, 656, 656, 656, 656, 656, 657,
+ 658, 658, 658, 659, 660, 660, 661, 662, 662, 662,
+ 662, 663, 664, 664, 665, 665, 666, 667, 667, 668,
+ 669, 670, 670, 671, 672, 673, 674, 674, 674, 674,
+ 675, 676, 676, 677, 678, 679, 679, 679, 679, 679,
+ 679, 680, 681, 681, 681, 681, 682, 683, 683, 684,
+ 685, 685, 686, 687, 687, 688, 689, 689, 690, 691,
+ 691, 691, 691, 692, 693, 693, 693, 694, 694, 694,
+ 695, 696, 697, 697, 697, 697, 698, 698, 699, 700,
+ 701, 701, 701, 701, 701, 701, 701, 701, 701, 701,
+ 701, 701, 701, 701, 702, 703, 703, 704, 705, 705,
+ 705, 706, 707, 707, 707, 707, 708, 708, 708, 709,
+ 710, 710, 710, 710, 710, 710, 710, 711, 712, 713,
+ 713, 714, 714, 714, 715, 716, 717, 717, 717, 717,
+ 717, 718, 719, 719, 720, 720, 721, 721, 722, 722,
+ 723, 723, 724, 725, 725, 725, 726, 727, 727, 727,
+ 727, 728, 729, 729, 729, 729, 729, 729, 730, 731,
+ 732, 733, 733, 733, 733, 734, 735, 735, 735, 735,
+ 735, 735, 735, 735, 735, 735, 735, 735, 735, 735,
+ 735, 735, 736, 737, 738, 738, 738, 738, 738, 739,
+ 739, 740, 740, 741, 742, 743, 743, 743, 743, 743,
+ 743, 744, 745, 745, 745, 746, 747, 747, 747, 747,
+ 747, 747, 747, 747, 747, 748, 749, 750, 751, 751,
+ 752, 753, 753, 753, 753, 753, 753, 753, 753, 753,
+ 753, 754, 755, 756, 757, 758, 759, 759, 759, 759,
+ 760, 761, 761, 761, 761, 761, 761, 761, 762, 763,
+ 763, 763, 763, 763, 763, 763, 764, 765, 766, 767
+};
+
+ /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
+static const yytype_uint8 yyr2[] =
+{
+ 0, 2, 1, 7, 0, 2, 2, 2, 2, 2,
+ 2, 1, 3, 5, 3, 1, 1, 3, 1, 2,
+ 2, 2, 2, 2, 3, 1, 1, 3, 1, 2,
+ 2, 2, 2, 5, 5, 0, 1, 3, 3, 1,
+ 1, 1, 2, 2, 3, 3, 3, 3, 2, 3,
+ 1, 1, 1, 4, 1, 1, 1, 1, 3, 0,
+ 2, 2, 2, 3, 1, 2, 3, 1, 1, 5,
+ 3, 3, 4, 1, 2, 2, 2, 2, 2, 2,
+ 1, 4, 0, 1, 1, 3, 1, 1, 1, 4,
+ 1, 1, 1, 0, 1, 1, 5, 0, 2, 5,
+ 3, 0, 2, 3, 0, 2, 2, 2, 2, 2,
+ 2, 2, 3, 3, 0, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 3, 0, 1, 3, 1, 1, 1, 3,
+ 1, 1, 3, 3, 0, 2, 2, 4, 0, 1,
+ 4, 0, 1, 3, 1, 1, 3, 1, 1, 3,
+ 1, 1, 3, 1, 1, 3, 1, 1, 3, 0,
+ 2, 3, 1, 1, 1, 4, 1, 2, 2, 2,
+ 2, 3, 1, 1, 1, 3, 0, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 3, 1, 1, 2, 2, 3, 1, 1, 1,
+ 6, 1, 1, 0, 1, 0, 1, 0, 1, 3,
+ 0, 2, 3, 1, 2, 3, 6, 1, 1, 2,
+ 2, 3, 1, 1, 1, 5, 1, 1, 1, 1,
+ 1, 1, 1, 0, 1, 1, 3, 1, 1, 1,
+ 1, 1, 2, 2, 3, 5, 1, 2, 2, 2,
+ 2, 4, 2, 3, 1, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 3, 1, 1, 1, 3, 1, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 4, 0,
+ 1, 3, 1, 1, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 5, 1, 1, 2, 2, 1, 1,
+ 1, 1, 1, 5, 1, 1, 2, 2, 5, 1,
+ 1, 2, 2, 5, 4, 1, 1, 1, 1, 2,
+ 2, 3, 1, 2, 3, 0, 2, 2, 2, 2,
+ 3, 3, 4, 2, 3, 1, 1, 2, 4, 1,
+ 1, 2, 2, 2, 2, 2, 2, 2, 2, 4,
+ 0, 1, 1, 3, 1, 2, 2, 2, 2, 3,
+ 0, 2, 3, 0, 2, 2, 2, 2, 1, 1,
+ 1, 1, 3, 1, 2, 3, 0, 2, 2, 2,
+ 3, 0, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 6, 1,
+ 1, 2, 2, 3, 1, 1, 2, 2, 5, 1,
+ 1, 2, 2, 3, 1, 1, 2, 3, 0, 2,
+ 2, 2, 3, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 3, 1, 2, 3, 3, 1, 2, 1,
+ 1, 3, 1, 1, 5, 1, 2, 2, 2, 2,
+ 3, 3, 0, 2, 3, 0, 2, 2, 4, 1,
+ 1, 5, 1, 1, 1, 1, 1, 0, 1, 1,
+ 3, 1, 1, 1, 2, 3, 0, 2, 2, 2,
+ 3, 0, 2, 3, 0, 2, 1, 1, 3, 0,
+ 2, 2, 3, 1, 1, 1, 2, 3, 1, 2,
+ 2, 2, 4, 0, 1, 3, 1, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 3, 0, 2, 2, 2, 2, 4, 1, 1,
+ 0, 1, 1, 4, 1, 1, 1, 1, 1, 1,
+ 4, 1, 2, 3, 0, 2, 2, 2, 3, 1,
+ 2, 1, 1, 5, 1, 1, 1, 3, 0, 2,
+ 3, 0, 2, 2, 2, 2, 3, 1, 2, 1,
+ 1, 1, 1, 1, 4, 1, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 3, 1, 2, 2, 2,
+ 2, 4, 1, 2, 2, 2, 2, 2, 4, 1,
+ 2, 2, 3, 0, 2, 2, 3, 0, 2, 2,
+ 2, 2, 1, 1, 1, 1, 4, 0, 1, 1,
+ 1, 2, 3, 0, 2, 2, 4, 1, 2, 2,
+ 5, 1, 1, 2, 2, 3, 0, 2, 2, 2,
+ 3, 1, 2, 3, 0, 2, 2, 2, 3, 1,
+ 2, 2, 2, 2, 4, 3, 1, 2, 3, 1,
+ 1, 1, 1, 1, 1, 1, 1, 3, 6, 1,
+ 1, 2, 2, 6, 1, 1, 2, 2, 5, 1,
+ 1, 3, 3, 1, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 3, 3, 1, 2, 5, 0, 1,
+ 4, 3, 1, 2, 3, 1, 2, 3, 3, 0,
+ 2, 2, 2, 3, 0, 2, 3, 0, 2, 2,
+ 2, 3, 1, 2, 3, 0, 2, 4, 3, 1,
+ 2, 3, 1, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 3, 1, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 4, 1, 2, 2,
+ 2, 4, 1, 1, 2, 2, 3, 0, 2, 2,
+ 3, 1, 1, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 3, 1, 1, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 3, 0, 2, 2,
+ 4, 3, 0, 2, 2, 2, 2, 1, 1, 1,
+ 1, 4, 0, 1, 1, 1, 4, 0, 1, 3,
+ 1, 2, 4, 1, 2, 2, 2, 2, 1, 1,
+ 3, 0, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 1, 1, 1, 1, 1, 1, 3,
+ 0, 2, 2, 4, 1, 2, 5, 1, 1, 2,
+ 2, 4, 1, 1, 1, 1, 3, 0, 2, 1,
+ 5, 1, 4, 4, 4, 3, 1, 2, 2, 2,
+ 3, 1, 2, 1, 3, 1, 2, 2, 2, 2,
+ 2, 3, 0, 2, 2, 2, 3, 0, 1, 4,
+ 0, 1, 3, 0, 1, 3, 1, 2, 3, 0,
+ 2, 2, 2, 4, 1, 1, 1, 1, 2, 2,
+ 3, 3, 0, 2, 2, 2, 1, 2, 3, 3,
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 3, 0, 2, 3, 0, 2,
+ 2, 4, 1, 1, 1, 1, 0, 1, 1, 3,
+ 1, 2, 2, 2, 2, 2, 2, 3, 4, 1,
+ 1, 1, 1, 1, 8, 3, 1, 2, 2, 2,
+ 2, 7, 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 4, 1, 1, 1, 3, 0, 2, 2,
+ 2, 2, 1, 1, 1, 1, 1, 1, 2, 2,
+ 3, 1, 1, 2, 2, 3, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 2, 3, 1, 2, 2, 2, 2, 1,
+ 1, 1, 1, 3, 5, 1, 2, 2, 2, 2,
+ 2, 3, 0, 2, 2, 3, 0, 2, 2, 2,
+ 2, 2, 2, 2, 2, 1, 1, 4, 0, 1,
+ 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 3, 3, 5, 3, 3, 0, 2, 2, 2,
+ 3, 1, 2, 2, 2, 2, 2, 2, 3, 1,
+ 2, 2, 2, 2, 2, 2, 1, 1, 1, 1
+};
+
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY (-2)
+#define YYEOF 0
+
+#define YYACCEPT goto yyacceptlab
+#define YYABORT goto yyabortlab
+#define YYERROR goto yyerrorlab
+
+
+#define YYRECOVERING() (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value) \
+do \
+ if (yychar == YYEMPTY) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ YYPOPSTACK (yylen); \
+ yystate = *yyssp; \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror (YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
+while (0)
+
+/* Error token number */
+#define YYTERROR 1
+#define YYERRCODE 256
+
+
+
+/* Enable debugging if requested. */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+# include /* INFRINGES ON USER NAME SPACE */
+# define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args) \
+do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+} while (0)
+
+/* This macro is provided for backward compatibility. */
+#ifndef YY_LOCATION_PRINT
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+#endif
+
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yy_symbol_print (stderr, \
+ Type, Value); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (0)
+
+
+/*----------------------------------------.
+| Print this symbol's value on YYOUTPUT. |
+`----------------------------------------*/
+
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+{
+ FILE *yyo = yyoutput;
+ YYUSE (yyo);
+ if (!yyvaluep)
+ return;
+# ifdef YYPRINT
+ if (yytype < YYNTOKENS)
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+ YYUSE (yytype);
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+{
+ YYFPRINTF (yyoutput, "%s %s (",
+ yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
+
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep);
+ YYFPRINTF (yyoutput, ")");
+}
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included). |
+`------------------------------------------------------------------*/
+
+static void
+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+{
+ YYFPRINTF (stderr, "Stack now");
+ for (; yybottom <= yytop; yybottom++)
+ {
+ int yybot = *yybottom;
+ YYFPRINTF (stderr, " %d", yybot);
+ }
+ YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top) \
+do { \
+ if (yydebug) \
+ yy_stack_print ((Bottom), (Top)); \
+} while (0)
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced. |
+`------------------------------------------------*/
+
+static void
+yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
+{
+ unsigned long int yylno = yyrline[yyrule];
+ int yynrhs = yyr2[yyrule];
+ int yyi;
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+ yyrule - 1, yylno);
+ /* The symbols being reduced. */
+ for (yyi = 0; yyi < yynrhs; yyi++)
+ {
+ YYFPRINTF (stderr, " $%d = ", yyi + 1);
+ yy_symbol_print (stderr,
+ yystos[yyssp[yyi + 1 - yynrhs]],
+ &(yyvsp[(yyi + 1) - (yynrhs)])
+ );
+ YYFPRINTF (stderr, "\n");
+ }
+}
+
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (yyssp, yyvsp, Rule); \
+} while (0)
+
+/* Nonzero means print parse trace. It is left uninitialized so that
+ multiple parsers can coexist. */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks. */
+#ifndef YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+ if the built-in stack extension method is used).
+
+ Do not make this value too large; the results are undefined if
+ YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+ evaluated with infinite-precision integer arithmetic. */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+# if defined __GLIBC__ && defined _STRING_H
+# define yystrlen strlen
+# else
+/* Return the length of YYSTR. */
+static YYSIZE_T
+yystrlen (const char *yystr)
+{
+ YYSIZE_T yylen;
+ for (yylen = 0; yystr[yylen]; yylen++)
+ continue;
+ return yylen;
+}
+# endif
+# endif
+
+# ifndef yystpcpy
+# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+# define yystpcpy stpcpy
+# else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+ YYDEST. */
+static char *
+yystpcpy (char *yydest, const char *yysrc)
+{
+ char *yyd = yydest;
+ const char *yys = yysrc;
+
+ while ((*yyd++ = *yys++) != '\0')
+ continue;
+
+ return yyd - 1;
+}
+# endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+ quotes and backslashes, so that it's suitable for yyerror. The
+ heuristic is that double-quoting is unnecessary unless the string
+ contains an apostrophe, a comma, or backslash (other than
+ backslash-backslash). YYSTR is taken from yytname. If YYRES is
+ null, do not copy; instead, return the length of what the result
+ would have been. */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+ if (*yystr == '"')
+ {
+ YYSIZE_T yyn = 0;
+ char const *yyp = yystr;
+
+ for (;;)
+ switch (*++yyp)
+ {
+ case '\'':
+ case ',':
+ goto do_not_strip_quotes;
+
+ case '\\':
+ if (*++yyp != '\\')
+ goto do_not_strip_quotes;
+ /* Fall through. */
+ default:
+ if (yyres)
+ yyres[yyn] = *yyp;
+ yyn++;
+ break;
+
+ case '"':
+ if (yyres)
+ yyres[yyn] = '\0';
+ return yyn;
+ }
+ do_not_strip_quotes: ;
+ }
+
+ if (! yyres)
+ return yystrlen (yystr);
+
+ return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+ about the unexpected token YYTOKEN for the state stack whose top is
+ YYSSP.
+
+ Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
+ not large enough to hold the message. In that case, also set
+ *YYMSG_ALLOC to the required number of bytes. Return 2 if the
+ required number of bytes is too large to store. */
+static int
+yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+ yytype_int16 *yyssp, int yytoken)
+{
+ YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
+ YYSIZE_T yysize = yysize0;
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+ /* Internationalized format string. */
+ const char *yyformat = YY_NULLPTR;
+ /* Arguments of yyformat. */
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ /* Number of reported tokens (one for the "unexpected", one per
+ "expected"). */
+ int yycount = 0;
+
+ /* There are many possibilities here to consider:
+ - If this state is a consistent state with a default action, then
+ the only way this function was invoked is if the default action
+ is an error action. In that case, don't check for expected
+ tokens because there are none.
+ - The only way there can be no lookahead present (in yychar) is if
+ this state is a consistent state with a default action. Thus,
+ detecting the absence of a lookahead is sufficient to determine
+ that there is no unexpected or expected token to report. In that
+ case, just report a simple "syntax error".
+ - Don't assume there isn't a lookahead just because this state is a
+ consistent state with a default action. There might have been a
+ previous inconsistent state, consistent state with a non-default
+ action, or user semantic action that manipulated yychar.
+ - Of course, the expected token list depends on states to have
+ correct lookahead information, and it depends on the parser not
+ to perform extra reductions after fetching a lookahead from the
+ scanner and before detecting a syntax error. Thus, state merging
+ (from LALR or IELR) and default reductions corrupt the expected
+ token list. However, the list is correct for canonical LR with
+ one exception: it will still contain any token that will not be
+ accepted due to an error action in a later state.
+ */
+ if (yytoken != YYEMPTY)
+ {
+ int yyn = yypact[*yyssp];
+ yyarg[yycount++] = yytname[yytoken];
+ if (!yypact_value_is_default (yyn))
+ {
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. In other words, skip the first -YYN actions for
+ this state because they are default actions. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn + 1;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yyx;
+
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
+ && !yytable_value_is_error (yytable[yyx + yyn]))
+ {
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ {
+ YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
+ if (! (yysize <= yysize1
+ && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+ }
+ }
+ }
+ }
+
+ switch (yycount)
+ {
+# define YYCASE_(N, S) \
+ case N: \
+ yyformat = S; \
+ break
+ YYCASE_(0, YY_("syntax error"));
+ YYCASE_(1, YY_("syntax error, unexpected %s"));
+ YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+ YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+ YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+ YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+# undef YYCASE_
+ }
+
+ {
+ YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
+ if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+ }
+
+ if (*yymsg_alloc < yysize)
+ {
+ *yymsg_alloc = 2 * yysize;
+ if (! (yysize <= *yymsg_alloc
+ && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
+ *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+ return 1;
+ }
+
+ /* Avoid sprintf, as that infringes on the user's name space.
+ Don't have undefined behavior even if the translation
+ produced a string with the wrong number of "%s"s. */
+ {
+ char *yyp = *yymsg;
+ int yyi = 0;
+ while ((*yyp = *yyformat) != '\0')
+ if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyformat += 2;
+ }
+ else
+ {
+ yyp++;
+ yyformat++;
+ }
+ }
+ return 0;
+}
+#endif /* YYERROR_VERBOSE */
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+{
+ YYUSE (yyvaluep);
+ if (!yymsg)
+ yymsg = "Deleting";
+ YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+ YYUSE (yytype);
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
+}
+
+
+
+
+/* The lookahead symbol. */
+int yychar;
+
+/* The semantic value of the lookahead symbol. */
+YYSTYPE yylval;
+/* Number of syntax errors so far. */
+int yynerrs;
+
+
+/*----------.
+| yyparse. |
+`----------*/
+
+int
+yyparse (void)
+{
+ int yystate;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
+
+ /* The stacks and their tools:
+ 'yyss': related to states.
+ 'yyvs': related to semantic values.
+
+ Refer to the stacks through separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+
+ /* The state stack. */
+ yytype_int16 yyssa[YYINITDEPTH];
+ yytype_int16 *yyss;
+ yytype_int16 *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs;
+ YYSTYPE *yyvsp;
+
+ YYSIZE_T yystacksize;
+
+ int yyn;
+ int yyresult;
+ /* Lookahead token as an internal (translated) token number. */
+ int yytoken = 0;
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+
+#if YYERROR_VERBOSE
+ /* Buffer for error messages, and its allocated size. */
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
+
+ /* The number of symbols on the RHS of the reduced rule.
+ Keep to zero when no symbol should be popped. */
+ int yylen = 0;
+
+ yyssp = yyss = yyssa;
+ yyvsp = yyvs = yyvsa;
+ yystacksize = YYINITDEPTH;
+
+ YYDPRINTF ((stderr, "Starting parse\n"));
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+ goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate. |
+`------------------------------------------------------------*/
+ yynewstate:
+ /* In all cases, when you get here, the value and location stacks
+ have just been pushed. So pushing a state here evens the stacks. */
+ yyssp++;
+
+ yysetstate:
+ *yyssp = yystate;
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ {
+ /* Get the current used size of the three stacks, in elements. */
+ YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ {
+ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+ memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ yytype_int16 *yyss1 = yyss;
+
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. This used to be a
+ conditional around just the two extra args, but that might
+ be undefined if yyoverflow is a macro. */
+ yyoverflow (YY_("memory exhausted"),
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+ &yystacksize);
+
+ yyss = yyss1;
+ yyvs = yyvs1;
+ }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+ goto yyexhaustedlab;
+# else
+ /* Extend the stack our own way. */
+ if (YYMAXDEPTH <= yystacksize)
+ goto yyexhaustedlab;
+ yystacksize *= 2;
+ if (YYMAXDEPTH < yystacksize)
+ yystacksize = YYMAXDEPTH;
+
+ {
+ yytype_int16 *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ if (! yyptr)
+ goto yyexhaustedlab;
+ YYSTACK_RELOCATE (yyss_alloc, yyss);
+ YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+# undef YYSTACK_RELOCATE
+ if (yyss1 != yyssa)
+ YYSTACK_FREE (yyss1);
+ }
+# endif
+#endif /* no yyoverflow */
+
+ yyssp = yyss + yysize - 1;
+ yyvsp = yyvs + yysize - 1;
+
+ YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+ (unsigned long int) yystacksize));
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ YYABORT;
+ }
+
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+ if (yystate == YYFINAL)
+ YYACCEPT;
+
+ goto yybackup;
+
+/*-----------.
+| yybackup. |
+`-----------*/
+yybackup:
+
+ /* Do appropriate processing given the current state. Read a
+ lookahead token if we need one and don't already have one. */
+
+ /* First try to decide what to do without reference to lookahead token. */
+ yyn = yypact[yystate];
+ if (yypact_value_is_default (yyn))
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
+ if (yychar == YYEMPTY)
+ {
+ YYDPRINTF ((stderr, "Reading a token: "));
+ yychar = yylex ();
+ }
+
+ if (yychar <= YYEOF)
+ {
+ yychar = yytoken = YYEOF;
+ YYDPRINTF ((stderr, "Now at end of input.\n"));
+ }
+ else
+ {
+ yytoken = YYTRANSLATE (yychar);
+ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+ }
+
+ /* If the proper action on seeing token YYTOKEN is to reduce or to
+ detect an error, take that action. */
+ yyn += yytoken;
+ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+ goto yydefault;
+ yyn = yytable[yyn];
+ if (yyn <= 0)
+ {
+ if (yytable_value_is_error (yyn))
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ /* Shift the lookahead token. */
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+ /* Discard the shifted token. */
+ yychar = YYEMPTY;
+
+ yystate = yyn;
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+ *++yyvsp = yylval;
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
+
+ goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state. |
+`-----------------------------------------------------------*/
+yydefault:
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+ goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction. |
+`-----------------------------*/
+yyreduce:
+ /* yyn is the number of a rule to reduce with. */
+ yylen = yyr2[yyn];
+
+ /* If YYLEN is nonzero, implement the default value of the action:
+ '$$ = $1'.
+
+ Otherwise, the following line sets YYVAL to garbage.
+ This behavior is undocumented and Bison
+ users should not rely upon it. Assigning to YYVAL
+ unconditionally makes the parser a bit smaller, and it avoids a
+ GCC warning that YYVAL may be used uninitialized. */
+ yyval = yyvsp[1-yylen];
+
+
+ YY_REDUCE_PRINT (yyn);
+ switch (yyn)
+ {
+ case 2:
+#line 505 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { PopC(); }
+#line 3658 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 11:
+#line 520 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 3664 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 12:
+#line 523 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[-1].s)); }
+#line 3670 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 13:
+#line 527 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[-3].s)); free((yyvsp[-2].s)); free((yyvsp[-1].s)); }
+#line 3676 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 25:
+#line 551 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 3682 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 34:
+#line 568 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[-3].ps)); free((yyvsp[-2].s)); }
+#line 3688 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 36:
+#line 572 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 3694 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 47:
+#line 597 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[-1].s)); }
+#line 3700 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 69:
+#line 645 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[-3].s)); free((yyvsp[-2].s)); }
+#line 3706 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 70:
+#line 648 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[-1].s)); }
+#line 3712 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 80:
+#line 666 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 3718 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 84:
+#line 676 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 3724 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 91:
+#line 691 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 3730 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 102:
+#line 714 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 3736 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 140:
+#line 774 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 3742 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 147:
+#line 789 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[-2].s)); }
+#line 3748 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 150:
+#line 796 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[-2].s)); }
+#line 3754 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 182:
+#line 866 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 3760 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 184:
+#line 870 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 3766 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 240:
+#line 974 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 3772 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 247:
+#line 987 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 3778 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 278:
+#line 1034 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 3784 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 279:
+#line 1037 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 3790 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 333:
+#line 1123 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[-3].s)); free((yyvsp[-2].s)); }
+#line 3796 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 336:
+#line 1130 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 3802 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 337:
+#line 1133 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 3808 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 344:
+#line 1146 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[-2].s)); }
+#line 3814 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 346:
+#line 1150 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 3820 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 347:
+#line 1151 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 3826 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 348:
+#line 1152 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 3832 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 369:
+#line 1193 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.s)=(yyvsp[-2].s); }
+#line 3838 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 371:
+#line 1197 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 3844 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 374:
+#line 1204 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 3850 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 381:
+#line 1215 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 3856 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 384:
+#line 1222 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 3862 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 388:
+#line 1228 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 3868 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 390:
+#line 1232 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.s)=(yyvsp[0].s); }
+#line 3874 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 393:
+#line 1239 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 3880 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 397:
+#line 1247 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 3886 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 408:
+#line 1262 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { pair_list_free((yyvsp[0].pl)); }
+#line 3892 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 437:
+#line 1312 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.pl) = new_pair_list((yyvsp[-1].ps)); }
+#line 3898 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 438:
+#line 1315 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.ps)=NULL; }
+#line 3904 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 439:
+#line 1316 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyvsp[0].ps)->next = (yyvsp[-1].ps); (yyval.ps) = (yyvsp[0].ps); }
+#line 3910 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 455:
+#line 1342 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[-1].s)); }
+#line 3916 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 459:
+#line 1352 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 3922 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 460:
+#line 1355 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 3928 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 462:
+#line 1361 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 3934 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 463:
+#line 1364 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 3940 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 483:
+#line 1406 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 3946 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 484:
+#line 1409 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 3952 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 492:
+#line 1423 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 3958 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 506:
+#line 1451 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 3964 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 507:
+#line 1454 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 3970 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 514:
+#line 1469 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 3976 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 549:
+#line 1524 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 3982 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 555:
+#line 1536 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 3988 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 560:
+#line 1545 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[-2].s)); }
+#line 3994 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 561:
+#line 1548 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 4000 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 562:
+#line 1549 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 4006 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 582:
+#line 1591 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 4012 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 585:
+#line 1594 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { pair_list_free((yyvsp[0].pl)); }
+#line 4018 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 586:
+#line 1597 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.s)=(yyvsp[-1].s); }
+#line 4024 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 587:
+#line 1600 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.s)=(yyvsp[0].s); }
+#line 4030 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 589:
+#line 1604 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.ps) = new_str_pair((yyvsp[0].s),NULL); }
+#line 4036 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 590:
+#line 1605 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.ps) = new_str_pair((yyvsp[0].s),NULL); }
+#line 4042 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 591:
+#line 1606 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.ps)=(yyvsp[0].ps); }
+#line 4048 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 592:
+#line 1609 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.s)=(yyvsp[0].s); }
+#line 4054 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 593:
+#line 1610 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.s)=(yyvsp[0].s); }
+#line 4060 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 594:
+#line 1613 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { define_pcb_net((yyvsp[-2].ps), (yyvsp[-1].pl)); }
+#line 4066 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 595:
+#line 1616 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.pl)=(yyvsp[0].pl); }
+#line 4072 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 611:
+#line 1638 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[-2].ps)); }
+#line 4078 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 632:
+#line 1675 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.ps)=(yyvsp[0].ps); }
+#line 4084 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 633:
+#line 1676 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.ps)=NULL; }
+#line 4090 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 634:
+#line 1680 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 4096 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 639:
+#line 1689 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 4102 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 644:
+#line 1700 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 4108 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 698:
+#line 1802 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[-3].s)); }
+#line 4114 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 701:
+#line 1809 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[-1].s)); }
+#line 4120 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 727:
+#line 1861 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[-1].s)); }
+#line 4126 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 730:
+#line 1868 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 4132 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 747:
+#line 1903 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[-2].s)); free((yyvsp[-1].s)); }
+#line 4138 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 766:
+#line 1934 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 4144 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 789:
+#line 1969 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 4150 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 791:
+#line 1975 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 4156 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 803:
+#line 1991 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 4162 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 818:
+#line 2010 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 4168 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 823:
+#line 2021 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 4174 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 827:
+#line 2027 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 4180 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 829:
+#line 2031 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.s)=(yyvsp[0].s); }
+#line 4186 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 831:
+#line 2036 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ {
+ if ((yyvsp[-1].ps))
+ {
+ (yyval.ps) = new_str_pair((yyvsp[-1].ps)->str1,(yyvsp[-2].s));
+ free((yyvsp[-1].ps));
+ }
+ else
+ {
+ /* handle port with no instance by passing up the chain */
+ (yyval.ps) = new_str_pair(NULL,(yyvsp[-2].s));
+ }
+}
+#line 4203 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 832:
+#line 2050 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.ps)=NULL; }
+#line 4209 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 833:
+#line 2051 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.ps)=(yyvsp[0].ps); }
+#line 4215 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 834:
+#line 2052 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.ps) = new_str_pair((yyvsp[0].s),NULL); }
+#line 4221 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 835:
+#line 2053 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.ps)=NULL; }
+#line 4227 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 848:
+#line 2080 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 4233 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 849:
+#line 2083 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 4239 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 881:
+#line 2136 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.ps) = new_str_pair((yyvsp[-2].s),(yyvsp[-1].s)); }
+#line 4245 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 882:
+#line 2139 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.s)=(yyvsp[0].s); }
+#line 4251 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 883:
+#line 2140 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.s)=(yyvsp[0].s); }
+#line 4257 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 884:
+#line 2143 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.s)=(yyvsp[0].s); }
+#line 4263 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 885:
+#line 2144 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.s)=NULL; }
+#line 4269 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 889:
+#line 2154 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 4275 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 891:
+#line 2160 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 4281 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 892:
+#line 2161 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[-2].s)); free((yyvsp[-1].s)); }
+#line 4287 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 893:
+#line 2164 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[-2].s)); free((yyvsp[-1].s)); }
+#line 4293 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 894:
+#line 2167 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[-2].s)); free((yyvsp[-1].s)); }
+#line 4299 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 896:
+#line 2173 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 4305 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 898:
+#line 2175 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 4311 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 903:
+#line 2186 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 4317 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 935:
+#line 2250 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 4323 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 943:
+#line 2266 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 4329 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 946:
+#line 2271 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 4335 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 973:
+#line 2316 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 4341 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 987:
+#line 2338 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[-1].s)); }
+#line 4347 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 994:
+#line 2354 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[-6].s)); free((yyvsp[-5].s)); free((yyvsp[-4].s)); free((yyvsp[-3].s)); free((yyvsp[-2].s)); free((yyvsp[-1].s)); }
+#line 4353 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 1054:
+#line 2461 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 4359 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 1055:
+#line 2462 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 4365 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 1056:
+#line 2463 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 4371 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 1057:
+#line 2464 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 4377 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 1059:
+#line 2468 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 4383 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 1061:
+#line 2472 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 4389 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 1063:
+#line 2476 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[-1].s)); }
+#line 4395 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 1085:
+#line 2512 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 4401 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 1086:
+#line 2515 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { free((yyvsp[0].s)); }
+#line 4407 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 1107:
+#line 2556 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { str_pair_free((yyvsp[0].ps)); }
+#line 4413 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 1109:
+#line 2558 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { pair_list_free((yyvsp[0].pl)); }
+#line 4419 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 1126:
+#line 2585 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.s)=(yyvsp[0].s); }
+#line 4425 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 1127:
+#line 2588 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.s)=(yyvsp[0].s); }
+#line 4431 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 1128:
+#line 2591 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.s)=(yyvsp[0].s); }
+#line 4437 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+ case 1129:
+#line 2594 "../src_plugins/edif/edif.y" /* yacc.c:1646 */
+ { (yyval.s)=(yyvsp[0].s); }
+#line 4443 "y.tab.c" /* yacc.c:1646 */
+ break;
+
+
+#line 4447 "y.tab.c" /* yacc.c:1646 */
+ default: break;
+ }
+ /* User semantic actions sometimes alter yychar, and that requires
+ that yytoken be updated with the new translation. We take the
+ approach of translating immediately before every use of yytoken.
+ One alternative is translating here after every semantic action,
+ but that translation would be missed if the semantic action invokes
+ YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+ if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
+ incorrect destructor might then be invoked immediately. In the
+ case of YYERROR or YYBACKUP, subsequent parser actions might lead
+ to an incorrect destructor call or verbose syntax error message
+ before the lookahead is translated. */
+ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+
+ *++yyvsp = yyval;
+
+ /* Now 'shift' the result of the reduction. Determine what state
+ that goes to, based on the state we popped back to and the rule
+ number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+ if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTOKENS];
+
+ goto yynewstate;
+
+
+/*--------------------------------------.
+| yyerrlab -- here on detecting error. |
+`--------------------------------------*/
+yyerrlab:
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
+
+ /* If not already recovering from an error, report this error. */
+ if (!yyerrstatus)
+ {
+ ++yynerrs;
+#if ! YYERROR_VERBOSE
+ yyerror (YY_("syntax error"));
+#else
+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
+ yyssp, yytoken)
+ {
+ char const *yymsgp = YY_("syntax error");
+ int yysyntax_error_status;
+ yysyntax_error_status = YYSYNTAX_ERROR;
+ if (yysyntax_error_status == 0)
+ yymsgp = yymsg;
+ else if (yysyntax_error_status == 1)
+ {
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+ if (!yymsg)
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ yysyntax_error_status = 2;
+ }
+ else
+ {
+ yysyntax_error_status = YYSYNTAX_ERROR;
+ yymsgp = yymsg;
+ }
+ }
+ yyerror (yymsgp);
+ if (yysyntax_error_status == 2)
+ goto yyexhaustedlab;
+ }
+# undef YYSYNTAX_ERROR
+#endif
+ }
+
+
+
+ if (yyerrstatus == 3)
+ {
+ /* If just tried and failed to reuse lookahead token after an
+ error, discard it. */
+
+ if (yychar <= YYEOF)
+ {
+ /* Return failure if at end of input. */
+ if (yychar == YYEOF)
+ YYABORT;
+ }
+ else
+ {
+ yydestruct ("Error: discarding",
+ yytoken, &yylval);
+ yychar = YYEMPTY;
+ }
+ }
+
+ /* Else will try to reuse lookahead token after shifting the error
+ token. */
+ goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR. |
+`---------------------------------------------------*/
+yyerrorlab:
+
+ /* Pacify compilers like GCC when the user code never invokes
+ YYERROR and the label yyerrorlab therefore never appears in user
+ code. */
+ if (/*CONSTCOND*/ 0)
+ goto yyerrorlab;
+
+ /* Do not reclaim the symbols of the rule whose action triggered
+ this YYERROR. */
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+ yystate = *yyssp;
+ goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR. |
+`-------------------------------------------------------------*/
+yyerrlab1:
+ yyerrstatus = 3; /* Each real token shifted decrements this. */
+
+ for (;;)
+ {
+ yyn = yypact[yystate];
+ if (!yypact_value_is_default (yyn))
+ {
+ yyn += YYTERROR;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+ {
+ yyn = yytable[yyn];
+ if (0 < yyn)
+ break;
+ }
+ }
+
+ /* Pop the current state because it cannot handle the error token. */
+ if (yyssp == yyss)
+ YYABORT;
+
+
+ yydestruct ("Error: popping",
+ yystos[yystate], yyvsp);
+ YYPOPSTACK (1);
+ yystate = *yyssp;
+ YY_STACK_PRINT (yyss, yyssp);
+ }
+
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+ *++yyvsp = yylval;
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
+
+
+ /* Shift the error token. */
+ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here. |
+`-------------------------------------*/
+yyacceptlab:
+ yyresult = 0;
+ goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here. |
+`-----------------------------------*/
+yyabortlab:
+ yyresult = 1;
+ goto yyreturn;
+
+#if !defined yyoverflow || YYERROR_VERBOSE
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here. |
+`-------------------------------------------------*/
+yyexhaustedlab:
+ yyerror (YY_("memory exhausted"));
+ yyresult = 2;
+ /* Fall through. */
+#endif
+
+yyreturn:
+ if (yychar != YYEMPTY)
+ {
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = YYTRANSLATE (yychar);
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval);
+ }
+ /* Do not reclaim the symbols of the rule whose action triggered
+ this YYABORT or YYACCEPT. */
+ YYPOPSTACK (yylen);
+ YY_STACK_PRINT (yyss, yyssp);
+ while (yyssp != yyss)
+ {
+ yydestruct ("Cleanup: popping",
+ yystos[*yyssp], yyvsp);
+ YYPOPSTACK (1);
+ }
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+#if YYERROR_VERBOSE
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+#endif
+ return yyresult;
+}
+#line 2597 "../src_plugins/edif/edif.y" /* yacc.c:1906 */
+
+/*
+ * xmalloc:
+ *
+ * Garbage function for 'alloca()'.
+ */
+char *xmalloc(int siz)
+{
+ return ((char *)Malloc(siz));
+}
+/*
+ * Token & context carriers:
+ *
+ * These are the linkage pointers for threading this context garbage
+ * for converting identifiers into parser tokens.
+ */
+typedef struct TokenCar {
+ struct TokenCar *Next; /* pointer to next carrier */
+ struct Token *Token; /* associated token */
+} TokenCar;
+typedef struct UsedCar {
+ struct UsedCar *Next; /* pointer to next carrier */
+ short Code; /* used '%token' value */
+} UsedCar;
+typedef struct ContextCar {
+ struct ContextCar *Next; /* pointer to next carrier */
+ struct Context *Context; /* associated context */
+ union {
+ int Single; /* single usage flag (context tree) */
+ struct UsedCar *Used; /* single used list (context stack) */
+ } u;
+} ContextCar;
+/*
+ * Token definitions:
+ *
+ * This associates the '%token' codings with strings which are to
+ * be free standing tokens. Doesn't have to be in sorted order but the
+ * strings must be in lower case.
+ */
+typedef struct Token {
+ char *Name; /* token name */
+ int Code; /* '%token' value */
+ struct Token *Next; /* hash table linkage */
+} Token;
+static Token TokenDef[] = {
+ {"angle", EDIF_TOK_ANGLE},
+ {"behavior", EDIF_TOK_BEHAVIOR},
+ {"calculated", EDIF_TOK_CALCULATED},
+ {"capacitance", EDIF_TOK_CAPACITANCE},
+ {"centercenter", EDIF_TOK_CENTERCENTER},
+ {"centerleft", EDIF_TOK_CENTERLEFT},
+ {"centerright", EDIF_TOK_CENTERRIGHT},
+ {"charge", EDIF_TOK_CHARGE},
+ {"conductance", EDIF_TOK_CONDUCTANCE},
+ {"current", EDIF_TOK_CURRENT},
+ {"distance", EDIF_TOK_DISTANCE},
+ {"document", EDIF_TOK_DOCUMENT},
+ {"energy", EDIF_TOK_ENERGY},
+ {"extend", EDIF_TOK_EXTEND},
+ {"flux", EDIF_TOK_FLUX},
+ {"frequency", EDIF_TOK_FREQUENCY},
+ {"generic", EDIF_TOK_GENERIC},
+ {"graphic", EDIF_TOK_GRAPHIC},
+ {"inductance", EDIF_TOK_INDUCTANCE},
+ {"inout", EDIF_TOK_INOUT},
+ {"input", EDIF_TOK_INPUT},
+ {"logicmodel", EDIF_TOK_LOGICMODEL},
+ {"lowercenter", EDIF_TOK_LOWERCENTER},
+ {"lowerleft", EDIF_TOK_LOWERLEFT},
+ {"lowerright", EDIF_TOK_LOWERRIGHT},
+ {"masklayout", EDIF_TOK_MASKLAYOUT},
+ {"mass", EDIF_TOK_MASS},
+ {"measured", EDIF_TOK_MEASURED},
+ {"mx", EDIF_TOK_MX},
+ {"mxr90", EDIF_TOK_MXR90},
+ {"my", EDIF_TOK_MY},
+ {"myr90", EDIF_TOK_MYR90},
+ {"netlist", EDIF_TOK_NETLIST},
+ {"output", EDIF_TOK_OUTPUT},
+ {"pcblayout", EDIF_TOK_PCBLAYOUT},
+ {"power", EDIF_TOK_POWER},
+ {"r0", EDIF_TOK_R0},
+ {"r180", EDIF_TOK_R180},
+ {"r270", EDIF_TOK_R270},
+ {"r90", EDIF_TOK_R90},
+ {"required", EDIF_TOK_REQUIRED},
+ {"resistance", EDIF_TOK_RESISTANCE},
+ {"ripper", EDIF_TOK_RIPPER},
+ {"round", EDIF_TOK_ROUND},
+ {"schematic", EDIF_TOK_SCHEMATIC},
+ {"stranger", EDIF_TOK_STRANGER},
+ {"symbolic", EDIF_TOK_SYMBOLIC},
+ {"temperature", EDIF_TOK_TEMPERATURE},
+ {"tie", EDIF_TOK_TIE},
+ {"time", EDIF_TOK_TIME},
+ {"truncate", EDIF_TOK_TRUNCATE},
+ {"uppercenter", EDIF_TOK_UPPERCENTER},
+ {"upperleft", EDIF_TOK_UPPERLEFT},
+ {"upperright", EDIF_TOK_UPPERRIGHT},
+ {"voltage", EDIF_TOK_VOLTAGE}
+};
+static int TokenDefSize = sizeof(TokenDef) / sizeof(Token);
+/*
+ * Token enable definitions:
+ *
+ * There is one array for each set of tokens enabled by a
+ * particular context (barf). Another array is used to bind
+ * these arrays to a context.
+ */
+static short e_CellType[] = {EDIF_TOK_TIE, EDIF_TOK_RIPPER, EDIF_TOK_GENERIC};
+static short e_CornerType[] = {EDIF_TOK_EXTEND, EDIF_TOK_TRUNCATE,
+ EDIF_TOK_ROUND};
+static short e_Derivation[] = {EDIF_TOK_CALCULATED, EDIF_TOK_MEASURED,
+ EDIF_TOK_REQUIRED};
+static short e_Direction[] = {EDIF_TOK_INPUT, EDIF_TOK_OUTPUT,
+ EDIF_TOK_INOUT};
+static short e_EndType[] = {EDIF_TOK_EXTEND, EDIF_TOK_TRUNCATE,
+ EDIF_TOK_ROUND};
+static short e_Justify[] = {EDIF_TOK_CENTERCENTER, EDIF_TOK_CENTERLEFT,
+ EDIF_TOK_CENTERRIGHT, EDIF_TOK_LOWERCENTER,
+ EDIF_TOK_LOWERLEFT, EDIF_TOK_LOWERRIGHT,
+ EDIF_TOK_UPPERCENTER, EDIF_TOK_UPPERLEFT,
+ EDIF_TOK_UPPERRIGHT};
+static short e_Orientation[] = {EDIF_TOK_R0, EDIF_TOK_R90, EDIF_TOK_R180,
+ EDIF_TOK_R270, EDIF_TOK_MX, EDIF_TOK_MY,
+ EDIF_TOK_MXR90, EDIF_TOK_MYR90};
+static short e_Unit[] = {EDIF_TOK_DISTANCE, EDIF_TOK_CAPACITANCE,
+ EDIF_TOK_CURRENT, EDIF_TOK_RESISTANCE,
+ EDIF_TOK_TEMPERATURE, EDIF_TOK_TIME,
+ EDIF_TOK_VOLTAGE, EDIF_TOK_MASS, EDIF_TOK_FREQUENCY,
+ EDIF_TOK_INDUCTANCE, EDIF_TOK_ENERGY,
+ EDIF_TOK_POWER, EDIF_TOK_CHARGE,
+ EDIF_TOK_CONDUCTANCE, EDIF_TOK_FLUX, EDIF_TOK_ANGLE};
+static short e_ViewType[] = {EDIF_TOK_MASKLAYOUT, EDIF_TOK_PCBLAYOUT,
+ EDIF_TOK_NETLIST, EDIF_TOK_SCHEMATIC,
+ EDIF_TOK_SYMBOLIC, EDIF_TOK_BEHAVIOR,
+ EDIF_TOK_LOGICMODEL, EDIF_TOK_DOCUMENT,
+ EDIF_TOK_GRAPHIC, EDIF_TOK_STRANGER};
+/*
+ * Token tying table:
+ *
+ * This binds enabled tokens to a context.
+ */
+typedef struct Tie {
+ short *Enable; /* pointer to enable array */
+ short Origin; /* '%token' value of context */
+ short EnableSize; /* size of enabled array */
+} Tie;
+#define TE(e,o) {e,o,sizeof(e)/sizeof(short)}
+static Tie TieDef[] = {
+ TE(e_CellType, EDIF_TOK_CELLTYPE),
+ TE(e_CornerType, EDIF_TOK_CORNERTYPE),
+ TE(e_Derivation, EDIF_TOK_DERIVATION),
+ TE(e_Direction, EDIF_TOK_DIRECTION),
+ TE(e_EndType, EDIF_TOK_ENDTYPE),
+ TE(e_Justify, EDIF_TOK_JUSTIFY),
+ TE(e_Orientation, EDIF_TOK_ORIENTATION),
+ TE(e_Unit, EDIF_TOK_UNIT),
+ TE(e_ViewType, EDIF_TOK_VIEWTYPE)
+};
+static int TieDefSize = sizeof(TieDef) / sizeof(Tie);
+/*
+ * Context definitions:
+ *
+ * This associates keyword strings with '%token' values. It
+ * also creates a pretty much empty header for later building of
+ * the context tree. Again they needn't be sorted, but strings
+ * must be lower case.
+ */
+typedef struct Context {
+ char *Name; /* keyword name */
+ short Code; /* '%token' value */
+ short Flags; /* special operation flags */
+ struct ContextCar *Context; /* contexts which can be moved to */
+ struct TokenCar *Token; /* active tokens */
+ struct Context *Next; /* hash table linkage */
+} Context;
+static Context ContextDef[] = {
+ {"", 0}, /* start context */
+ {"acload", EDIF_TOK_ACLOAD},
+ {"after", EDIF_TOK_AFTER},
+ {"annotate", EDIF_TOK_ANNOTATE},
+ {"apply", EDIF_TOK_APPLY},
+ {"arc", EDIF_TOK_ARC},
+ {"array", EDIF_TOK_ARRAY},
+ {"arraymacro", EDIF_TOK_ARRAYMACRO},
+ {"arrayrelatedinfo", EDIF_TOK_ARRAYRELATEDINFO},
+ {"arraysite", EDIF_TOK_ARRAYSITE},
+ {"atleast", EDIF_TOK_ATLEAST},
+ {"atmost", EDIF_TOK_ATMOST},
+ {"author", EDIF_TOK_AUTHOR},
+ {"basearray", EDIF_TOK_BASEARRAY},
+ {"becomes", EDIF_TOK_BECOMES},
+ {"between", EDIF_TOK_BETWEEN},
+ {"boolean", EDIF_TOK_BOOLEAN},
+ {"booleandisplay", EDIF_TOK_BOOLEANDISPLAY},
+ {"booleanmap", EDIF_TOK_BOOLEANMAP},
+ {"borderpattern", EDIF_TOK_BORDERPATTERN},
+ {"borderwidth", EDIF_TOK_BORDERWIDTH},
+ {"boundingbox", EDIF_TOK_BOUNDINGBOX},
+ {"cell", EDIF_TOK_CELL},
+ {"cellref", EDIF_TOK_CELLREF},
+ {"celltype", EDIF_TOK_CELLTYPE},
+ {"change", EDIF_TOK_CHANGE},
+ {"circle", EDIF_TOK_CIRCLE},
+ {"color", EDIF_TOK_COLOR},
+ {"comment", EDIF_TOK_COMMENT},
+ {"commentgraphics", EDIF_TOK_COMMENTGRAPHICS},
+ {"compound", EDIF_TOK_COMPOUND},
+ {"connectlocation", EDIF_TOK_CONNECTLOCATION},
+ {"contents", EDIF_TOK_CONTENTS},
+ {"cornertype", EDIF_TOK_CORNERTYPE},
+ {"criticality", EDIF_TOK_CRITICALITY},
+ {"currentmap", EDIF_TOK_CURRENTMAP},
+ {"curve", EDIF_TOK_CURVE},
+ {"cycle", EDIF_TOK_CYCLE},
+ {"dataorigin", EDIF_TOK_DATAORIGIN},
+ {"dcfaninload", EDIF_TOK_DCFANINLOAD},
+ {"dcfanoutload", EDIF_TOK_DCFANOUTLOAD},
+ {"dcmaxfanin", EDIF_TOK_DCMAXFANIN},
+ {"dcmaxfanout", EDIF_TOK_DCMAXFANOUT},
+ {"delay", EDIF_TOK_DELAY},
+ {"delta", EDIF_TOK_DELTA},
+ {"derivation", EDIF_TOK_DERIVATION},
+ {"design", EDIF_TOK_DESIGN},
+ {"designator", EDIF_TOK_DESIGNATOR},
+ {"difference", EDIF_TOK_DIFFERENCE},
+ {"direction", EDIF_TOK_DIRECTION},
+ {"display", EDIF_TOK_DISPLAY},
+ {"dominates", EDIF_TOK_DOMINATES},
+ {"dot", EDIF_TOK_DOT},
+ {"duration", EDIF_TOK_DURATION},
+ {"e", EDIF_TOK_E},
+ {"edif", EDIF_TOK_EDIF},
+ {"ediflevel", EDIF_TOK_EDIFLEVEL},
+ {"edifversion", EDIF_TOK_EDIFVERSION},
+ {"enclosuredistance", EDIF_TOK_ENCLOSUREDISTANCE},
+ {"endtype", EDIF_TOK_ENDTYPE},
+ {"entry", EDIF_TOK_ENTRY},
+ {"exactly", EDIF_TOK_EXACTLY},
+ {"external", EDIF_TOK_EXTERNAL},
+ {"fabricate", EDIF_TOK_FABRICATE},
+ {"false", EDIF_TOK_FALSE},
+ {"figure", EDIF_TOK_FIGURE},
+ {"figurearea", EDIF_TOK_FIGUREAREA},
+ {"figuregroup", EDIF_TOK_FIGUREGROUP},
+ {"figuregroupobject", EDIF_TOK_FIGUREGROUPOBJECT},
+ {"figuregroupoverride", EDIF_TOK_FIGUREGROUPOVERRIDE},
+ {"figuregroupref", EDIF_TOK_FIGUREGROUPREF},
+ {"figureperimeter", EDIF_TOK_FIGUREPERIMETER},
+ {"figurewidth", EDIF_TOK_FIGUREWIDTH},
+ {"fillpattern", EDIF_TOK_FILLPATTERN},
+ {"follow", EDIF_TOK_FOLLOW},
+ {"forbiddenevent", EDIF_TOK_FORBIDDENEVENT},
+ {"globalportref", EDIF_TOK_GLOBALPORTREF},
+ {"greaterthan", EDIF_TOK_GREATERTHAN},
+ {"gridmap", EDIF_TOK_GRIDMAP},
+ {"ignore", EDIF_TOK_IGNORE},
+ {"includefiguregroup", EDIF_TOK_INCLUDEFIGUREGROUP},
+ {"initial", EDIF_TOK_INITIAL},
+ {"instance", EDIF_TOK_INSTANCE},
+ {"instancebackannotate", EDIF_TOK_INSTANCEBACKANNOTATE},
+ {"instancegroup", EDIF_TOK_INSTANCEGROUP},
+ {"instancemap", EDIF_TOK_INSTANCEMAP},
+ {"instanceref", EDIF_TOK_INSTANCEREF},
+ {"integer", EDIF_TOK_INTEGER},
+ {"integerdisplay", EDIF_TOK_INTEGERDISPLAY},
+ {"interface", EDIF_TOK_INTERFACE},
+ {"interfiguregroupspacing", EDIF_TOK_INTERFIGUREGROUPSPACING},
+ {"intersection", EDIF_TOK_INTERSECTION},
+ {"intrafiguregroupspacing", EDIF_TOK_INTRAFIGUREGROUPSPACING},
+ {"inverse", EDIF_TOK_INVERSE},
+ {"isolated", EDIF_TOK_ISOLATED},
+ {"joined", EDIF_TOK_JOINED},
+ {"justify", EDIF_TOK_JUSTIFY},
+ {"keyworddisplay", EDIF_TOK_KEYWORDDISPLAY},
+ {"keywordlevel", EDIF_TOK_KEYWORDLEVEL},
+ {"keywordmap", EDIF_TOK_KEYWORDMAP},
+ {"lessthan", EDIF_TOK_LESSTHAN},
+ {"library", EDIF_TOK_LIBRARY},
+ {"libraryref", EDIF_TOK_LIBRARYREF},
+ {"listofnets", EDIF_TOK_LISTOFNETS},
+ {"listofports", EDIF_TOK_LISTOFPORTS},
+ {"loaddelay", EDIF_TOK_LOADDELAY},
+ {"logicassign", EDIF_TOK_LOGICASSIGN},
+ {"logicinput", EDIF_TOK_LOGICINPUT},
+ {"logiclist", EDIF_TOK_LOGICLIST},
+ {"logicmapinput", EDIF_TOK_LOGICMAPINPUT},
+ {"logicmapoutput", EDIF_TOK_LOGICMAPOUTPUT},
+ {"logiconeof", EDIF_TOK_LOGICONEOF},
+ {"logicoutput", EDIF_TOK_LOGICOUTPUT},
+ {"logicport", EDIF_TOK_LOGICPORT},
+ {"logicref", EDIF_TOK_LOGICREF},
+ {"logicvalue", EDIF_TOK_LOGICVALUE},
+ {"logicwaveform", EDIF_TOK_LOGICWAVEFORM},
+ {"maintain", EDIF_TOK_MAINTAIN},
+ {"match", EDIF_TOK_MATCH},
+ {"member", EDIF_TOK_MEMBER},
+ {"minomax", EDIF_TOK_MINOMAX},
+ {"minomaxdisplay", EDIF_TOK_MINOMAXDISPLAY},
+ {"mnm", EDIF_TOK_MNM},
+ {"multiplevalueset", EDIF_TOK_MULTIPLEVALUESET},
+ {"mustjoin", EDIF_TOK_MUSTJOIN},
+ {"name", EDIF_TOK_NAME},
+ {"net", EDIF_TOK_NET},
+ {"netbackannotate", EDIF_TOK_NETBACKANNOTATE},
+ {"netbundle", EDIF_TOK_NETBUNDLE},
+ {"netdelay", EDIF_TOK_NETDELAY},
+ {"netgroup", EDIF_TOK_NETGROUP},
+ {"netmap", EDIF_TOK_NETMAP},
+ {"netref", EDIF_TOK_NETREF},
+ {"nochange", EDIF_TOK_NOCHANGE},
+ {"nonpermutable", EDIF_TOK_NONPERMUTABLE},
+ {"notallowed", EDIF_TOK_NOTALLOWED},
+ {"notchspacing", EDIF_TOK_NOTCHSPACING},
+ {"number", EDIF_TOK_NUMBER},
+ {"numberdefinition", EDIF_TOK_NUMBERDEFINITION},
+ {"numberdisplay", EDIF_TOK_NUMBERDISPLAY},
+ {"offpageconnector", EDIF_TOK_OFFPAGECONNECTOR},
+ {"offsetevent", EDIF_TOK_OFFSETEVENT},
+ {"openshape", EDIF_TOK_OPENSHAPE},
+ {"orientation", EDIF_TOK_ORIENTATION},
+ {"origin", EDIF_TOK_ORIGIN},
+ {"overhangdistance", EDIF_TOK_OVERHANGDISTANCE},
+ {"overlapdistance", EDIF_TOK_OVERLAPDISTANCE},
+ {"oversize", EDIF_TOK_OVERSIZE},
+ {"owner", EDIF_TOK_OWNER},
+ {"page", EDIF_TOK_PAGE},
+ {"pagesize", EDIF_TOK_PAGESIZE},
+ {"parameter", EDIF_TOK_PARAMETER},
+ {"parameterassign", EDIF_TOK_PARAMETERASSIGN},
+ {"parameterdisplay", EDIF_TOK_PARAMETERDISPLAY},
+ {"path", EDIF_TOK_PATH},
+ {"pathdelay", EDIF_TOK_PATHDELAY},
+ {"pathwidth", EDIF_TOK_PATHWIDTH},
+ {"permutable", EDIF_TOK_PERMUTABLE},
+ {"physicaldesignrule", EDIF_TOK_PHYSICALDESIGNRULE},
+ {"plug", EDIF_TOK_PLUG},
+ {"point", EDIF_TOK_POINT},
+ {"pointdisplay", EDIF_TOK_POINTDISPLAY},
+ {"pointlist", EDIF_TOK_POINTLIST},
+ {"polygon", EDIF_TOK_POLYGON},
+ {"port", EDIF_TOK_PORT},
+ {"portbackannotate", EDIF_TOK_PORTBACKANNOTATE},
+ {"portbundle", EDIF_TOK_PORTBUNDLE},
+ {"portdelay", EDIF_TOK_PORTDELAY},
+ {"portgroup", EDIF_TOK_PORTGROUP},
+ {"portimplementation", EDIF_TOK_PORTIMPLEMENTATION},
+ {"portinstance", EDIF_TOK_PORTINSTANCE},
+ {"portlist", EDIF_TOK_PORTLIST},
+ {"portlistalias", EDIF_TOK_PORTLISTALIAS},
+ {"portmap", EDIF_TOK_PORTMAP},
+ {"portref", EDIF_TOK_PORTREF},
+ {"program", EDIF_TOK_PROGRAM},
+ {"property", EDIF_TOK_PROPERTY},
+ {"propertydisplay", EDIF_TOK_PROPERTYDISPLAY},
+ {"protectionframe", EDIF_TOK_PROTECTIONFRAME},
+ {"pt", EDIF_TOK_PT},
+ {"rangevector", EDIF_TOK_RANGEVECTOR},
+ {"rectangle", EDIF_TOK_RECTANGLE},
+ {"rectanglesize", EDIF_TOK_RECTANGLESIZE},
+ {"rename", EDIF_TOK_RENAME},
+ {"resolves", EDIF_TOK_RESOLVES},
+ {"scale", EDIF_TOK_SCALE},
+ {"scalex", EDIF_TOK_SCALEX},
+ {"scaley", EDIF_TOK_SCALEY},
+ {"section", EDIF_TOK_SECTION},
+ {"shape", EDIF_TOK_SHAPE},
+ {"simulate", EDIF_TOK_SIMULATE},
+ {"simulationinfo", EDIF_TOK_SIMULATIONINFO},
+ {"singlevalueset", EDIF_TOK_SINGLEVALUESET},
+ {"site", EDIF_TOK_SITE},
+ {"socket", EDIF_TOK_SOCKET},
+ {"socketset", EDIF_TOK_SOCKETSET},
+ {"status", EDIF_TOK_STATUS},
+ {"steady", EDIF_TOK_STEADY},
+ {"string", EDIF_TOK_STRING},
+ {"stringdisplay", EDIF_TOK_STRINGDISPLAY},
+ {"strong", EDIF_TOK_STRONG},
+ {"symbol", EDIF_TOK_SYMBOL},
+ {"symmetry", EDIF_TOK_SYMMETRY},
+ {"table", EDIF_TOK_TABLE},
+ {"tabledefault", EDIF_TOK_TABLEDEFAULT},
+ {"technology", EDIF_TOK_TECHNOLOGY},
+ {"textheight", EDIF_TOK_TEXTHEIGHT},
+ {"timeinterval", EDIF_TOK_TIMEINTERVAL},
+ {"timestamp", EDIF_TOK_TIMESTAMP},
+ {"timing", EDIF_TOK_TIMING},
+ {"transform", EDIF_TOK_TRANSFORM},
+ {"transition", EDIF_TOK_TRANSITION},
+ {"trigger", EDIF_TOK_TRIGGER},
+ {"true", EDIF_TOK_TRUE},
+ {"unconstrained", EDIF_TOK_UNCONSTRAINED},
+ {"undefined", EDIF_TOK_UNDEFINED},
+ {"union", EDIF_TOK_UNION},
+ {"unit", EDIF_TOK_UNIT},
+ {"unused", EDIF_TOK_UNUSED},
+ {"userdata", EDIF_TOK_USERDATA},
+ {"version", EDIF_TOK_VERSION},
+ {"view", EDIF_TOK_VIEW},
+ {"viewlist", EDIF_TOK_VIEWLIST},
+ {"viewmap", EDIF_TOK_VIEWMAP},
+ {"viewref", EDIF_TOK_VIEWREF},
+ {"viewtype", EDIF_TOK_VIEWTYPE},
+ {"visible", EDIF_TOK_VISIBLE},
+ {"voltagemap", EDIF_TOK_VOLTAGEMAP},
+ {"wavevalue", EDIF_TOK_WAVEVALUE},
+ {"weak", EDIF_TOK_WEAK},
+ {"weakjoined", EDIF_TOK_WEAKJOINED},
+ {"when", EDIF_TOK_WHEN},
+ {"written", EDIF_TOK_WRITTEN}
+};
+static int ContextDefSize = sizeof(ContextDef) / sizeof(Context);
+/*
+ * Context follower tables:
+ *
+ * This is pretty ugly, an array is defined for each context
+ * which has following context levels. Yet another table is used
+ * to bind these arrays to the originating contexts.
+ * Arrays are declared as:
+ *
+ * static short f_[] = { ... };
+ *
+ * The array entries are the '%token' values for all keywords which
+ * can be reached from the context. Like I said, ugly,
+ * but it works.
+ * A negative entry means that the follow can only occur once within
+ * the specified context.
+ */
+static short f_NULL[] = {EDIF_TOK_EDIF};
+static short f_Edif[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_EDIFVERSION,
+ EDIF_TOK_EDIFLEVEL, EDIF_TOK_KEYWORDMAP,
+ -EDIF_TOK_STATUS, EDIF_TOK_EXTERNAL,
+ EDIF_TOK_LIBRARY, EDIF_TOK_DESIGN, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_AcLoad[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_MINOMAXDISPLAY};
+static short f_After[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_FOLLOW,
+ EDIF_TOK_MAINTAIN, EDIF_TOK_LOGICASSIGN,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_Annotate[] = {EDIF_TOK_STRINGDISPLAY};
+static short f_Apply[] = {EDIF_TOK_CYCLE, EDIF_TOK_LOGICINPUT,
+ EDIF_TOK_LOGICOUTPUT, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_Arc[] = {EDIF_TOK_PT};
+static short f_Array[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME};
+static short f_ArrayMacro[] = {EDIF_TOK_PLUG};
+static short f_ArrayRelatedInfo[] = {EDIF_TOK_BASEARRAY, EDIF_TOK_ARRAYSITE,
+ EDIF_TOK_ARRAYMACRO, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_ArraySite[] = {EDIF_TOK_SOCKET};
+static short f_AtLeast[] = {EDIF_TOK_E};
+static short f_AtMost[] = {EDIF_TOK_E};
+static short f_Becomes[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICLIST,
+ EDIF_TOK_LOGICONEOF};
+/*
+static short f_Between[] = {EDIF_TOK_ATLEAST, EDIF_TOK_GREATERTHAN,
+ EDIF_TOK_ATMOST, EDIF_TOK_LESSTHAN};
+*/
+static short f_Boolean[] = {EDIF_TOK_FALSE, EDIF_TOK_TRUE,
+ EDIF_TOK_BOOLEANDISPLAY, EDIF_TOK_BOOLEAN};
+static short f_BooleanDisplay[] = {EDIF_TOK_FALSE, EDIF_TOK_TRUE,
+ EDIF_TOK_DISPLAY};
+static short f_BooleanMap[] = {EDIF_TOK_FALSE, EDIF_TOK_TRUE};
+static short f_BorderPattern[] = {EDIF_TOK_BOOLEAN};
+static short f_BoundingBox[] = {EDIF_TOK_RECTANGLE};
+static short f_Cell[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_CELLTYPE,
+ -EDIF_TOK_STATUS, -EDIF_TOK_VIEWMAP, EDIF_TOK_VIEW,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA,
+ EDIF_TOK_PROPERTY};
+static short f_CellRef[] = {EDIF_TOK_NAME, EDIF_TOK_LIBRARYREF};
+static short f_Change[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
+ EDIF_TOK_BECOMES, EDIF_TOK_TRANSITION};
+static short f_Circle[] = {EDIF_TOK_PT, EDIF_TOK_PROPERTY};
+static short f_Color[] = {EDIF_TOK_E};
+static short f_CommentGraphics[] = {EDIF_TOK_ANNOTATE, EDIF_TOK_FIGURE,
+ EDIF_TOK_INSTANCE, -EDIF_TOK_BOUNDINGBOX,
+ EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_Compound[] = {EDIF_TOK_NAME};
+static short f_ConnectLocation[] = {EDIF_TOK_FIGURE};
+static short f_Contents[] = {EDIF_TOK_INSTANCE, EDIF_TOK_OFFPAGECONNECTOR,
+ EDIF_TOK_FIGURE, EDIF_TOK_SECTION, EDIF_TOK_NET,
+ EDIF_TOK_NETBUNDLE, EDIF_TOK_PAGE,
+ EDIF_TOK_COMMENTGRAPHICS,
+ EDIF_TOK_PORTIMPLEMENTATION,
+ EDIF_TOK_TIMING, EDIF_TOK_SIMULATE,
+ EDIF_TOK_WHEN, EDIF_TOK_FOLLOW,
+ EDIF_TOK_LOGICPORT, -EDIF_TOK_BOUNDINGBOX,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_Criticality[] = {EDIF_TOK_INTEGERDISPLAY};
+static short f_CurrentMap[] = {EDIF_TOK_MNM, EDIF_TOK_E};
+static short f_Curve[] = {EDIF_TOK_ARC, EDIF_TOK_PT};
+static short f_Cycle[] = {EDIF_TOK_DURATION};
+static short f_DataOrigin[] = {EDIF_TOK_VERSION};
+static short f_DcFanInLoad[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY};
+static short f_DcFanOutLoad[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY};
+static short f_DcMaxFanIn[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY};
+static short f_DcMaxFanOut[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY};
+static short f_Delay[] = {EDIF_TOK_MNM, EDIF_TOK_E};
+static short f_Delta[] = {EDIF_TOK_PT};
+static short f_Design[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_CELLREF,
+ EDIF_TOK_STATUS, EDIF_TOK_COMMENT,
+ EDIF_TOK_PROPERTY, EDIF_TOK_USERDATA};
+static short f_Designator[] = {EDIF_TOK_STRINGDISPLAY};
+static short f_Difference[] = {EDIF_TOK_FIGUREGROUPREF, EDIF_TOK_INTERSECTION,
+ EDIF_TOK_UNION, EDIF_TOK_DIFFERENCE,
+ EDIF_TOK_INVERSE, EDIF_TOK_OVERSIZE};
+static short f_Display[] = {EDIF_TOK_NAME, EDIF_TOK_FIGUREGROUPOVERRIDE,
+ EDIF_TOK_JUSTIFY, EDIF_TOK_ORIENTATION,
+ EDIF_TOK_ORIGIN};
+static short f_Dominates[] = {EDIF_TOK_NAME};
+static short f_Dot[] = {EDIF_TOK_PT, EDIF_TOK_PROPERTY};
+static short f_Duration[] = {EDIF_TOK_E};
+static short f_EnclosureDistance[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_FIGUREGROUPOBJECT,
+ EDIF_TOK_LESSTHAN, EDIF_TOK_GREATERTHAN,
+ EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
+ EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN,
+ EDIF_TOK_SINGLEVALUESET,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_Entry[] = {EDIF_TOK_MATCH, EDIF_TOK_CHANGE, EDIF_TOK_STEADY,
+ EDIF_TOK_LOGICREF, EDIF_TOK_PORTREF,
+ EDIF_TOK_NOCHANGE, EDIF_TOK_TABLE,
+ EDIF_TOK_DELAY, EDIF_TOK_LOADDELAY};
+static short f_Exactly[] = {EDIF_TOK_E};
+static short f_External[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_EDIFLEVEL, EDIF_TOK_TECHNOLOGY,
+ -EDIF_TOK_STATUS, EDIF_TOK_CELL, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_Fabricate[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME};
+static short f_Figure[] = {EDIF_TOK_NAME, EDIF_TOK_FIGUREGROUPOVERRIDE,
+ EDIF_TOK_CIRCLE, EDIF_TOK_DOT, EDIF_TOK_OPENSHAPE,
+ EDIF_TOK_PATH, EDIF_TOK_POLYGON,
+ EDIF_TOK_RECTANGLE, EDIF_TOK_SHAPE,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_FigureArea[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
+ EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
+ EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
+ EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_FigureGroup[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ -EDIF_TOK_CORNERTYPE, -EDIF_TOK_ENDTYPE,
+ -EDIF_TOK_PATHWIDTH, -EDIF_TOK_BORDERWIDTH,
+ -EDIF_TOK_COLOR, -EDIF_TOK_FILLPATTERN,
+ -EDIF_TOK_BORDERPATTERN, -EDIF_TOK_TEXTHEIGHT,
+ -EDIF_TOK_VISIBLE, EDIF_TOK_INCLUDEFIGUREGROUP,
+ EDIF_TOK_COMMENT, EDIF_TOK_PROPERTY,
+ EDIF_TOK_USERDATA};
+static short f_FigureGroupObject[] = {EDIF_TOK_NAME,
+ EDIF_TOK_FIGUREGROUPOBJECT,
+ EDIF_TOK_INTERSECTION, EDIF_TOK_UNION,
+ EDIF_TOK_DIFFERENCE, EDIF_TOK_INVERSE,
+ EDIF_TOK_OVERSIZE};
+static short f_FigureGroupOverride[] = {EDIF_TOK_NAME, -EDIF_TOK_CORNERTYPE,
+ -EDIF_TOK_ENDTYPE, -EDIF_TOK_PATHWIDTH,
+ -EDIF_TOK_BORDERWIDTH, -EDIF_TOK_COLOR,
+ -EDIF_TOK_FILLPATTERN,
+ -EDIF_TOK_TEXTHEIGHT,
+ -EDIF_TOK_BORDERPATTERN,
+ EDIF_TOK_VISIBLE, EDIF_TOK_COMMENT,
+ EDIF_TOK_PROPERTY, EDIF_TOK_USERDATA};
+static short f_FigureGroupRef[] = {EDIF_TOK_NAME, EDIF_TOK_LIBRARYREF};
+static short f_FigurePerimeter[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_FIGUREGROUPOBJECT,
+ EDIF_TOK_LESSTHAN, EDIF_TOK_GREATERTHAN,
+ EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
+ EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN,
+ EDIF_TOK_SINGLEVALUESET, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_FigureWidth[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
+ EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
+ EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
+ EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_FillPattern[] = {EDIF_TOK_BOOLEAN};
+static short f_Follow[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF, EDIF_TOK_TABLE,
+ EDIF_TOK_DELAY, EDIF_TOK_LOADDELAY};
+static short f_ForbiddenEvent[] = {EDIF_TOK_TIMEINTERVAL, EDIF_TOK_EVENT};
+static short f_GlobalPortRef[] = {EDIF_TOK_NAME};
+static short f_GreaterThan[] = {EDIF_TOK_E};
+static short f_GridMap[] = {EDIF_TOK_E};
+static short f_IncludeFigureGroup[] = {EDIF_TOK_FIGUREGROUPREF,
+ EDIF_TOK_INTERSECTION, EDIF_TOK_UNION,
+ EDIF_TOK_DIFFERENCE, EDIF_TOK_INVERSE,
+ EDIF_TOK_OVERSIZE};
+static short f_Instance[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
+ EDIF_TOK_VIEWREF, EDIF_TOK_VIEWLIST,
+ -EDIF_TOK_TRANSFORM, EDIF_TOK_PARAMETERASSIGN,
+ EDIF_TOK_PORTINSTANCE, EDIF_TOK_TIMING,
+ -EDIF_TOK_DESIGNATOR, EDIF_TOK_PROPERTY,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_InstanceBackAnnotate[] = {EDIF_TOK_INSTANCEREF,
+ -EDIF_TOK_DESIGNATOR, EDIF_TOK_TIMING,
+ EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT};
+static short f_InstanceGroup[] = {EDIF_TOK_INSTANCEREF};
+static short f_InstanceMap[] = {EDIF_TOK_INSTANCEREF, EDIF_TOK_INSTANCEGROUP,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_InstanceRef[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
+ EDIF_TOK_INSTANCEREF, EDIF_TOK_VIEWREF};
+static short f_Integer[] = {EDIF_TOK_INTEGERDISPLAY, EDIF_TOK_INTEGER};
+static short f_IntegerDisplay[] = {EDIF_TOK_DISPLAY};
+static short f_Interface[] = {EDIF_TOK_PORT, EDIF_TOK_PORTBUNDLE,
+ -EDIF_TOK_SYMBOL, -EDIF_TOK_PROTECTIONFRAME,
+ -EDIF_TOK_ARRAYRELATEDINFO, EDIF_TOK_PARAMETER,
+ EDIF_TOK_JOINED, EDIF_TOK_MUSTJOIN,
+ EDIF_TOK_WEAKJOINED, EDIF_TOK_PERMUTABLE,
+ EDIF_TOK_TIMING, EDIF_TOK_SIMULATE,
+ -EDIF_TOK_DESIGNATOR, EDIF_TOK_PROPERTY,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_InterFigureGroupSpacing[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_FIGUREGROUPOBJECT,
+ EDIF_TOK_LESSTHAN,
+ EDIF_TOK_GREATERTHAN,
+ EDIF_TOK_ATMOST,
+ EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
+ EDIF_TOK_BETWEEN,
+ EDIF_TOK_SINGLEVALUESET,
+ EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_Intersection[] = {EDIF_TOK_FIGUREGROUPREF,
+ EDIF_TOK_INTERSECTION, EDIF_TOK_UNION,
+ EDIF_TOK_DIFFERENCE, EDIF_TOK_INVERSE,
+ EDIF_TOK_OVERSIZE};
+static short f_IntraFigureGroupSpacing[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_FIGUREGROUPOBJECT,
+ EDIF_TOK_LESSTHAN,
+ EDIF_TOK_GREATERTHAN,
+ EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
+ EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN,
+ EDIF_TOK_SINGLEVALUESET,
+ EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_Inverse[] = {EDIF_TOK_FIGUREGROUPREF, EDIF_TOK_INTERSECTION,
+ EDIF_TOK_UNION, EDIF_TOK_DIFFERENCE,
+ EDIF_TOK_INVERSE, EDIF_TOK_OVERSIZE};
+static short f_Joined[] = {EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
+ EDIF_TOK_GLOBALPORTREF};
+static short f_KeywordDisplay[] = {EDIF_TOK_DISPLAY};
+static short f_KeywordMap[] = {EDIF_TOK_KEYWORDLEVEL, EDIF_TOK_COMMENT};
+static short f_LessThan[] = {EDIF_TOK_E};
+static short f_Library[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_EDIFLEVEL,
+ EDIF_TOK_TECHNOLOGY, -EDIF_TOK_STATUS,
+ EDIF_TOK_CELL, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_LibraryRef[] = {EDIF_TOK_NAME};
+static short f_ListOfNets[] = {EDIF_TOK_NET};
+static short f_ListOfPorts[] = {EDIF_TOK_PORT, EDIF_TOK_PORTBUNDLE};
+static short f_LoadDelay[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_MINOMAXDISPLAY};
+static short f_LogicAssign[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF,
+ EDIF_TOK_LOGICREF, EDIF_TOK_TABLE,
+ EDIF_TOK_DELAY, EDIF_TOK_LOADDELAY};
+static short f_LogicInput[] = {EDIF_TOK_PORTLIST, EDIF_TOK_PORTREF,
+ EDIF_TOK_NAME, EDIF_TOK_LOGICWAVEFORM};
+static short f_LogicList[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICONEOF,
+ EDIF_TOK_IGNORE};
+static short f_LogicMapInput[] = {EDIF_TOK_LOGICREF};
+static short f_LogicMapOutput[] = {EDIF_TOK_LOGICREF};
+static short f_LogicOneOf[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICLIST};
+static short f_LogicOutput[] = {EDIF_TOK_PORTLIST, EDIF_TOK_PORTREF,
+ EDIF_TOK_NAME, EDIF_TOK_LOGICWAVEFORM};
+static short f_LogicPort[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_LogicRef[] = {EDIF_TOK_NAME, EDIF_TOK_LIBRARYREF};
+static short f_LogicValue[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ -EDIF_TOK_VOLTAGEMAP, -EDIF_TOK_CURRENTMAP,
+ -EDIF_TOK_BOOLEANMAP, -EDIF_TOK_COMPOUND,
+ -EDIF_TOK_WEAK ,-EDIF_TOK_STRONG,
+ -EDIF_TOK_DOMINATES, -EDIF_TOK_LOGICMAPOUTPUT,
+ -EDIF_TOK_LOGICMAPINPUT,
+ -EDIF_TOK_ISOLATED, EDIF_TOK_RESOLVES,
+ EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_LogicWaveform[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICLIST,
+ EDIF_TOK_LOGICONEOF, EDIF_TOK_IGNORE};
+static short f_Maintain[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF, EDIF_TOK_DELAY,
+ EDIF_TOK_LOADDELAY};
+static short f_Match[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
+ EDIF_TOK_LOGICLIST, EDIF_TOK_LOGICONEOF};
+static short f_Member[] = {EDIF_TOK_NAME};
+static short f_MiNoMax[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_MINOMAXDISPLAY,
+ EDIF_TOK_MINOMAX};
+static short f_MiNoMaxDisplay[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_DISPLAY};
+static short f_Mnm[] = {EDIF_TOK_E, EDIF_TOK_UNDEFINED,
+ EDIF_TOK_UNCONSTRAINED};
+static short f_MultipleValueSet[] = {EDIF_TOK_RANGEVECTOR};
+static short f_MustJoin[] = {EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
+ EDIF_TOK_WEAKJOINED, EDIF_TOK_JOINED};
+static short f_Name[] = {EDIF_TOK_DISPLAY};
+static short f_Net[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, -EDIF_TOK_CRITICALITY,
+ EDIF_TOK_NETDELAY, EDIF_TOK_FIGURE, EDIF_TOK_NET,
+ EDIF_TOK_INSTANCE, EDIF_TOK_COMMENTGRAPHICS,
+ EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA, EDIF_TOK_JOINED, EDIF_TOK_ARRAY};
+static short f_NetBackAnnotate[] = {EDIF_TOK_NETREF, EDIF_TOK_NETDELAY,
+ -EDIF_TOK_CRITICALITY, EDIF_TOK_PROPERTY,
+ EDIF_TOK_COMMENT};
+static short f_NetBundle[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
+ EDIF_TOK_LISTOFNETS, EDIF_TOK_FIGURE,
+ EDIF_TOK_COMMENTGRAPHICS, EDIF_TOK_PROPERTY,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_NetDelay[] = {EDIF_TOK_DERIVATION, EDIF_TOK_DELAY,
+ EDIF_TOK_TRANSITION, EDIF_TOK_BECOMES};
+static short f_NetGroup[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER, EDIF_TOK_NETREF};
+static short f_NetMap[] = {EDIF_TOK_NETREF, EDIF_TOK_NETGROUP,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_NetRef[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER, EDIF_TOK_NETREF,
+ EDIF_TOK_INSTANCEREF, EDIF_TOK_VIEWREF};
+static short f_NonPermutable[] = {EDIF_TOK_PORTREF, EDIF_TOK_PERMUTABLE};
+static short f_NotAllowed[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_NotchSpacing[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
+ EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
+ EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
+ EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_Number[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY, EDIF_TOK_NUMBER};
+static short f_NumberDefinition[] = {EDIF_TOK_SCALE, -EDIF_TOK_GRIDMAP,
+ EDIF_TOK_COMMENT};
+static short f_NumberDisplay[] = {EDIF_TOK_E, EDIF_TOK_DISPLAY};
+static short f_OffPageConnector[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ -EDIF_TOK_UNUSED, EDIF_TOK_PROPERTY,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_OffsetEvent[] = {EDIF_TOK_EVENT, EDIF_TOK_E};
+static short f_OpenShape[] = {EDIF_TOK_CURVE, EDIF_TOK_PROPERTY};
+static short f_Origin[] = {EDIF_TOK_PT};
+static short f_OverhangDistance[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
+ EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
+ EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
+ EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_OverlapDistance[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
+ EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
+ EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
+ EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_Oversize[] = {EDIF_TOK_FIGUREGROUPREF, EDIF_TOK_INTERSECTION,
+ EDIF_TOK_UNION, EDIF_TOK_DIFFERENCE,
+ EDIF_TOK_INVERSE, EDIF_TOK_OVERSIZE,
+ EDIF_TOK_CORNERTYPE};
+static short f_Page[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
+ EDIF_TOK_INSTANCE, EDIF_TOK_NET, EDIF_TOK_NETBUNDLE,
+ EDIF_TOK_COMMENTGRAPHICS, EDIF_TOK_PORTIMPLEMENTATION,
+ -EDIF_TOK_PAGESIZE, -EDIF_TOK_BOUNDINGBOX,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_PageSize[] = {EDIF_TOK_RECTANGLE};
+static short f_Parameter[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
+ EDIF_TOK_BOOLEAN, EDIF_TOK_INTEGER,
+ EDIF_TOK_MINOMAX, EDIF_TOK_NUMBER,
+ EDIF_TOK_POINT, EDIF_TOK_STRING};
+static short f_ParameterAssign[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
+ EDIF_TOK_BOOLEAN, EDIF_TOK_INTEGER,
+ EDIF_TOK_MINOMAX, EDIF_TOK_NUMBER, EDIF_TOK_POINT,
+ EDIF_TOK_STRING};
+static short f_ParameterDisplay[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
+ EDIF_TOK_DISPLAY};
+static short f_Path[] = {EDIF_TOK_POINTLIST, EDIF_TOK_PROPERTY};
+static short f_PathDelay[] = {EDIF_TOK_DELAY, EDIF_TOK_EVENT};
+static short f_Permutable[] = {EDIF_TOK_PORTREF, EDIF_TOK_PERMUTABLE,
+ EDIF_TOK_NONPERMUTABLE};
+static short f_PhysicalDesignRule[] = {EDIF_TOK_FIGUREWIDTH,
+ EDIF_TOK_FIGUREAREA,
+ EDIF_TOK_RECTANGLESIZE,
+ EDIF_TOK_FIGUREPERIMETER,
+ EDIF_TOK_OVERLAPDISTANCE,
+ EDIF_TOK_OVERHANGDISTANCE,
+ EDIF_TOK_ENCLOSUREDISTANCE,
+ EDIF_TOK_INTERFIGUREGROUPSPACING,
+ EDIF_TOK_NOTCHSPACING,
+ EDIF_TOK_INTRAFIGUREGROUPSPACING,
+ EDIF_TOK_NOTALLOWED,
+ EDIF_TOK_FIGUREGROUP, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_Plug[] = {EDIF_TOK_SOCKETSET};
+static short f_Point[] = {EDIF_TOK_PT, EDIF_TOK_POINTDISPLAY,
+ EDIF_TOK_POINT};
+static short f_PointDisplay[] = {EDIF_TOK_PT, EDIF_TOK_DISPLAY};
+static short f_PointList[] = {EDIF_TOK_PT};
+static short f_Polygon[] = {EDIF_TOK_POINTLIST, EDIF_TOK_PROPERTY};
+static short f_Port[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
+ -EDIF_TOK_DIRECTION, -EDIF_TOK_UNUSED,
+ EDIF_TOK_PORTDELAY, -EDIF_TOK_DESIGNATOR,
+ -EDIF_TOK_DCFANINLOAD, -EDIF_TOK_DCFANOUTLOAD,
+ -EDIF_TOK_DCMAXFANIN, -EDIF_TOK_DCMAXFANOUT,
+ -EDIF_TOK_ACLOAD, EDIF_TOK_PROPERTY,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_PortBackAnnotate[] = {EDIF_TOK_PORTREF, -EDIF_TOK_DESIGNATOR,
+ EDIF_TOK_PORTDELAY, -EDIF_TOK_DCFANINLOAD,
+ -EDIF_TOK_DCFANOUTLOAD,
+ -EDIF_TOK_DCMAXFANIN,
+ -EDIF_TOK_DCMAXFANOUT, -EDIF_TOK_ACLOAD,
+ EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT};
+static short f_PortBundle[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
+ EDIF_TOK_LISTOFPORTS, EDIF_TOK_PROPERTY,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_PortDelay[] = {EDIF_TOK_DERIVATION, EDIF_TOK_DELAY,
+ EDIF_TOK_LOADDELAY, EDIF_TOK_TRANSITION,
+ EDIF_TOK_BECOMES};
+static short f_PortGroup[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
+ EDIF_TOK_PORTREF};
+static short f_PortImplementation[] = {EDIF_TOK_PORTREF, EDIF_TOK_NAME, EDIF_TOK_MEMBER,
+ -EDIF_TOK_CONNECTLOCATION,
+ EDIF_TOK_FIGURE, EDIF_TOK_INSTANCE,
+ EDIF_TOK_COMMENTGRAPHICS,
+ EDIF_TOK_PROPERTYDISPLAY,
+ EDIF_TOK_KEYWORDDISPLAY,
+ EDIF_TOK_PROPERTY,
+ EDIF_TOK_USERDATA, EDIF_TOK_COMMENT};
+static short f_PortInstance[] = {EDIF_TOK_PORTREF, EDIF_TOK_NAME,
+ EDIF_TOK_MEMBER, -EDIF_TOK_UNUSED,
+ EDIF_TOK_PORTDELAY, -EDIF_TOK_DESIGNATOR,
+ -EDIF_TOK_DCFANINLOAD,
+ -EDIF_TOK_DCFANOUTLOAD, -EDIF_TOK_DCMAXFANIN,
+ -EDIF_TOK_DCMAXFANOUT, -EDIF_TOK_ACLOAD,
+ EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_PortList[] = {EDIF_TOK_PORTREF, EDIF_TOK_NAME,
+ EDIF_TOK_MEMBER};
+static short f_PortListAlias[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_ARRAY, EDIF_TOK_PORTLIST};
+static short f_PortMap[] = {EDIF_TOK_PORTREF, EDIF_TOK_PORTGROUP,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_PortRef[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
+ EDIF_TOK_PORTREF, EDIF_TOK_INSTANCEREF,
+ EDIF_TOK_VIEWREF};
+static short f_Program[] = {EDIF_TOK_VERSION};
+static short f_Property[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_BOOLEAN,
+ EDIF_TOK_INTEGER, EDIF_TOK_MINOMAX,
+ EDIF_TOK_NUMBER, EDIF_TOK_POINT, EDIF_TOK_STRING,
+ -EDIF_TOK_OWNER, -EDIF_TOK_UNIT,
+ EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT};
+static short f_PropertyDisplay[] = {EDIF_TOK_NAME, EDIF_TOK_DISPLAY};
+static short f_ProtectionFrame[] = {EDIF_TOK_PORTIMPLEMENTATION,
+ EDIF_TOK_FIGURE, EDIF_TOK_INSTANCE,
+ EDIF_TOK_COMMENTGRAPHICS,
+ -EDIF_TOK_BOUNDINGBOX,
+ EDIF_TOK_PROPERTYDISPLAY,
+ EDIF_TOK_KEYWORDDISPLAY,
+ EDIF_TOK_PARAMETERDISPLAY,
+ EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_RangeVector[] = {EDIF_TOK_LESSTHAN, EDIF_TOK_GREATERTHAN,
+ EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
+ EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN,
+ EDIF_TOK_SINGLEVALUESET};
+static short f_Rectangle[] = {EDIF_TOK_PT, EDIF_TOK_PROPERTY};
+static short f_RectangleSize[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_FIGUREGROUPOBJECT,
+ EDIF_TOK_RANGEVECTOR,
+ EDIF_TOK_MULTIPLEVALUESET,EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_Rename[] = {EDIF_TOK_NAME, EDIF_TOK_STRINGDISPLAY};
+static short f_Resolves[] = {EDIF_TOK_NAME};
+static short f_Scale[] = {EDIF_TOK_E, EDIF_TOK_UNIT};
+static short f_Section[] = {EDIF_TOK_SECTION, EDIF_TOK_INSTANCE};
+static short f_Shape[] = {EDIF_TOK_CURVE, EDIF_TOK_PROPERTY};
+static short f_Simulate[] = {EDIF_TOK_NAME, EDIF_TOK_PORTLISTALIAS,
+ EDIF_TOK_WAVEVALUE, EDIF_TOK_APPLY,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_SimulationInfo[] = {EDIF_TOK_LOGICVALUE, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_SingleValueSet[] = {EDIF_TOK_LESSTHAN, EDIF_TOK_GREATERTHAN,
+ EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
+ EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN};
+static short f_Site[] = {EDIF_TOK_VIEWREF, EDIF_TOK_TRANSFORM};
+static short f_Socket[] = {EDIF_TOK_SYMMETRY};
+static short f_SocketSet[] = {EDIF_TOK_SYMMETRY, EDIF_TOK_SITE};
+static short f_Status[] = {EDIF_TOK_WRITTEN, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_Steady[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER, EDIF_TOK_PORTREF,
+ EDIF_TOK_PORTLIST, EDIF_TOK_DURATION,
+ EDIF_TOK_TRANSITION, EDIF_TOK_BECOMES};
+static short f_String[] = {EDIF_TOK_STRINGDISPLAY, EDIF_TOK_STRING};
+static short f_StringDisplay[] = {EDIF_TOK_DISPLAY};
+static short f_Strong[] = {EDIF_TOK_NAME};
+static short f_Symbol[] = {EDIF_TOK_PORTIMPLEMENTATION, EDIF_TOK_FIGURE,
+ EDIF_TOK_INSTANCE, EDIF_TOK_COMMENTGRAPHICS,
+ EDIF_TOK_ANNOTATE, -EDIF_TOK_PAGESIZE,
+ -EDIF_TOK_BOUNDINGBOX, EDIF_TOK_PROPERTYDISPLAY,
+ EDIF_TOK_KEYWORDDISPLAY, EDIF_TOK_PARAMETERDISPLAY,
+ EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_Symmetry[] = {EDIF_TOK_TRANSFORM};
+static short f_Table[] = {EDIF_TOK_ENTRY, EDIF_TOK_TABLEDEFAULT};
+static short f_TableDefault[] = {EDIF_TOK_LOGICREF, EDIF_TOK_PORTREF,
+ EDIF_TOK_NOCHANGE, EDIF_TOK_TABLE,
+ EDIF_TOK_DELAY, EDIF_TOK_LOADDELAY};
+static short f_Technology[] = {EDIF_TOK_NUMBERDEFINITION, EDIF_TOK_FIGUREGROUP,
+ EDIF_TOK_FABRICATE, -EDIF_TOK_SIMULATIONINFO,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA,
+ -EDIF_TOK_PHYSICALDESIGNRULE};
+static short f_TimeInterval[] = {EDIF_TOK_EVENT, EDIF_TOK_OFFSETEVENT,
+ EDIF_TOK_DURATION};
+static short f_Timing[] = {EDIF_TOK_DERIVATION, EDIF_TOK_PATHDELAY,
+ EDIF_TOK_FORBIDDENEVENT, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_Transform[] = {EDIF_TOK_SCALEX, EDIF_TOK_SCALEY, EDIF_TOK_DELTA,
+ EDIF_TOK_ORIENTATION, EDIF_TOK_ORIGIN};
+static short f_Transition[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICLIST,
+ EDIF_TOK_LOGICONEOF};
+static short f_Trigger[] = {EDIF_TOK_CHANGE, EDIF_TOK_STEADY,
+ EDIF_TOK_INITIAL};
+static short f_Union[] = {EDIF_TOK_FIGUREGROUPREF, EDIF_TOK_INTERSECTION,
+ EDIF_TOK_UNION, EDIF_TOK_DIFFERENCE,
+ EDIF_TOK_INVERSE, EDIF_TOK_OVERSIZE};
+static short f_View[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_VIEWTYPE,
+ EDIF_TOK_INTERFACE, -EDIF_TOK_STATUS,
+ -EDIF_TOK_CONTENTS, EDIF_TOK_COMMENT,
+ EDIF_TOK_PROPERTY, EDIF_TOK_USERDATA};
+static short f_ViewList[] = {EDIF_TOK_VIEWREF, EDIF_TOK_VIEWLIST};
+static short f_ViewMap[] = {EDIF_TOK_PORTMAP, EDIF_TOK_PORTBACKANNOTATE,
+ EDIF_TOK_INSTANCEMAP,
+ EDIF_TOK_INSTANCEBACKANNOTATE, EDIF_TOK_NETMAP,
+ EDIF_TOK_NETBACKANNOTATE, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_ViewRef[] = {EDIF_TOK_NAME, EDIF_TOK_CELLREF};
+static short f_Visible[] = {EDIF_TOK_FALSE, EDIF_TOK_TRUE};
+static short f_VoltageMap[] = {EDIF_TOK_MNM, EDIF_TOK_E};
+static short f_WaveValue[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_E,
+ EDIF_TOK_LOGICWAVEFORM};
+static short f_Weak[] = {EDIF_TOK_NAME};
+static short f_WeakJoined[] = {EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
+ EDIF_TOK_JOINED};
+static short f_When[] = {EDIF_TOK_TRIGGER, EDIF_TOK_AFTER,
+ EDIF_TOK_FOLLOW, EDIF_TOK_MAINTAIN,
+ EDIF_TOK_LOGICASSIGN, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_Written[] = {EDIF_TOK_TIMESTAMP, EDIF_TOK_AUTHOR,
+ EDIF_TOK_PROGRAM, EDIF_TOK_DATAORIGIN,
+ EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+/*
+ * Context binding table:
+ *
+ * This binds context follower arrays to their originating context.
+ */
+typedef struct Binder {
+ short *Follower; /* pointer to follower array */
+ short Origin; /* '%token' value of origin */
+ short FollowerSize; /* size of follower array */
+} Binder;
+#define BE(f,o) {f,o,sizeof(f)/sizeof(short)}
+static Binder BinderDef[] = {
+ BE(f_NULL, 0),
+ BE(f_Edif, EDIF_TOK_EDIF),
+ BE(f_AcLoad, EDIF_TOK_ACLOAD),
+ BE(f_After, EDIF_TOK_AFTER),
+ BE(f_Annotate, EDIF_TOK_ANNOTATE),
+ BE(f_Apply, EDIF_TOK_APPLY),
+ BE(f_Arc, EDIF_TOK_ARC),
+ BE(f_Array, EDIF_TOK_ARRAY),
+ BE(f_ArrayMacro, EDIF_TOK_ARRAYMACRO),
+ BE(f_ArrayRelatedInfo, EDIF_TOK_ARRAYRELATEDINFO),
+ BE(f_ArraySite, EDIF_TOK_ARRAYSITE),
+ BE(f_AtLeast, EDIF_TOK_ATLEAST),
+ BE(f_AtMost, EDIF_TOK_ATMOST),
+ BE(f_Becomes, EDIF_TOK_BECOMES),
+ BE(f_Boolean, EDIF_TOK_BOOLEAN),
+ BE(f_BooleanDisplay, EDIF_TOK_BOOLEANDISPLAY),
+ BE(f_BooleanMap, EDIF_TOK_BOOLEANMAP),
+ BE(f_BorderPattern, EDIF_TOK_BORDERPATTERN),
+ BE(f_BoundingBox, EDIF_TOK_BOUNDINGBOX),
+ BE(f_Cell, EDIF_TOK_CELL),
+ BE(f_CellRef, EDIF_TOK_CELLREF),
+ BE(f_Change, EDIF_TOK_CHANGE),
+ BE(f_Circle, EDIF_TOK_CIRCLE),
+ BE(f_Color, EDIF_TOK_COLOR),
+ BE(f_CommentGraphics, EDIF_TOK_COMMENTGRAPHICS),
+ BE(f_Compound, EDIF_TOK_COMPOUND),
+ BE(f_ConnectLocation, EDIF_TOK_CONNECTLOCATION),
+ BE(f_Contents, EDIF_TOK_CONTENTS),
+ BE(f_Criticality, EDIF_TOK_CRITICALITY),
+ BE(f_CurrentMap, EDIF_TOK_CURRENTMAP),
+ BE(f_Curve, EDIF_TOK_CURVE),
+ BE(f_Cycle, EDIF_TOK_CYCLE),
+ BE(f_DataOrigin, EDIF_TOK_DATAORIGIN),
+ BE(f_DcFanInLoad, EDIF_TOK_DCFANINLOAD),
+ BE(f_DcFanOutLoad, EDIF_TOK_DCFANOUTLOAD),
+ BE(f_DcMaxFanIn, EDIF_TOK_DCMAXFANIN),
+ BE(f_DcMaxFanOut, EDIF_TOK_DCMAXFANOUT),
+ BE(f_Delay, EDIF_TOK_DELAY),
+ BE(f_Delta, EDIF_TOK_DELTA),
+ BE(f_Design, EDIF_TOK_DESIGN),
+ BE(f_Designator, EDIF_TOK_DESIGNATOR),
+ BE(f_Difference, EDIF_TOK_DIFFERENCE),
+ BE(f_Display, EDIF_TOK_DISPLAY),
+ BE(f_Dominates, EDIF_TOK_DOMINATES),
+ BE(f_Dot, EDIF_TOK_DOT),
+ BE(f_Duration, EDIF_TOK_DURATION),
+ BE(f_EnclosureDistance, EDIF_TOK_ENCLOSUREDISTANCE),
+ BE(f_Entry, EDIF_TOK_ENTRY),
+ BE(f_Exactly, EDIF_TOK_EXACTLY),
+ BE(f_External, EDIF_TOK_EXTERNAL),
+ BE(f_Fabricate, EDIF_TOK_FABRICATE),
+ BE(f_Figure, EDIF_TOK_FIGURE),
+ BE(f_FigureArea, EDIF_TOK_FIGUREAREA),
+ BE(f_FigureGroup, EDIF_TOK_FIGUREGROUP),
+ BE(f_FigureGroupObject, EDIF_TOK_FIGUREGROUPOBJECT),
+ BE(f_FigureGroupOverride, EDIF_TOK_FIGUREGROUPOVERRIDE),
+ BE(f_FigureGroupRef, EDIF_TOK_FIGUREGROUPREF),
+ BE(f_FigurePerimeter, EDIF_TOK_FIGUREPERIMETER),
+ BE(f_FigureWidth, EDIF_TOK_FIGUREWIDTH),
+ BE(f_FillPattern, EDIF_TOK_FILLPATTERN),
+ BE(f_Follow, EDIF_TOK_FOLLOW),
+ BE(f_ForbiddenEvent, EDIF_TOK_FORBIDDENEVENT),
+ BE(f_GlobalPortRef, EDIF_TOK_GLOBALPORTREF),
+ BE(f_GreaterThan, EDIF_TOK_GREATERTHAN),
+ BE(f_GridMap, EDIF_TOK_GRIDMAP),
+ BE(f_IncludeFigureGroup, EDIF_TOK_INCLUDEFIGUREGROUP),
+ BE(f_Instance, EDIF_TOK_INSTANCE),
+ BE(f_InstanceBackAnnotate, EDIF_TOK_INSTANCEBACKANNOTATE),
+ BE(f_InstanceGroup, EDIF_TOK_INSTANCEGROUP),
+ BE(f_InstanceMap, EDIF_TOK_INSTANCEMAP),
+ BE(f_InstanceRef, EDIF_TOK_INSTANCEREF),
+ BE(f_Integer, EDIF_TOK_INTEGER),
+ BE(f_IntegerDisplay, EDIF_TOK_INTEGERDISPLAY),
+ BE(f_InterFigureGroupSpacing, EDIF_TOK_INTERFIGUREGROUPSPACING),
+ BE(f_Interface, EDIF_TOK_INTERFACE),
+ BE(f_Intersection, EDIF_TOK_INTERSECTION),
+ BE(f_IntraFigureGroupSpacing, EDIF_TOK_INTRAFIGUREGROUPSPACING),
+ BE(f_Inverse, EDIF_TOK_INVERSE),
+ BE(f_Joined, EDIF_TOK_JOINED),
+ BE(f_KeywordDisplay, EDIF_TOK_KEYWORDDISPLAY),
+ BE(f_KeywordMap, EDIF_TOK_KEYWORDMAP),
+ BE(f_LessThan, EDIF_TOK_LESSTHAN),
+ BE(f_Library, EDIF_TOK_LIBRARY),
+ BE(f_LibraryRef, EDIF_TOK_LIBRARYREF),
+ BE(f_ListOfNets, EDIF_TOK_LISTOFNETS),
+ BE(f_ListOfPorts, EDIF_TOK_LISTOFPORTS),
+ BE(f_LoadDelay, EDIF_TOK_LOADDELAY),
+ BE(f_LogicAssign, EDIF_TOK_LOGICASSIGN),
+ BE(f_LogicInput, EDIF_TOK_LOGICINPUT),
+ BE(f_LogicList, EDIF_TOK_LOGICLIST),
+ BE(f_LogicMapInput, EDIF_TOK_LOGICMAPINPUT),
+ BE(f_LogicMapOutput, EDIF_TOK_LOGICMAPOUTPUT),
+ BE(f_LogicOneOf, EDIF_TOK_LOGICONEOF),
+ BE(f_LogicOutput, EDIF_TOK_LOGICOUTPUT),
+ BE(f_LogicPort, EDIF_TOK_LOGICPORT),
+ BE(f_LogicRef, EDIF_TOK_LOGICREF),
+ BE(f_LogicValue, EDIF_TOK_LOGICVALUE),
+ BE(f_LogicWaveform, EDIF_TOK_LOGICWAVEFORM),
+ BE(f_Maintain, EDIF_TOK_MAINTAIN),
+ BE(f_Match, EDIF_TOK_MATCH),
+ BE(f_Member, EDIF_TOK_MEMBER),
+ BE(f_MiNoMax, EDIF_TOK_MINOMAX),
+ BE(f_MiNoMaxDisplay, EDIF_TOK_MINOMAXDISPLAY),
+ BE(f_Mnm, EDIF_TOK_MNM),
+ BE(f_MultipleValueSet, EDIF_TOK_MULTIPLEVALUESET),
+ BE(f_MustJoin, EDIF_TOK_MUSTJOIN),
+ BE(f_Name, EDIF_TOK_NAME),
+ BE(f_Net, EDIF_TOK_NET),
+ BE(f_NetBackAnnotate, EDIF_TOK_NETBACKANNOTATE),
+ BE(f_NetBundle, EDIF_TOK_NETBUNDLE),
+ BE(f_NetDelay, EDIF_TOK_NETDELAY),
+ BE(f_NetGroup, EDIF_TOK_NETGROUP),
+ BE(f_NetMap, EDIF_TOK_NETMAP),
+ BE(f_NetRef, EDIF_TOK_NETREF),
+ BE(f_NonPermutable, EDIF_TOK_NONPERMUTABLE),
+ BE(f_NotAllowed, EDIF_TOK_NOTALLOWED),
+ BE(f_NotchSpacing, EDIF_TOK_NOTCHSPACING),
+ BE(f_Number, EDIF_TOK_NUMBER),
+ BE(f_NumberDefinition, EDIF_TOK_NUMBERDEFINITION),
+ BE(f_NumberDisplay, EDIF_TOK_NUMBERDISPLAY),
+ BE(f_OffPageConnector, EDIF_TOK_OFFPAGECONNECTOR),
+ BE(f_OffsetEvent, EDIF_TOK_OFFSETEVENT),
+ BE(f_OpenShape, EDIF_TOK_OPENSHAPE),
+ BE(f_Origin, EDIF_TOK_ORIGIN),
+ BE(f_OverhangDistance, EDIF_TOK_OVERHANGDISTANCE),
+ BE(f_OverlapDistance, EDIF_TOK_OVERLAPDISTANCE),
+ BE(f_Oversize, EDIF_TOK_OVERSIZE),
+ BE(f_Page, EDIF_TOK_PAGE),
+ BE(f_PageSize, EDIF_TOK_PAGESIZE),
+ BE(f_Parameter, EDIF_TOK_PARAMETER),
+ BE(f_ParameterAssign, EDIF_TOK_PARAMETERASSIGN),
+ BE(f_ParameterDisplay, EDIF_TOK_PARAMETERDISPLAY),
+ BE(f_Path, EDIF_TOK_PATH),
+ BE(f_PathDelay, EDIF_TOK_PATHDELAY),
+ BE(f_Permutable, EDIF_TOK_PERMUTABLE),
+ BE(f_PhysicalDesignRule, EDIF_TOK_PHYSICALDESIGNRULE),
+ BE(f_Plug, EDIF_TOK_PLUG),
+ BE(f_Point, EDIF_TOK_POINT),
+ BE(f_PointDisplay, EDIF_TOK_POINTDISPLAY),
+ BE(f_PointList, EDIF_TOK_POINTLIST),
+ BE(f_Polygon, EDIF_TOK_POLYGON),
+ BE(f_Port, EDIF_TOK_PORT),
+ BE(f_PortBackAnnotate, EDIF_TOK_PORTBACKANNOTATE),
+ BE(f_PortBundle, EDIF_TOK_PORTBUNDLE),
+ BE(f_PortDelay, EDIF_TOK_PORTDELAY),
+ BE(f_PortGroup, EDIF_TOK_PORTGROUP),
+ BE(f_PortImplementation, EDIF_TOK_PORTIMPLEMENTATION),
+ BE(f_PortInstance, EDIF_TOK_PORTINSTANCE),
+ BE(f_PortList, EDIF_TOK_PORTLIST),
+ BE(f_PortListAlias, EDIF_TOK_PORTLISTALIAS),
+ BE(f_PortMap, EDIF_TOK_PORTMAP),
+ BE(f_PortRef, EDIF_TOK_PORTREF),
+ BE(f_Program, EDIF_TOK_PROGRAM),
+ BE(f_Property, EDIF_TOK_PROPERTY),
+ BE(f_PropertyDisplay, EDIF_TOK_PROPERTYDISPLAY),
+ BE(f_ProtectionFrame, EDIF_TOK_PROTECTIONFRAME),
+ BE(f_RangeVector, EDIF_TOK_RANGEVECTOR),
+ BE(f_Rectangle, EDIF_TOK_RECTANGLE),
+ BE(f_RectangleSize, EDIF_TOK_RECTANGLESIZE),
+ BE(f_Rename, EDIF_TOK_RENAME),
+ BE(f_Resolves, EDIF_TOK_RESOLVES),
+ BE(f_Scale, EDIF_TOK_SCALE),
+ BE(f_Section, EDIF_TOK_SECTION),
+ BE(f_Shape, EDIF_TOK_SHAPE),
+ BE(f_Simulate, EDIF_TOK_SIMULATE),
+ BE(f_SimulationInfo, EDIF_TOK_SIMULATIONINFO),
+ BE(f_SingleValueSet, EDIF_TOK_SINGLEVALUESET),
+ BE(f_Site, EDIF_TOK_SITE),
+ BE(f_Socket, EDIF_TOK_SOCKET),
+ BE(f_SocketSet, EDIF_TOK_SOCKETSET),
+ BE(f_Status, EDIF_TOK_STATUS),
+ BE(f_Steady, EDIF_TOK_STEADY),
+ BE(f_String, EDIF_TOK_STRING),
+ BE(f_StringDisplay, EDIF_TOK_STRINGDISPLAY),
+ BE(f_Strong, EDIF_TOK_STRONG),
+ BE(f_Symbol, EDIF_TOK_SYMBOL),
+ BE(f_Symmetry, EDIF_TOK_SYMMETRY),
+ BE(f_Table, EDIF_TOK_TABLE),
+ BE(f_TableDefault, EDIF_TOK_TABLEDEFAULT),
+ BE(f_Technology, EDIF_TOK_TECHNOLOGY),
+ BE(f_TimeInterval, EDIF_TOK_TIMEINTERVAL),
+ BE(f_Timing, EDIF_TOK_TIMING),
+ BE(f_Transform, EDIF_TOK_TRANSFORM),
+ BE(f_Transition, EDIF_TOK_TRANSITION),
+ BE(f_Trigger, EDIF_TOK_TRIGGER),
+ BE(f_Union, EDIF_TOK_UNION),
+ BE(f_View, EDIF_TOK_VIEW),
+ BE(f_ViewList, EDIF_TOK_VIEWLIST),
+ BE(f_ViewMap, EDIF_TOK_VIEWMAP),
+ BE(f_ViewRef, EDIF_TOK_VIEWREF),
+ BE(f_Visible, EDIF_TOK_VISIBLE),
+ BE(f_VoltageMap, EDIF_TOK_VOLTAGEMAP),
+ BE(f_WaveValue, EDIF_TOK_WAVEVALUE),
+ BE(f_Weak, EDIF_TOK_WEAK),
+ BE(f_WeakJoined, EDIF_TOK_WEAKJOINED),
+ BE(f_When, EDIF_TOK_WHEN),
+ BE(f_Written, EDIF_TOK_WRITTEN)
+};
+static int BinderDefSize = sizeof(BinderDef) / sizeof(Binder);
+/*
+ * Keyword table:
+ *
+ * This hash table holds all strings which may have to be matched
+ * to. WARNING: it is assumed that there is no overlap of the 'token'
+ * and 'context' strings.
+ */
+typedef struct Keyword {
+ struct Keyword *Next; /* pointer to next entry */
+ char *String; /* pointer to associated string */
+} Keyword;
+#define KEYWORD_HASH 127 /* hash table size */
+static Keyword *KeywordTable[KEYWORD_HASH];
+/*
+ * Enter keyword:
+ *
+ * The passed string is entered into the keyword hash table.
+ */
+static void EnterKeyword(char * str)
+{
+ /*
+ * Locals.
+ */
+ register Keyword *key;
+ register unsigned int hsh;
+ register char *cp;
+ /*
+ * Create the hash code, and add an entry to the table.
+ */
+ for (hsh = 0, cp = str; *cp; hsh += hsh + *cp++);
+ hsh %= KEYWORD_HASH;
+ key = (Keyword *) Malloc(sizeof(Keyword));
+ key->Next = KeywordTable[hsh];
+ (KeywordTable[hsh] = key)->String = str;
+}
+/*
+ * Find keyword:
+ *
+ * The passed string is located within the keyword table. If an
+ * entry exists, then the value of the keyword string is returned. This
+ * is real useful for doing string comparisons by pointer value later.
+ * If there is no match, a NULL is returned.
+ */
+static char *FindKeyword(char * str)
+{
+ /*
+ * Locals.
+ */
+ register Keyword *wlk,*owk;
+ register unsigned int hsh;
+ register char *cp;
+ char lower[IDENT_LENGTH + 1];
+ /*
+ * Create a lower case copy of the string.
+ */
+ for (cp = lower; *str;)
+ if (isupper( (int) *str))
+ *cp++ = tolower( (int) *str++);
+ else
+ *cp++ = *str++;
+ *cp = '\0';
+ /*
+ * Search the hash table for a match.
+ */
+ for (hsh = 0, cp = lower; *cp; hsh += hsh + *cp++);
+ hsh %= KEYWORD_HASH;
+ for (owk = NULL, wlk = KeywordTable[hsh]; wlk; wlk = (owk = wlk)->Next)
+ if (!strcmp(wlk->String,lower)){
+ /*
+ * Readjust the LRU.
+ */
+ if (owk){
+ owk->Next = wlk->Next;
+ wlk->Next = KeywordTable[hsh];
+ KeywordTable[hsh] = wlk;
+ }
+ return (wlk->String);
+ }
+ return (NULL);
+}
+/*
+ * Token hash table.
+ */
+#define TOKEN_HASH 51
+static Token *TokenHash[TOKEN_HASH];
+/*
+ * Find token:
+ *
+ * A pointer to the token of the passed code is returned. If
+ * no such beastie is present a NULL is returned instead.
+ */
+static Token *FindToken(register int cod)
+{
+ /*
+ * Locals.
+ */
+ register Token *wlk,*owk;
+ register unsigned int hsh;
+ /*
+ * Search the hash table for a matching token.
+ */
+ hsh = cod % TOKEN_HASH;
+ for (owk = NULL, wlk = TokenHash[hsh]; wlk; wlk = (owk = wlk)->Next)
+ if (cod == wlk->Code){
+ if (owk){
+ owk->Next = wlk->Next;
+ wlk->Next = TokenHash[hsh];
+ TokenHash[hsh] = wlk;
+ }
+ break;
+ }
+ return (wlk);
+}
+/*
+ * Context hash table.
+ */
+#define CONTEXT_HASH 127
+static Context *ContextHash[CONTEXT_HASH];
+/*
+ * Find context:
+ *
+ * A pointer to the context of the passed code is returned. If
+ * no such beastie is present a NULL is returned instead.
+ */
+static Context *FindContext(register int cod)
+{
+ /*
+ * Locals.
+ */
+ register Context *wlk,*owk;
+ register unsigned int hsh;
+ /*
+ * Search the hash table for a matching context.
+ */
+ hsh = cod % CONTEXT_HASH;
+ for (owk = NULL, wlk = ContextHash[hsh]; wlk; wlk = (owk = wlk)->Next)
+ if (cod == wlk->Code){
+ if (owk){
+ owk->Next = wlk->Next;
+ wlk->Next = ContextHash[hsh];
+ ContextHash[hsh] = wlk;
+ }
+ break;
+ }
+ return (wlk);
+}
+/*
+ * Token stacking variables.
+ */
+#ifdef DEBUG
+#define TS_DEPTH 8
+#define TS_MASK (TS_DEPTH - 1)
+static unsigned int TSP = 0; /* token stack pointer */
+static char *TokenStack[TS_DEPTH]; /* token name strings */
+static short TokenType[TS_DEPTH]; /* token types */
+/*
+ * Stack:
+ *
+ * Add a token to the debug stack. The passed string and type are
+ * what is to be pushed.
+ */
+static Stack(char * str, int typ)
+{
+ /*
+ * Free any previous string, then push.
+ */
+ if (TokenStack[TSP & TS_MASK])
+ Free(TokenStack[TSP & TS_MASK]);
+ TokenStack[TSP & TS_MASK] = strcpy((char *)Malloc(strlen(str) + 1),str);
+ TokenType[TSP & TS_MASK] = typ;
+ TSP += 1;
+}
+/*
+ * Dump stack:
+ *
+ * This displays the last set of accumulated tokens.
+ */
+static DumpStack()
+{
+ /*
+ * Locals.
+ */
+ register int i;
+ register Context *cxt;
+ register Token *tok;
+ register char *nam;
+ /*
+ * Run through the list displaying the oldest first.
+ */
+ fprintf(Error,"\n\n");
+ for (i = 0; i < TS_DEPTH; i += 1)
+ if (TokenStack[(TSP + i) & TS_MASK]){
+ /*
+ * Get the type name string.
+ */
+ if (cxt = FindContext(TokenType[(TSP + i) & TS_MASK]))
+ nam = cxt->Name;
+ else if (tok = FindToken(TokenType[(TSP + i) & TS_MASK]))
+ nam = tok->Name;
+ else switch (TokenType[(TSP + i) & TS_MASK]){
+ case IDENT: nam = "IDENT"; break;
+ case INT: nam = "INT"; break;
+ case KEYWORD: nam = "KEYWORD"; break;
+ case STR: nam = "STR"; break;
+ default: nam = "?"; break;
+ }
+ /*
+ * Now print the token state.
+ */
+ fprintf(Error,"%2d %-16.16s '%s'\n",TS_DEPTH - i,nam,
+ TokenStack[(TSP + i) & TS_MASK]);
+ }
+ fprintf(Error,"\n");
+}
+#else
+#define Stack(s,t)
+#endif /* DEBUG */
+/*
+ * Parser state variables.
+ */
+static FILE *Input = NULL; /* input stream */
+static FILE *Error = NULL; /* error stream */
+static char *InFile; /* file name on the input stream */
+static long LineNumber; /* current input line number */
+static ContextCar *CSP = NULL; /* top of context stack */
+static char yytext[IDENT_LENGTH + 1]; /* token buffer */
+static char CharBuf[IDENT_LENGTH + 1]; /* garbage buffer */
+/*
+ * yyerror:
+ *
+ * Standard error reporter, it prints out the passed string
+ * preceeded by the current filename and line number.
+ */
+static void yyerror(const char *ers)
+{
+#ifdef DEBUG
+ DumpStack();
+#endif /* DEBUG */
+ fprintf(Error,"%s, line %ld: %s\n",InFile,LineNumber,ers);
+}
+/*
+ * String bucket definitions.
+ */
+#define BUCKET_SIZE 64
+typedef struct Bucket {
+ struct Bucket *Next; /* pointer to next bucket */
+ int Index; /* pointer to next free slot */
+ char Data[BUCKET_SIZE]; /* string data */
+} Bucket;
+static Bucket *CurrentBucket = NULL; /* string bucket list */
+static int StringSize = 0; /* current string length */
+/*
+ * Push string:
+ *
+ * This adds the passed charater to the current string bucket.
+ */
+static void PushString(char chr)
+{
+ /*
+ * Locals.
+ */
+ register Bucket *bck;
+ /*
+ * Make sure there is room for the push.
+ */
+ if ((bck = CurrentBucket)->Index >= BUCKET_SIZE){
+ bck = (Bucket *) Malloc(sizeof(Bucket));
+ bck->Next = CurrentBucket;
+ (CurrentBucket = bck)->Index = 0;
+ }
+ /*
+ * Push the character.
+ */
+ bck->Data[bck->Index++] = chr;
+ StringSize += 1;
+}
+/*
+ * Form string:
+ *
+ * This converts the current string bucket into a real live string,
+ * whose pointer is returned.
+ */
+static char *FormString()
+{
+ /*
+ * Locals.
+ */
+ register Bucket *bck;
+ register char *cp;
+ /*
+ * Allocate space for the string, set the pointer at the end.
+ */
+ cp = (char *) Malloc(StringSize + 1);
+
+ cp += StringSize;
+ *cp-- = '\0';
+ /*
+ * Yank characters out of the bucket.
+ */
+ for (bck = CurrentBucket; bck->Index || bck->Next;){
+ if (!bck->Index){
+ CurrentBucket = bck->Next;
+ Free(bck);
+ bck = CurrentBucket;
+ }
+ *cp-- = bck->Data[--bck->Index];
+ }
+ /* reset buffer size to zero */
+ StringSize =0;
+ return (cp + 1);
+}
+/*
+ * Parse EDIF:
+ *
+ * This builds the context tree and then calls the real parser.
+ * It is passed two file streams, the first is where the input comes
+ * from; the second is where error messages get printed.
+ */
+void ParseEDIF(char* filename,FILE* err)
+{
+ /*
+ * Locals.
+ */
+ register int i;
+ static int ContextDefined = 1;
+ /*
+ * Set up the file state to something useful.
+ */
+ InFile = filename;
+ Input = fopen(filename,"r");
+ Error = err;
+ LineNumber = 1;
+ /*
+ * Define both the enabled token and context strings.
+ */
+ if (ContextDefined){
+ for (i = TokenDefSize; i--; EnterKeyword(TokenDef[i].Name)){
+ register unsigned int hsh;
+ hsh = TokenDef[i].Code % TOKEN_HASH;
+ TokenDef[i].Next = TokenHash[hsh];
+ TokenHash[hsh] = &TokenDef[i];
+ }
+ for (i = ContextDefSize; i--; EnterKeyword(ContextDef[i].Name)){
+ register unsigned int hsh;
+ hsh = ContextDef[i].Code % CONTEXT_HASH;
+ ContextDef[i].Next = ContextHash[hsh];
+ ContextHash[hsh] = &ContextDef[i];
+ }
+ /*
+ * Build the context tree.
+ */
+ for (i = BinderDefSize; i--;){
+ register Context *cxt;
+ register int j;
+ /*
+ * Define the current context to have carriers bound to it.
+ */
+ cxt = FindContext(BinderDef[i].Origin);
+ for (j = BinderDef[i].FollowerSize; j--;){
+ register ContextCar *cc;
+ /*
+ * Add carriers to the current context.
+ */
+ cc = (ContextCar *) Malloc(sizeof(ContextCar));
+ cc->Next = cxt->Context;
+ (cxt->Context = cc)->Context =
+ FindContext(ABS(BinderDef[i].Follower[j]));
+ cc->u.Single = BinderDef[i].Follower[j] < 0;
+ }
+ }
+ /*
+ * Build the token tree.
+ */
+ for (i = TieDefSize; i--;){
+ register Context *cxt;
+ register int j;
+ /*
+ * Define the current context to have carriers bound to it.
+ */
+ cxt = FindContext(TieDef[i].Origin);
+ for (j = TieDef[i].EnableSize; j--;){
+ register TokenCar *tc;
+ /*
+ * Add carriers to the current context.
+ */
+ tc = (TokenCar *) Malloc(sizeof(TokenCar));
+ tc->Next = cxt->Token;
+ (cxt->Token = tc)->Token = FindToken(TieDef[i].Enable[j]);
+ }
+ }
+ /*
+ * Put a bogus context on the stack which has 'EDIF' as its
+ * follower.
+ */
+ CSP = (ContextCar *) Malloc(sizeof(ContextCar));
+ CSP->Next = NULL;
+ CSP->Context = FindContext(0);
+ CSP->u.Used = NULL;
+ ContextDefined = 0;
+ }
+ /*
+ * Create an initial, empty string bucket.
+ */
+ CurrentBucket = (Bucket *) Malloc(sizeof(Bucket));
+ CurrentBucket->Next = 0;
+ CurrentBucket->Index = 0;
+ /*
+ * Fill the token stack with NULLs if debugging is enabled.
+ */
+#ifdef DEBUG
+ for (i = TS_DEPTH; i--; TokenStack[i] = NULL)
+ if (TokenStack[i])
+ Free(TokenStack[i]);
+ TSP = 0;
+#endif /* DEBUG */
+ /*
+ * Go parse things!
+ */
+ edifparse();
+}
+/*
+ * Match token:
+ *
+ * The passed string is looked up in the current context's token
+ * list to see if it is enabled. If so the token value is returned,
+ * if not then zero.
+ */
+static int MatchToken(register char * str)
+{
+ /*
+ * Locals.
+ */
+ register TokenCar *wlk,*owk;
+ /*
+ * Convert the string to the proper form, then search the token
+ * carrier list for a match.
+ */
+ str = FindKeyword(str);
+ for (owk = NULL, wlk = CSP->Context->Token; wlk; wlk = (owk = wlk)->Next)
+ if (str == wlk->Token->Name){
+ if (owk){
+ owk->Next = wlk->Next;
+ wlk->Next = CSP->Context->Token;
+ CSP->Context->Token = wlk;
+ }
+ return (wlk->Token->Code);
+ }
+ return (0);
+}
+/*
+ * Match context:
+ *
+ * If the passed keyword string is within the current context, the
+ * new context is pushed and token value is returned. A zero otherwise.
+ */
+static int MatchContext(register char * str)
+{
+ /*
+ * Locals.
+ */
+ register ContextCar *wlk,*owk;
+ /*
+ * See if the context is present.
+ */
+ str = FindKeyword(str);
+ for (owk = NULL, wlk = CSP->Context->Context; wlk; wlk = (owk = wlk)->Next)
+ if (str == wlk->Context->Name){
+ if (owk){
+ owk->Next = wlk->Next;
+ wlk->Next = CSP->Context->Context;
+ CSP->Context->Context = wlk;
+ }
+ /*
+ * If a single context, make sure it isn't already used.
+ */
+ if (wlk->u.Single){
+ register UsedCar *usc;
+ for (usc = CSP->u.Used; usc; usc = usc->Next)
+ if (usc->Code == wlk->Context->Code)
+ break;
+ if (usc){
+ sprintf(CharBuf,"'%s' is used more than once within '%s'",
+ str,CSP->Context->Name);
+ yyerror(CharBuf);
+ } else {
+ usc = (UsedCar *) Malloc(sizeof(UsedCar));
+ usc->Next = CSP->u.Used;
+ (CSP->u.Used = usc)->Code = wlk->Context->Code;
+ }
+ }
+ /*
+ * Push the new context.
+ */
+ owk = (ContextCar *) Malloc(sizeof(ContextCar));
+ owk->Next = CSP;
+ (CSP = owk)->Context = wlk->Context;
+ owk->u.Used = NULL;
+ return (wlk->Context->Code);
+ }
+ return (0);
+}
+/*
+ * PopC:
+ *
+ * This pops the current context.
+ */
+static void PopC()
+{
+ /*
+ * Locals.
+ */
+ register UsedCar *usc;
+ register ContextCar *csp;
+ /*
+ * Release single markers and pop context.
+ */
+ while ( (usc = CSP->u.Used) ){
+ CSP->u.Used = usc->Next;
+ Free(usc);
+ }
+ csp = CSP->Next;
+ Free(CSP);
+ CSP = csp;
+}
+/*
+ * Lexical analyzer states.
+ */
+#define L_START 0
+#define L_INT 1
+#define L_IDENT 2
+#define L_KEYWORD 3
+#define L_STRING 4
+#define L_KEYWORD2 5
+#define L_ASCIICHAR 6
+#define L_ASCIICHAR2 7
+/*
+ * yylex:
+ *
+ * This is the lexical analyzer called by the YACC/BISON parser.
+ * It returns a pretty restricted set of token types and does the
+ * context movement when acceptable keywords are found. The token
+ * value returned is a NULL terminated string to allocated storage
+ * (ie - it should get released some time) with some restrictions.
+ * The token value for integers is strips a leading '+' if present.
+ * String token values have the leading and trailing '"'-s stripped.
+ * '%' conversion characters in string values are passed converted.
+ * The '(' and ')' characters do not have a token value.
+ */
+static int yylex()
+{
+ /*
+ * Locals.
+ */
+ register int c,s,l;
+ /*
+ * Keep on sucking up characters until we find something which
+ * explicitly forces us out of this function.
+ */
+ for (s = L_START, l = 0; 1;){
+ yytext[l++] = c = Getc(Input);
+ switch (s){
+ /*
+ * Starting state, look for something resembling a token.
+ */
+ case L_START:
+ if (isdigit(c) || c == '-')
+ s = L_INT;
+ else if (isalpha(c) || c == '&')
+ s = L_IDENT;
+ else if (isspace(c)){
+ if (c == '\n')
+ LineNumber += 1;
+ l = 0;
+ } else if (c == '('){
+ l = 0;
+ s = L_KEYWORD;
+ } else if (c == '"')
+ s = L_STRING;
+ else if (c == '+'){
+ l = 0; /* strip '+' */
+ s = L_INT;
+ } else if (c == EOF)
+ return ('\0');
+ else {
+ yytext[1] = '\0';
+ Stack(yytext,c);
+ return (c);
+ }
+ break;
+ /*
+ * Suck up the integer digits.
+ */
+ case L_INT:
+ if (isdigit(c))
+ break;
+ Ungetc(c);
+ yytext[--l] = '\0';
+ yylval.s = strcpy((char *)Malloc(l + 1),yytext);
+ Stack(yytext,EDIF_TOK_INT);
+ return (EDIF_TOK_INT);
+ /*
+ * Grab an identifier, see if the current context enables
+ * it with a specific token value.
+ */
+ case L_IDENT:
+ if (isalpha(c) || isdigit(c) || c == '_')
+ break;
+ Ungetc(c);
+ yytext[--l] = '\0';
+ if (CSP->Context->Token && (c = MatchToken(yytext))){
+ Stack(yytext,c);
+ return (c);
+ }
+ yylval.s = strcpy((char *)Malloc(l + 1),yytext);
+ Stack(yytext, EDIF_TOK_IDENT);
+ return (EDIF_TOK_IDENT);
+ /*
+ * Scan until you find the start of an identifier, discard
+ * any whitespace found. On no identifier, return a '('.
+ */
+ case L_KEYWORD:
+ if (isalpha(c) || c == '&'){
+ s = L_KEYWORD2;
+ break;
+ } else if (isspace(c)){
+ l = 0;
+ break;
+ }
+ Ungetc(c);
+ Stack("(",'(');
+ return ('(');
+ /*
+ * Suck up the keyword identifier, if it matches the set of
+ * allowable contexts then return its token value and push
+ * the context, otherwise just return the identifier string.
+ */
+ case L_KEYWORD2:
+ if (isalpha(c) || isdigit(c) || c == '_')
+ break;
+ Ungetc(c);
+ yytext[--l] = '\0';
+ if ( (c = MatchContext(yytext)) ){
+ Stack(yytext,c);
+ return (c);
+ }
+ yylval.s = strcpy((char *)Malloc(l + 1),yytext);
+ Stack(yytext, EDIF_TOK_KEYWORD);
+ return (EDIF_TOK_KEYWORD);
+ /*
+ * Suck up string characters but once resolved they should
+ * be deposited in the string bucket because they can be
+ * arbitrarily long.
+ */
+ case L_STRING:
+ if (c == '\n')
+ LineNumber += 1;
+ else if (c == '\r')
+ ;
+ else if (c == '"' || c == EOF){
+ yylval.s = FormString();
+ Stack(yylval.s, EDIF_TOK_STR);
+ return (EDIF_TOK_STR);
+ } else if (c == '%')
+ s = L_ASCIICHAR;
+ else
+ PushString(c);
+ l = 0;
+ break;
+ /*
+ * Skip white space and look for integers to be pushed
+ * as characters.
+ */
+ case L_ASCIICHAR:
+ if (isdigit(c)){
+ s = L_ASCIICHAR2;
+ break;
+ } else if (c == '%' || c == EOF)
+ s = L_STRING;
+ else if (c == '\n')
+ LineNumber += 1;
+ l = 0;
+ break;
+ /*
+ * Convert the accumulated integer into a char and push.
+ */
+ case L_ASCIICHAR2:
+ if (isdigit(c))
+ break;
+ Ungetc(c);
+ yytext[--l] = '\0';
+ PushString(atoi(yytext));
+ s = L_ASCIICHAR;
+ l = 0;
+ break;
+ }
+ }
+}
+
+int ReadEdifNetlist(char *filename)
+{
+ Message(_("Importing edif netlist %s\n"), filename);
+ ParseEDIF(filename, NULL);
+
+ return 0;
+}
+
+#include "stub_edif.h"
+void hid_edif_init(void)
+{
+ stub_ReadEdifNetlist = ReadEdifNetlist;
+}
Index: trunk/src_plugins/edif/edif.h
===================================================================
--- trunk/src_plugins/edif/edif.h (nonexistent)
+++ trunk/src_plugins/edif/edif.h (revision 1054)
@@ -0,0 +1,652 @@
+/* A Bison parser, made by GNU Bison 2.4.3. */
+
+/* Skeleton interface for Bison's Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2009, 2010 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see . */
+
+/* As a special exception, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+
+/* Tokens. */
+#ifndef YYTOKENTYPE
+#define YYTOKENTYPE
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
+ know about them. */
+enum yytokentype {
+ EDIF_TOK_IDENT = 258,
+ EDIF_TOK_INT = 259,
+ EDIF_TOK_KEYWORD = 260,
+ EDIF_TOK_STR = 261,
+ EDIF_TOK_ANGLE = 262,
+ EDIF_TOK_BEHAVIOR = 263,
+ EDIF_TOK_CALCULATED = 264,
+ EDIF_TOK_CAPACITANCE = 265,
+ EDIF_TOK_CENTERCENTER = 266,
+ EDIF_TOK_CENTERLEFT = 267,
+ EDIF_TOK_CENTERRIGHT = 268,
+ EDIF_TOK_CHARGE = 269,
+ EDIF_TOK_CONDUCTANCE = 270,
+ EDIF_TOK_CURRENT = 271,
+ EDIF_TOK_DISTANCE = 272,
+ EDIF_TOK_DOCUMENT = 273,
+ EDIF_TOK_ENERGY = 274,
+ EDIF_TOK_EXTEND = 275,
+ EDIF_TOK_FLUX = 276,
+ EDIF_TOK_FREQUENCY = 277,
+ EDIF_TOK_GENERIC = 278,
+ EDIF_TOK_GRAPHIC = 279,
+ EDIF_TOK_INDUCTANCE = 280,
+ EDIF_TOK_INOUT = 281,
+ EDIF_TOK_INPUT = 282,
+ EDIF_TOK_LOGICMODEL = 283,
+ EDIF_TOK_LOWERCENTER = 284,
+ EDIF_TOK_LOWERLEFT = 285,
+ EDIF_TOK_LOWERRIGHT = 286,
+ EDIF_TOK_MASKLAYOUT = 287,
+ EDIF_TOK_MASS = 288,
+ EDIF_TOK_MEASURED = 289,
+ EDIF_TOK_MX = 290,
+ EDIF_TOK_MXR90 = 291,
+ EDIF_TOK_MY = 292,
+ EDIF_TOK_MYR90 = 293,
+ EDIF_TOK_NETLIST = 294,
+ EDIF_TOK_OUTPUT = 295,
+ EDIF_TOK_PCBLAYOUT = 296,
+ EDIF_TOK_POWER = 297,
+ EDIF_TOK_R0 = 298,
+ EDIF_TOK_R180 = 299,
+ EDIF_TOK_R270 = 300,
+ EDIF_TOK_R90 = 301,
+ EDIF_TOK_REQUIRED = 302,
+ EDIF_TOK_RESISTANCE = 303,
+ EDIF_TOK_RIPPER = 304,
+ EDIF_TOK_ROUND = 305,
+ EDIF_TOK_SCHEMATIC = 306,
+ EDIF_TOK_STRANGER = 307,
+ EDIF_TOK_SYMBOLIC = 308,
+ EDIF_TOK_TEMPERATURE = 309,
+ EDIF_TOK_TIE = 310,
+ EDIF_TOK_TIME = 311,
+ EDIF_TOK_TRUNCATE = 312,
+ EDIF_TOK_UPPERCENTER = 313,
+ EDIF_TOK_UPPERLEFT = 314,
+ EDIF_TOK_UPPERRIGHT = 315,
+ EDIF_TOK_VOLTAGE = 316,
+ EDIF_TOK_ACLOAD = 317,
+ EDIF_TOK_AFTER = 318,
+ EDIF_TOK_ANNOTATE = 319,
+ EDIF_TOK_APPLY = 320,
+ EDIF_TOK_ARC = 321,
+ EDIF_TOK_ARRAY = 322,
+ EDIF_TOK_ARRAYMACRO = 323,
+ EDIF_TOK_ARRAYRELATEDINFO = 324,
+ EDIF_TOK_ARRAYSITE = 325,
+ EDIF_TOK_ATLEAST = 326,
+ EDIF_TOK_ATMOST = 327,
+ EDIF_TOK_AUTHOR = 328,
+ EDIF_TOK_BASEARRAY = 329,
+ EDIF_TOK_BECOMES = 330,
+ EDIF_TOK_BETWEEN = 331,
+ EDIF_TOK_BOOLEAN = 332,
+ EDIF_TOK_BOOLEANDISPLAY = 333,
+ EDIF_TOK_BOOLEANMAP = 334,
+ EDIF_TOK_BORDERPATTERN = 335,
+ EDIF_TOK_BORDERWIDTH = 336,
+ EDIF_TOK_BOUNDINGBOX = 337,
+ EDIF_TOK_CELL = 338,
+ EDIF_TOK_CELLREF = 339,
+ EDIF_TOK_CELLTYPE = 340,
+ EDIF_TOK_CHANGE = 341,
+ EDIF_TOK_CIRCLE = 342,
+ EDIF_TOK_COLOR = 343,
+ EDIF_TOK_COMMENT = 344,
+ EDIF_TOK_COMMENTGRAPHICS = 345,
+ EDIF_TOK_COMPOUND = 346,
+ EDIF_TOK_CONNECTLOCATION = 347,
+ EDIF_TOK_CONTENTS = 348,
+ EDIF_TOK_CORNERTYPE = 349,
+ EDIF_TOK_CRITICALITY = 350,
+ EDIF_TOK_CURRENTMAP = 351,
+ EDIF_TOK_CURVE = 352,
+ EDIF_TOK_CYCLE = 353,
+ EDIF_TOK_DATAORIGIN = 354,
+ EDIF_TOK_DCFANINLOAD = 355,
+ EDIF_TOK_DCFANOUTLOAD = 356,
+ EDIF_TOK_DCMAXFANIN = 357,
+ EDIF_TOK_DCMAXFANOUT = 358,
+ EDIF_TOK_DELAY = 359,
+ EDIF_TOK_DELTA = 360,
+ EDIF_TOK_DERIVATION = 361,
+ EDIF_TOK_DESIGN = 362,
+ EDIF_TOK_DESIGNATOR = 363,
+ EDIF_TOK_DIFFERENCE = 364,
+ EDIF_TOK_DIRECTION = 365,
+ EDIF_TOK_DISPLAY = 366,
+ EDIF_TOK_DOMINATES = 367,
+ EDIF_TOK_DOT = 368,
+ EDIF_TOK_DURATION = 369,
+ EDIF_TOK_E = 370,
+ EDIF_TOK_EDIF = 371,
+ EDIF_TOK_EDIFLEVEL = 372,
+ EDIF_TOK_EDIFVERSION = 373,
+ EDIF_TOK_ENCLOSUREDISTANCE = 374,
+ EDIF_TOK_ENDTYPE = 375,
+ EDIF_TOK_ENTRY = 376,
+ EDIF_TOK_EVENT = 377,
+ EDIF_TOK_EXACTLY = 378,
+ EDIF_TOK_EXTERNAL = 379,
+ EDIF_TOK_FABRICATE = 380,
+ EDIF_TOK_FALSE = 381,
+ EDIF_TOK_FIGURE = 382,
+ EDIF_TOK_FIGUREAREA = 383,
+ EDIF_TOK_FIGUREGROUP = 384,
+ EDIF_TOK_FIGUREGROUPOBJECT = 385,
+ EDIF_TOK_FIGUREGROUPOVERRIDE = 386,
+ EDIF_TOK_FIGUREGROUPREF = 387,
+ EDIF_TOK_FIGUREPERIMETER = 388,
+ EDIF_TOK_FIGUREWIDTH = 389,
+ EDIF_TOK_FILLPATTERN = 390,
+ EDIF_TOK_FOLLOW = 391,
+ EDIF_TOK_FORBIDDENEVENT = 392,
+ EDIF_TOK_GLOBALPORTREF = 393,
+ EDIF_TOK_GREATERTHAN = 394,
+ EDIF_TOK_GRIDMAP = 395,
+ EDIF_TOK_IGNORE = 396,
+ EDIF_TOK_INCLUDEFIGUREGROUP = 397,
+ EDIF_TOK_INITIAL = 398,
+ EDIF_TOK_INSTANCE = 399,
+ EDIF_TOK_INSTANCEBACKANNOTATE = 400,
+ EDIF_TOK_INSTANCEGROUP = 401,
+ EDIF_TOK_INSTANCEMAP = 402,
+ EDIF_TOK_INSTANCEREF = 403,
+ EDIF_TOK_INTEGER = 404,
+ EDIF_TOK_INTEGERDISPLAY = 405,
+ EDIF_TOK_INTERFACE = 406,
+ EDIF_TOK_INTERFIGUREGROUPSPACING = 407,
+ EDIF_TOK_INTERSECTION = 408,
+ EDIF_TOK_INTRAFIGUREGROUPSPACING = 409,
+ EDIF_TOK_INVERSE = 410,
+ EDIF_TOK_ISOLATED = 411,
+ EDIF_TOK_JOINED = 412,
+ EDIF_TOK_JUSTIFY = 413,
+ EDIF_TOK_KEYWORDDISPLAY = 414,
+ EDIF_TOK_KEYWORDLEVEL = 415,
+ EDIF_TOK_KEYWORDMAP = 416,
+ EDIF_TOK_LESSTHAN = 417,
+ EDIF_TOK_LIBRARY = 418,
+ EDIF_TOK_LIBRARYREF = 419,
+ EDIF_TOK_LISTOFNETS = 420,
+ EDIF_TOK_LISTOFPORTS = 421,
+ EDIF_TOK_LOADDELAY = 422,
+ EDIF_TOK_LOGICASSIGN = 423,
+ EDIF_TOK_LOGICINPUT = 424,
+ EDIF_TOK_LOGICLIST = 425,
+ EDIF_TOK_LOGICMAPINPUT = 426,
+ EDIF_TOK_LOGICMAPOUTPUT = 427,
+ EDIF_TOK_LOGICONEOF = 428,
+ EDIF_TOK_LOGICOUTPUT = 429,
+ EDIF_TOK_LOGICPORT = 430,
+ EDIF_TOK_LOGICREF = 431,
+ EDIF_TOK_LOGICVALUE = 432,
+ EDIF_TOK_LOGICWAVEFORM = 433,
+ EDIF_TOK_MAINTAIN = 434,
+ EDIF_TOK_MATCH = 435,
+ EDIF_TOK_MEMBER = 436,
+ EDIF_TOK_MINOMAX = 437,
+ EDIF_TOK_MINOMAXDISPLAY = 438,
+ EDIF_TOK_MNM = 439,
+ EDIF_TOK_MULTIPLEVALUESET = 440,
+ EDIF_TOK_MUSTJOIN = 441,
+ EDIF_TOK_NAME = 442,
+ EDIF_TOK_NET = 443,
+ EDIF_TOK_NETBACKANNOTATE = 444,
+ EDIF_TOK_NETBUNDLE = 445,
+ EDIF_TOK_NETDELAY = 446,
+ EDIF_TOK_NETGROUP = 447,
+ EDIF_TOK_NETMAP = 448,
+ EDIF_TOK_NETREF = 449,
+ EDIF_TOK_NOCHANGE = 450,
+ EDIF_TOK_NONPERMUTABLE = 451,
+ EDIF_TOK_NOTALLOWED = 452,
+ EDIF_TOK_NOTCHSPACING = 453,
+ EDIF_TOK_NUMBER = 454,
+ EDIF_TOK_NUMBERDEFINITION = 455,
+ EDIF_TOK_NUMBERDISPLAY = 456,
+ EDIF_TOK_OFFPAGECONNECTOR = 457,
+ EDIF_TOK_OFFSETEVENT = 458,
+ EDIF_TOK_OPENSHAPE = 459,
+ EDIF_TOK_ORIENTATION = 460,
+ EDIF_TOK_ORIGIN = 461,
+ EDIF_TOK_OVERHANGDISTANCE = 462,
+ EDIF_TOK_OVERLAPDISTANCE = 463,
+ EDIF_TOK_OVERSIZE = 464,
+ EDIF_TOK_OWNER = 465,
+ EDIF_TOK_PAGE = 466,
+ EDIF_TOK_PAGESIZE = 467,
+ EDIF_TOK_PARAMETER = 468,
+ EDIF_TOK_PARAMETERASSIGN = 469,
+ EDIF_TOK_PARAMETERDISPLAY = 470,
+ EDIF_TOK_PATH = 471,
+ EDIF_TOK_PATHDELAY = 472,
+ EDIF_TOK_PATHWIDTH = 473,
+ EDIF_TOK_PERMUTABLE = 474,
+ EDIF_TOK_PHYSICALDESIGNRULE = 475,
+ EDIF_TOK_PLUG = 476,
+ EDIF_TOK_POINT = 477,
+ EDIF_TOK_POINTDISPLAY = 478,
+ EDIF_TOK_POINTLIST = 479,
+ EDIF_TOK_POLYGON = 480,
+ EDIF_TOK_PORT = 481,
+ EDIF_TOK_PORTBACKANNOTATE = 482,
+ EDIF_TOK_PORTBUNDLE = 483,
+ EDIF_TOK_PORTDELAY = 484,
+ EDIF_TOK_PORTGROUP = 485,
+ EDIF_TOK_PORTIMPLEMENTATION = 486,
+ EDIF_TOK_PORTINSTANCE = 487,
+ EDIF_TOK_PORTLIST = 488,
+ EDIF_TOK_PORTLISTALIAS = 489,
+ EDIF_TOK_PORTMAP = 490,
+ EDIF_TOK_PORTREF = 491,
+ EDIF_TOK_PROGRAM = 492,
+ EDIF_TOK_PROPERTY = 493,
+ EDIF_TOK_PROPERTYDISPLAY = 494,
+ EDIF_TOK_PROTECTIONFRAME = 495,
+ EDIF_TOK_PT = 496,
+ EDIF_TOK_RANGEVECTOR = 497,
+ EDIF_TOK_RECTANGLE = 498,
+ EDIF_TOK_RECTANGLESIZE = 499,
+ EDIF_TOK_RENAME = 500,
+ EDIF_TOK_RESOLVES = 501,
+ EDIF_TOK_SCALE = 502,
+ EDIF_TOK_SCALEX = 503,
+ EDIF_TOK_SCALEY = 504,
+ EDIF_TOK_SECTION = 505,
+ EDIF_TOK_SHAPE = 506,
+ EDIF_TOK_SIMULATE = 507,
+ EDIF_TOK_SIMULATIONINFO = 508,
+ EDIF_TOK_SINGLEVALUESET = 509,
+ EDIF_TOK_SITE = 510,
+ EDIF_TOK_SOCKET = 511,
+ EDIF_TOK_SOCKETSET = 512,
+ EDIF_TOK_STATUS = 513,
+ EDIF_TOK_STEADY = 514,
+ EDIF_TOK_STRING = 515,
+ EDIF_TOK_STRINGDISPLAY = 516,
+ EDIF_TOK_STRONG = 517,
+ EDIF_TOK_SYMBOL = 518,
+ EDIF_TOK_SYMMETRY = 519,
+ EDIF_TOK_TABLE = 520,
+ EDIF_TOK_TABLEDEFAULT = 521,
+ EDIF_TOK_TECHNOLOGY = 522,
+ EDIF_TOK_TEXTHEIGHT = 523,
+ EDIF_TOK_TIMEINTERVAL = 524,
+ EDIF_TOK_TIMESTAMP = 525,
+ EDIF_TOK_TIMING = 526,
+ EDIF_TOK_TRANSFORM = 527,
+ EDIF_TOK_TRANSITION = 528,
+ EDIF_TOK_TRIGGER = 529,
+ EDIF_TOK_TRUE = 530,
+ EDIF_TOK_UNCONSTRAINED = 531,
+ EDIF_TOK_UNDEFINED = 532,
+ EDIF_TOK_UNION = 533,
+ EDIF_TOK_UNIT = 534,
+ EDIF_TOK_UNUSED = 535,
+ EDIF_TOK_USERDATA = 536,
+ EDIF_TOK_VERSION = 537,
+ EDIF_TOK_VIEW = 538,
+ EDIF_TOK_VIEWLIST = 539,
+ EDIF_TOK_VIEWMAP = 540,
+ EDIF_TOK_VIEWREF = 541,
+ EDIF_TOK_VIEWTYPE = 542,
+ EDIF_TOK_VISIBLE = 543,
+ EDIF_TOK_VOLTAGEMAP = 544,
+ EDIF_TOK_WAVEVALUE = 545,
+ EDIF_TOK_WEAK = 546,
+ EDIF_TOK_WEAKJOINED = 547,
+ EDIF_TOK_WHEN = 548,
+ EDIF_TOK_WRITTEN = 549
+};
+#endif
+/* Tokens. */
+#define EDIF_TOK_IDENT 258
+#define EDIF_TOK_INT 259
+#define EDIF_TOK_KEYWORD 260
+#define EDIF_TOK_STR 261
+#define EDIF_TOK_ANGLE 262
+#define EDIF_TOK_BEHAVIOR 263
+#define EDIF_TOK_CALCULATED 264
+#define EDIF_TOK_CAPACITANCE 265
+#define EDIF_TOK_CENTERCENTER 266
+#define EDIF_TOK_CENTERLEFT 267
+#define EDIF_TOK_CENTERRIGHT 268
+#define EDIF_TOK_CHARGE 269
+#define EDIF_TOK_CONDUCTANCE 270
+#define EDIF_TOK_CURRENT 271
+#define EDIF_TOK_DISTANCE 272
+#define EDIF_TOK_DOCUMENT 273
+#define EDIF_TOK_ENERGY 274
+#define EDIF_TOK_EXTEND 275
+#define EDIF_TOK_FLUX 276
+#define EDIF_TOK_FREQUENCY 277
+#define EDIF_TOK_GENERIC 278
+#define EDIF_TOK_GRAPHIC 279
+#define EDIF_TOK_INDUCTANCE 280
+#define EDIF_TOK_INOUT 281
+#define EDIF_TOK_INPUT 282
+#define EDIF_TOK_LOGICMODEL 283
+#define EDIF_TOK_LOWERCENTER 284
+#define EDIF_TOK_LOWERLEFT 285
+#define EDIF_TOK_LOWERRIGHT 286
+#define EDIF_TOK_MASKLAYOUT 287
+#define EDIF_TOK_MASS 288
+#define EDIF_TOK_MEASURED 289
+#define EDIF_TOK_MX 290
+#define EDIF_TOK_MXR90 291
+#define EDIF_TOK_MY 292
+#define EDIF_TOK_MYR90 293
+#define EDIF_TOK_NETLIST 294
+#define EDIF_TOK_OUTPUT 295
+#define EDIF_TOK_PCBLAYOUT 296
+#define EDIF_TOK_POWER 297
+#define EDIF_TOK_R0 298
+#define EDIF_TOK_R180 299
+#define EDIF_TOK_R270 300
+#define EDIF_TOK_R90 301
+#define EDIF_TOK_REQUIRED 302
+#define EDIF_TOK_RESISTANCE 303
+#define EDIF_TOK_RIPPER 304
+#define EDIF_TOK_ROUND 305
+#define EDIF_TOK_SCHEMATIC 306
+#define EDIF_TOK_STRANGER 307
+#define EDIF_TOK_SYMBOLIC 308
+#define EDIF_TOK_TEMPERATURE 309
+#define EDIF_TOK_TIE 310
+#define EDIF_TOK_TIME 311
+#define EDIF_TOK_TRUNCATE 312
+#define EDIF_TOK_UPPERCENTER 313
+#define EDIF_TOK_UPPERLEFT 314
+#define EDIF_TOK_UPPERRIGHT 315
+#define EDIF_TOK_VOLTAGE 316
+#define EDIF_TOK_ACLOAD 317
+#define EDIF_TOK_AFTER 318
+#define EDIF_TOK_ANNOTATE 319
+#define EDIF_TOK_APPLY 320
+#define EDIF_TOK_ARC 321
+#define EDIF_TOK_ARRAY 322
+#define EDIF_TOK_ARRAYMACRO 323
+#define EDIF_TOK_ARRAYRELATEDINFO 324
+#define EDIF_TOK_ARRAYSITE 325
+#define EDIF_TOK_ATLEAST 326
+#define EDIF_TOK_ATMOST 327
+#define EDIF_TOK_AUTHOR 328
+#define EDIF_TOK_BASEARRAY 329
+#define EDIF_TOK_BECOMES 330
+#define EDIF_TOK_BETWEEN 331
+#define EDIF_TOK_BOOLEAN 332
+#define EDIF_TOK_BOOLEANDISPLAY 333
+#define EDIF_TOK_BOOLEANMAP 334
+#define EDIF_TOK_BORDERPATTERN 335
+#define EDIF_TOK_BORDERWIDTH 336
+#define EDIF_TOK_BOUNDINGBOX 337
+#define EDIF_TOK_CELL 338
+#define EDIF_TOK_CELLREF 339
+#define EDIF_TOK_CELLTYPE 340
+#define EDIF_TOK_CHANGE 341
+#define EDIF_TOK_CIRCLE 342
+#define EDIF_TOK_COLOR 343
+#define EDIF_TOK_COMMENT 344
+#define EDIF_TOK_COMMENTGRAPHICS 345
+#define EDIF_TOK_COMPOUND 346
+#define EDIF_TOK_CONNECTLOCATION 347
+#define EDIF_TOK_CONTENTS 348
+#define EDIF_TOK_CORNERTYPE 349
+#define EDIF_TOK_CRITICALITY 350
+#define EDIF_TOK_CURRENTMAP 351
+#define EDIF_TOK_CURVE 352
+#define EDIF_TOK_CYCLE 353
+#define EDIF_TOK_DATAORIGIN 354
+#define EDIF_TOK_DCFANINLOAD 355
+#define EDIF_TOK_DCFANOUTLOAD 356
+#define EDIF_TOK_DCMAXFANIN 357
+#define EDIF_TOK_DCMAXFANOUT 358
+#define EDIF_TOK_DELAY 359
+#define EDIF_TOK_DELTA 360
+#define EDIF_TOK_DERIVATION 361
+#define EDIF_TOK_DESIGN 362
+#define EDIF_TOK_DESIGNATOR 363
+#define EDIF_TOK_DIFFERENCE 364
+#define EDIF_TOK_DIRECTION 365
+#define EDIF_TOK_DISPLAY 366
+#define EDIF_TOK_DOMINATES 367
+#define EDIF_TOK_DOT 368
+#define EDIF_TOK_DURATION 369
+#define EDIF_TOK_E 370
+#define EDIF_TOK_EDIF 371
+#define EDIF_TOK_EDIFLEVEL 372
+#define EDIF_TOK_EDIFVERSION 373
+#define EDIF_TOK_ENCLOSUREDISTANCE 374
+#define EDIF_TOK_ENDTYPE 375
+#define EDIF_TOK_ENTRY 376
+#define EDIF_TOK_EVENT 377
+#define EDIF_TOK_EXACTLY 378
+#define EDIF_TOK_EXTERNAL 379
+#define EDIF_TOK_FABRICATE 380
+#define EDIF_TOK_FALSE 381
+#define EDIF_TOK_FIGURE 382
+#define EDIF_TOK_FIGUREAREA 383
+#define EDIF_TOK_FIGUREGROUP 384
+#define EDIF_TOK_FIGUREGROUPOBJECT 385
+#define EDIF_TOK_FIGUREGROUPOVERRIDE 386
+#define EDIF_TOK_FIGUREGROUPREF 387
+#define EDIF_TOK_FIGUREPERIMETER 388
+#define EDIF_TOK_FIGUREWIDTH 389
+#define EDIF_TOK_FILLPATTERN 390
+#define EDIF_TOK_FOLLOW 391
+#define EDIF_TOK_FORBIDDENEVENT 392
+#define EDIF_TOK_GLOBALPORTREF 393
+#define EDIF_TOK_GREATERTHAN 394
+#define EDIF_TOK_GRIDMAP 395
+#define EDIF_TOK_IGNORE 396
+#define EDIF_TOK_INCLUDEFIGUREGROUP 397
+#define EDIF_TOK_INITIAL 398
+#define EDIF_TOK_INSTANCE 399
+#define EDIF_TOK_INSTANCEBACKANNOTATE 400
+#define EDIF_TOK_INSTANCEGROUP 401
+#define EDIF_TOK_INSTANCEMAP 402
+#define EDIF_TOK_INSTANCEREF 403
+#define EDIF_TOK_INTEGER 404
+#define EDIF_TOK_INTEGERDISPLAY 405
+#define EDIF_TOK_INTERFACE 406
+#define EDIF_TOK_INTERFIGUREGROUPSPACING 407
+#define EDIF_TOK_INTERSECTION 408
+#define EDIF_TOK_INTRAFIGUREGROUPSPACING 409
+#define EDIF_TOK_INVERSE 410
+#define EDIF_TOK_ISOLATED 411
+#define EDIF_TOK_JOINED 412
+#define EDIF_TOK_JUSTIFY 413
+#define EDIF_TOK_KEYWORDDISPLAY 414
+#define EDIF_TOK_KEYWORDLEVEL 415
+#define EDIF_TOK_KEYWORDMAP 416
+#define EDIF_TOK_LESSTHAN 417
+#define EDIF_TOK_LIBRARY 418
+#define EDIF_TOK_LIBRARYREF 419
+#define EDIF_TOK_LISTOFNETS 420
+#define EDIF_TOK_LISTOFPORTS 421
+#define EDIF_TOK_LOADDELAY 422
+#define EDIF_TOK_LOGICASSIGN 423
+#define EDIF_TOK_LOGICINPUT 424
+#define EDIF_TOK_LOGICLIST 425
+#define EDIF_TOK_LOGICMAPINPUT 426
+#define EDIF_TOK_LOGICMAPOUTPUT 427
+#define EDIF_TOK_LOGICONEOF 428
+#define EDIF_TOK_LOGICOUTPUT 429
+#define EDIF_TOK_LOGICPORT 430
+#define EDIF_TOK_LOGICREF 431
+#define EDIF_TOK_LOGICVALUE 432
+#define EDIF_TOK_LOGICWAVEFORM 433
+#define EDIF_TOK_MAINTAIN 434
+#define EDIF_TOK_MATCH 435
+#define EDIF_TOK_MEMBER 436
+#define EDIF_TOK_MINOMAX 437
+#define EDIF_TOK_MINOMAXDISPLAY 438
+#define EDIF_TOK_MNM 439
+#define EDIF_TOK_MULTIPLEVALUESET 440
+#define EDIF_TOK_MUSTJOIN 441
+#define EDIF_TOK_NAME 442
+#define EDIF_TOK_NET 443
+#define EDIF_TOK_NETBACKANNOTATE 444
+#define EDIF_TOK_NETBUNDLE 445
+#define EDIF_TOK_NETDELAY 446
+#define EDIF_TOK_NETGROUP 447
+#define EDIF_TOK_NETMAP 448
+#define EDIF_TOK_NETREF 449
+#define EDIF_TOK_NOCHANGE 450
+#define EDIF_TOK_NONPERMUTABLE 451
+#define EDIF_TOK_NOTALLOWED 452
+#define EDIF_TOK_NOTCHSPACING 453
+#define EDIF_TOK_NUMBER 454
+#define EDIF_TOK_NUMBERDEFINITION 455
+#define EDIF_TOK_NUMBERDISPLAY 456
+#define EDIF_TOK_OFFPAGECONNECTOR 457
+#define EDIF_TOK_OFFSETEVENT 458
+#define EDIF_TOK_OPENSHAPE 459
+#define EDIF_TOK_ORIENTATION 460
+#define EDIF_TOK_ORIGIN 461
+#define EDIF_TOK_OVERHANGDISTANCE 462
+#define EDIF_TOK_OVERLAPDISTANCE 463
+#define EDIF_TOK_OVERSIZE 464
+#define EDIF_TOK_OWNER 465
+#define EDIF_TOK_PAGE 466
+#define EDIF_TOK_PAGESIZE 467
+#define EDIF_TOK_PARAMETER 468
+#define EDIF_TOK_PARAMETERASSIGN 469
+#define EDIF_TOK_PARAMETERDISPLAY 470
+#define EDIF_TOK_PATH 471
+#define EDIF_TOK_PATHDELAY 472
+#define EDIF_TOK_PATHWIDTH 473
+#define EDIF_TOK_PERMUTABLE 474
+#define EDIF_TOK_PHYSICALDESIGNRULE 475
+#define EDIF_TOK_PLUG 476
+#define EDIF_TOK_POINT 477
+#define EDIF_TOK_POINTDISPLAY 478
+#define EDIF_TOK_POINTLIST 479
+#define EDIF_TOK_POLYGON 480
+#define EDIF_TOK_PORT 481
+#define EDIF_TOK_PORTBACKANNOTATE 482
+#define EDIF_TOK_PORTBUNDLE 483
+#define EDIF_TOK_PORTDELAY 484
+#define EDIF_TOK_PORTGROUP 485
+#define EDIF_TOK_PORTIMPLEMENTATION 486
+#define EDIF_TOK_PORTINSTANCE 487
+#define EDIF_TOK_PORTLIST 488
+#define EDIF_TOK_PORTLISTALIAS 489
+#define EDIF_TOK_PORTMAP 490
+#define EDIF_TOK_PORTREF 491
+#define EDIF_TOK_PROGRAM 492
+#define EDIF_TOK_PROPERTY 493
+#define EDIF_TOK_PROPERTYDISPLAY 494
+#define EDIF_TOK_PROTECTIONFRAME 495
+#define EDIF_TOK_PT 496
+#define EDIF_TOK_RANGEVECTOR 497
+#define EDIF_TOK_RECTANGLE 498
+#define EDIF_TOK_RECTANGLESIZE 499
+#define EDIF_TOK_RENAME 500
+#define EDIF_TOK_RESOLVES 501
+#define EDIF_TOK_SCALE 502
+#define EDIF_TOK_SCALEX 503
+#define EDIF_TOK_SCALEY 504
+#define EDIF_TOK_SECTION 505
+#define EDIF_TOK_SHAPE 506
+#define EDIF_TOK_SIMULATE 507
+#define EDIF_TOK_SIMULATIONINFO 508
+#define EDIF_TOK_SINGLEVALUESET 509
+#define EDIF_TOK_SITE 510
+#define EDIF_TOK_SOCKET 511
+#define EDIF_TOK_SOCKETSET 512
+#define EDIF_TOK_STATUS 513
+#define EDIF_TOK_STEADY 514
+#define EDIF_TOK_STRING 515
+#define EDIF_TOK_STRINGDISPLAY 516
+#define EDIF_TOK_STRONG 517
+#define EDIF_TOK_SYMBOL 518
+#define EDIF_TOK_SYMMETRY 519
+#define EDIF_TOK_TABLE 520
+#define EDIF_TOK_TABLEDEFAULT 521
+#define EDIF_TOK_TECHNOLOGY 522
+#define EDIF_TOK_TEXTHEIGHT 523
+#define EDIF_TOK_TIMEINTERVAL 524
+#define EDIF_TOK_TIMESTAMP 525
+#define EDIF_TOK_TIMING 526
+#define EDIF_TOK_TRANSFORM 527
+#define EDIF_TOK_TRANSITION 528
+#define EDIF_TOK_TRIGGER 529
+#define EDIF_TOK_TRUE 530
+#define EDIF_TOK_UNCONSTRAINED 531
+#define EDIF_TOK_UNDEFINED 532
+#define EDIF_TOK_UNION 533
+#define EDIF_TOK_UNIT 534
+#define EDIF_TOK_UNUSED 535
+#define EDIF_TOK_USERDATA 536
+#define EDIF_TOK_VERSION 537
+#define EDIF_TOK_VIEW 538
+#define EDIF_TOK_VIEWLIST 539
+#define EDIF_TOK_VIEWMAP 540
+#define EDIF_TOK_VIEWREF 541
+#define EDIF_TOK_VIEWTYPE 542
+#define EDIF_TOK_VISIBLE 543
+#define EDIF_TOK_VOLTAGEMAP 544
+#define EDIF_TOK_WAVEVALUE 545
+#define EDIF_TOK_WEAK 546
+#define EDIF_TOK_WEAKJOINED 547
+#define EDIF_TOK_WHEN 548
+#define EDIF_TOK_WRITTEN 549
+
+
+
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE {
+
+/* Line 1685 of yacc.c */
+#line 193 "edif.y"
+
+ char *s;
+ pair_list *pl;
+ str_pair *ps;
+
+
+
+/* Line 1685 of yacc.c */
+#line 647 "edif.h"
+} YYSTYPE;
+#define YYSTYPE_IS_TRIVIAL 1
+#define yystype YYSTYPE /* obsolescent; will be withdrawn */
+#define YYSTYPE_IS_DECLARED 1
+#endif
+
+extern YYSTYPE ediflval;
Index: trunk/src_plugins/edif/edif.y
===================================================================
--- trunk/src_plugins/edif/edif.y (nonexistent)
+++ trunk/src_plugins/edif/edif.y (revision 1054)
@@ -0,0 +1,4455 @@
+%{
+/*
+ * PCB Edif parser based heavily on:
+ *
+ * Header: edif.y,v 1.18 87/12/07 19:59:49 roger Locked
+ */
+/************************************************************************
+ * *
+ * edif.y *
+ * *
+ * EDIF 2.0.0 parser, Level 0 *
+ * *
+ * You are free to copy, distribute, use it, abuse it, make it *
+ * write bad tracks all over the disk ... or anything else. *
+ * *
+ * Your friendly neighborhood Rogue Monster - roger@mips.com *
+ * *
+ ************************************************************************/
+#include
+
+/* for malloc, free, atoi */
+#include
+
+/* for strcpy */
+#include
+
+#include
+
+#include "global.h"
+#include "data.h"
+/* from mymem.h, not include because of the malloc junk */
+LibraryMenuTypePtr GetLibraryMenuMemory (LibraryTypePtr);
+LibraryEntryTypePtr GetLibraryEntryMemory (LibraryMenuTypePtr);
+
+/*
+ * Local definitions.
+ */
+#define IDENT_LENGTH 255
+#define Malloc(s) malloc(s)
+#define Free(p) free(p)
+#define Getc(s) getc(s)
+#define Ungetc(c) ungetc(c,Input)
+
+ typedef struct _str_pair
+ {
+ char* str1;
+ char* str2;
+ struct _str_pair* next;
+ } str_pair;
+
+ typedef struct _pair_list
+ {
+ char* name;
+ str_pair* list;
+ } pair_list;
+
+ str_pair* new_str_pair(char* s1, char* s2)
+ {
+ str_pair* ps = (str_pair *)malloc(sizeof(str_pair));
+ ps->str1 = s1;
+ ps->str2 = s2;
+ ps->next = NULL;
+ return ps;
+ }
+
+ pair_list* new_pair_list(str_pair* ps)
+ {
+ pair_list* pl = (pair_list *)malloc(sizeof(pair_list));
+ pl->list = ps;
+ pl->name = NULL;
+ return pl;
+ }
+
+ void str_pair_free(str_pair* ps)
+ {
+ str_pair* node;
+ while ( ps )
+ {
+ free(ps->str1);
+ free(ps->str2);
+ node = ps;
+ ps = ps->next;
+ free(node);
+ }
+ }
+
+ void pair_list_free(pair_list* pl)
+ {
+ str_pair_free(pl->list);
+ free(pl->name);
+ free(pl);
+ }
+
+ void define_pcb_net(str_pair* name, pair_list* nodes)
+ {
+ int tl;
+ str_pair* done_node;
+ str_pair* node;
+ char* buf;
+ char* p;
+ LibraryEntryTypePtr entry;
+ LibraryMenuTypePtr menu = GetLibraryMenuMemory (&PCB->NetlistLib);
+
+ if ( !name->str1 )
+ {
+ /* no net name given, stop now */
+ /* if renamed str2 also exists and must be freed */
+ if ( name->str2 ) free(name->str2);
+ free(name);
+ pair_list_free(nodes);
+ return;
+ }
+ menu->Name = strdup (name->str1);
+ free(name->str1);
+ /* if renamed str2 also exists and must be freed */
+ if ( name->str2 ) free(name->str2);
+ free(name);
+ buf = (char *)malloc(256);
+ if ( !buf )
+ {
+ /* no memory */
+ pair_list_free(nodes);
+ return;
+ }
+
+ node = nodes->list;
+ free(nodes->name);
+ free(nodes);
+ while ( node )
+ {
+ /* check for node with no instance */
+ if ( !node->str1 )
+ {
+ /* toss it and move on */
+ free(node->str2);
+ done_node = node;
+ node = node->next;
+ free(done_node);
+ continue;
+ }
+ tl = strlen(node->str1) + strlen(node->str2);
+ if ( tl + 3 > 256 )
+ {
+ free(buf);
+ buf = (char *)malloc(tl+3);
+ if ( !buf )
+ {
+ /* no memory */
+ str_pair_free(node);
+ return;
+ }
+ }
+ strcpy(buf,node->str1);
+ /* make all upper case, because of PCB funky behaviour */
+ p=buf;
+ while ( *p )
+ {
+ *p = toupper( (int) *p);
+ p++;
+ }
+ /* add dash separating designator from node */
+ *(buf+strlen(node->str1)) = '-';
+ /* check for the edif number prefix */
+ if ( node->str2[0] == '&' )
+ {
+ /* skip number prefix */
+ strcpy(buf+strlen(node->str1)+1,node->str2 +1);
+ }
+ else
+ {
+ strcpy(buf+strlen(node->str1)+1,node->str2);
+ }
+ /* free the strings */
+ free(node->str1);
+ free(node->str2);
+ entry = GetLibraryEntryMemory (menu);
+ entry->ListEntry = strdup(buf);
+ done_node = node;
+ node = node->next;
+ free(done_node);
+ }
+ }
+
+
+/* forward function declarations */
+ static int yylex(void);
+ static void yyerror(const char *);
+ static void PopC(void);
+%}
+
+%name-prefix="edif"
+
+%union {
+ char* s;
+ pair_list* pl;
+ str_pair* ps;
+}
+
+%type Int Ident Str Keyword Name _Name
+%type PortRef _PortRef NetNameDef NameDef
+%type Rename _Joined
+%type __Rename _Rename NameRef
+%type InstanceRef InstNameRef Member PortNameRef
+%type Net _Net Joined
+
+%token EDIF_TOK_IDENT
+%token EDIF_TOK_INT
+%token EDIF_TOK_KEYWORD
+%token EDIF_TOK_STR
+
+%token EDIF_TOK_ANGLE
+%token EDIF_TOK_BEHAVIOR
+%token EDIF_TOK_CALCULATED
+%token EDIF_TOK_CAPACITANCE
+%token EDIF_TOK_CENTERCENTER
+%token EDIF_TOK_CENTERLEFT
+%token EDIF_TOK_CENTERRIGHT
+%token EDIF_TOK_CHARGE
+%token EDIF_TOK_CONDUCTANCE
+%token EDIF_TOK_CURRENT
+%token EDIF_TOK_DISTANCE
+%token EDIF_TOK_DOCUMENT
+%token EDIF_TOK_ENERGY
+%token EDIF_TOK_EXTEND
+%token EDIF_TOK_FLUX
+%token EDIF_TOK_FREQUENCY
+%token EDIF_TOK_GENERIC
+%token EDIF_TOK_GRAPHIC
+%token EDIF_TOK_INDUCTANCE
+%token EDIF_TOK_INOUT
+%token EDIF_TOK_INPUT
+%token EDIF_TOK_LOGICMODEL
+%token EDIF_TOK_LOWERCENTER
+%token EDIF_TOK_LOWERLEFT
+%token EDIF_TOK_LOWERRIGHT
+%token EDIF_TOK_MASKLAYOUT
+%token EDIF_TOK_MASS
+%token EDIF_TOK_MEASURED
+%token EDIF_TOK_MX
+%token EDIF_TOK_MXR90
+%token EDIF_TOK_MY
+%token EDIF_TOK_MYR90
+%token EDIF_TOK_NETLIST
+%token EDIF_TOK_OUTPUT
+%token EDIF_TOK_PCBLAYOUT
+%token EDIF_TOK_POWER
+%token EDIF_TOK_R0
+%token EDIF_TOK_R180
+%token EDIF_TOK_R270
+%token EDIF_TOK_R90
+%token EDIF_TOK_REQUIRED
+%token EDIF_TOK_RESISTANCE
+%token EDIF_TOK_RIPPER
+%token EDIF_TOK_ROUND
+%token EDIF_TOK_SCHEMATIC
+%token EDIF_TOK_STRANGER
+%token EDIF_TOK_SYMBOLIC
+%token EDIF_TOK_TEMPERATURE
+%token EDIF_TOK_TIE
+%token EDIF_TOK_TIME
+%token EDIF_TOK_TRUNCATE
+%token EDIF_TOK_UPPERCENTER
+%token EDIF_TOK_UPPERLEFT
+%token EDIF_TOK_UPPERRIGHT
+%token EDIF_TOK_VOLTAGE
+
+%token EDIF_TOK_ACLOAD
+%token EDIF_TOK_AFTER
+%token EDIF_TOK_ANNOTATE
+%token EDIF_TOK_APPLY
+%token EDIF_TOK_ARC
+%token EDIF_TOK_ARRAY
+%token EDIF_TOK_ARRAYMACRO
+%token EDIF_TOK_ARRAYRELATEDINFO
+%token EDIF_TOK_ARRAYSITE
+%token EDIF_TOK_ATLEAST
+%token EDIF_TOK_ATMOST
+%token EDIF_TOK_AUTHOR
+%token EDIF_TOK_BASEARRAY
+%token EDIF_TOK_BECOMES
+%token EDIF_TOK_BETWEEN
+%token EDIF_TOK_BOOLEAN
+%token EDIF_TOK_BOOLEANDISPLAY
+%token EDIF_TOK_BOOLEANMAP
+%token EDIF_TOK_BORDERPATTERN
+%token EDIF_TOK_BORDERWIDTH
+%token EDIF_TOK_BOUNDINGBOX
+%token EDIF_TOK_CELL
+%token EDIF_TOK_CELLREF
+%token EDIF_TOK_CELLTYPE
+%token EDIF_TOK_CHANGE
+%token EDIF_TOK_CIRCLE
+%token EDIF_TOK_COLOR
+%token EDIF_TOK_COMMENT
+%token EDIF_TOK_COMMENTGRAPHICS
+%token EDIF_TOK_COMPOUND
+%token EDIF_TOK_CONNECTLOCATION
+%token EDIF_TOK_CONTENTS
+%token EDIF_TOK_CORNERTYPE
+%token EDIF_TOK_CRITICALITY
+%token EDIF_TOK_CURRENTMAP
+%token EDIF_TOK_CURVE
+%token EDIF_TOK_CYCLE
+%token EDIF_TOK_DATAORIGIN
+%token EDIF_TOK_DCFANINLOAD
+%token EDIF_TOK_DCFANOUTLOAD
+%token EDIF_TOK_DCMAXFANIN
+%token EDIF_TOK_DCMAXFANOUT
+%token EDIF_TOK_DELAY
+%token EDIF_TOK_DELTA
+%token EDIF_TOK_DERIVATION
+%token EDIF_TOK_DESIGN
+%token EDIF_TOK_DESIGNATOR
+%token EDIF_TOK_DIFFERENCE
+%token EDIF_TOK_DIRECTION
+%token EDIF_TOK_DISPLAY
+%token EDIF_TOK_DOMINATES
+%token EDIF_TOK_DOT
+%token EDIF_TOK_DURATION
+%token EDIF_TOK_E
+%token EDIF_TOK_EDIF
+%token EDIF_TOK_EDIFLEVEL
+%token EDIF_TOK_EDIFVERSION
+%token EDIF_TOK_ENCLOSUREDISTANCE
+%token EDIF_TOK_ENDTYPE
+%token EDIF_TOK_ENTRY
+%token EDIF_TOK_EVENT
+%token EDIF_TOK_EXACTLY
+%token EDIF_TOK_EXTERNAL
+%token EDIF_TOK_FABRICATE
+%token EDIF_TOK_FALSE
+%token EDIF_TOK_FIGURE
+%token EDIF_TOK_FIGUREAREA
+%token EDIF_TOK_FIGUREGROUP
+%token EDIF_TOK_FIGUREGROUPOBJECT
+%token EDIF_TOK_FIGUREGROUPOVERRIDE
+%token EDIF_TOK_FIGUREGROUPREF
+%token EDIF_TOK_FIGUREPERIMETER
+%token EDIF_TOK_FIGUREWIDTH
+%token EDIF_TOK_FILLPATTERN
+%token EDIF_TOK_FOLLOW
+%token EDIF_TOK_FORBIDDENEVENT
+%token EDIF_TOK_GLOBALPORTREF
+%token EDIF_TOK_GREATERTHAN
+%token EDIF_TOK_GRIDMAP
+%token EDIF_TOK_IGNORE
+%token EDIF_TOK_INCLUDEFIGUREGROUP
+%token EDIF_TOK_INITIAL
+%token EDIF_TOK_INSTANCE
+%token EDIF_TOK_INSTANCEBACKANNOTATE
+%token EDIF_TOK_INSTANCEGROUP
+%token EDIF_TOK_INSTANCEMAP
+%token EDIF_TOK_INSTANCEREF
+%token EDIF_TOK_INTEGER
+%token EDIF_TOK_INTEGERDISPLAY
+%token EDIF_TOK_INTERFACE
+%token EDIF_TOK_INTERFIGUREGROUPSPACING
+%token EDIF_TOK_INTERSECTION
+%token EDIF_TOK_INTRAFIGUREGROUPSPACING
+%token EDIF_TOK_INVERSE
+%token EDIF_TOK_ISOLATED
+%token EDIF_TOK_JOINED
+%token EDIF_TOK_JUSTIFY
+%token EDIF_TOK_KEYWORDDISPLAY
+%token EDIF_TOK_KEYWORDLEVEL
+%token EDIF_TOK_KEYWORDMAP
+%token EDIF_TOK_LESSTHAN
+%token EDIF_TOK_LIBRARY
+%token EDIF_TOK_LIBRARYREF
+%token EDIF_TOK_LISTOFNETS
+%token EDIF_TOK_LISTOFPORTS
+%token EDIF_TOK_LOADDELAY
+%token EDIF_TOK_LOGICASSIGN
+%token EDIF_TOK_LOGICINPUT
+%token EDIF_TOK_LOGICLIST
+%token EDIF_TOK_LOGICMAPINPUT
+%token EDIF_TOK_LOGICMAPOUTPUT
+%token EDIF_TOK_LOGICONEOF
+%token EDIF_TOK_LOGICOUTPUT
+%token EDIF_TOK_LOGICPORT
+%token EDIF_TOK_LOGICREF
+%token EDIF_TOK_LOGICVALUE
+%token EDIF_TOK_LOGICWAVEFORM
+%token EDIF_TOK_MAINTAIN
+%token EDIF_TOK_MATCH
+%token EDIF_TOK_MEMBER
+%token EDIF_TOK_MINOMAX
+%token EDIF_TOK_MINOMAXDISPLAY
+%token EDIF_TOK_MNM
+%token EDIF_TOK_MULTIPLEVALUESET
+%token EDIF_TOK_MUSTJOIN
+%token EDIF_TOK_NAME
+%token EDIF_TOK_NET
+%token EDIF_TOK_NETBACKANNOTATE
+%token EDIF_TOK_NETBUNDLE
+%token EDIF_TOK_NETDELAY
+%token EDIF_TOK_NETGROUP
+%token EDIF_TOK_NETMAP
+%token EDIF_TOK_NETREF
+%token EDIF_TOK_NOCHANGE
+%token EDIF_TOK_NONPERMUTABLE
+%token EDIF_TOK_NOTALLOWED
+%token EDIF_TOK_NOTCHSPACING
+%token EDIF_TOK_NUMBER
+%token EDIF_TOK_NUMBERDEFINITION
+%token EDIF_TOK_NUMBERDISPLAY
+%token EDIF_TOK_OFFPAGECONNECTOR
+%token EDIF_TOK_OFFSETEVENT
+%token EDIF_TOK_OPENSHAPE
+%token EDIF_TOK_ORIENTATION
+%token EDIF_TOK_ORIGIN
+%token EDIF_TOK_OVERHANGDISTANCE
+%token EDIF_TOK_OVERLAPDISTANCE
+%token EDIF_TOK_OVERSIZE
+%token EDIF_TOK_OWNER
+%token EDIF_TOK_PAGE
+%token EDIF_TOK_PAGESIZE
+%token EDIF_TOK_PARAMETER
+%token EDIF_TOK_PARAMETERASSIGN
+%token EDIF_TOK_PARAMETERDISPLAY
+%token EDIF_TOK_PATH
+%token EDIF_TOK_PATHDELAY
+%token EDIF_TOK_PATHWIDTH
+%token EDIF_TOK_PERMUTABLE
+%token EDIF_TOK_PHYSICALDESIGNRULE
+%token EDIF_TOK_PLUG
+%token EDIF_TOK_POINT
+%token EDIF_TOK_POINTDISPLAY
+%token EDIF_TOK_POINTLIST
+%token EDIF_TOK_POLYGON
+%token EDIF_TOK_PORT
+%token EDIF_TOK_PORTBACKANNOTATE
+%token EDIF_TOK_PORTBUNDLE
+%token EDIF_TOK_PORTDELAY
+%token EDIF_TOK_PORTGROUP
+%token EDIF_TOK_PORTIMPLEMENTATION
+%token EDIF_TOK_PORTINSTANCE
+%token EDIF_TOK_PORTLIST
+%token EDIF_TOK_PORTLISTALIAS
+%token EDIF_TOK_PORTMAP
+%token EDIF_TOK_PORTREF
+%token EDIF_TOK_PROGRAM
+%token EDIF_TOK_PROPERTY
+%token EDIF_TOK_PROPERTYDISPLAY
+%token EDIF_TOK_PROTECTIONFRAME
+%token EDIF_TOK_PT
+%token EDIF_TOK_RANGEVECTOR
+%token EDIF_TOK_RECTANGLE
+%token EDIF_TOK_RECTANGLESIZE
+%token EDIF_TOK_RENAME
+%token EDIF_TOK_RESOLVES
+%token EDIF_TOK_SCALE
+%token EDIF_TOK_SCALEX
+%token EDIF_TOK_SCALEY
+%token EDIF_TOK_SECTION
+%token EDIF_TOK_SHAPE
+%token EDIF_TOK_SIMULATE
+%token EDIF_TOK_SIMULATIONINFO
+%token EDIF_TOK_SINGLEVALUESET
+%token EDIF_TOK_SITE
+%token EDIF_TOK_SOCKET
+%token EDIF_TOK_SOCKETSET
+%token EDIF_TOK_STATUS
+%token EDIF_TOK_STEADY
+%token EDIF_TOK_STRING
+%token EDIF_TOK_STRINGDISPLAY
+%token EDIF_TOK_STRONG
+%token EDIF_TOK_SYMBOL
+%token EDIF_TOK_SYMMETRY
+%token EDIF_TOK_TABLE
+%token EDIF_TOK_TABLEDEFAULT
+%token EDIF_TOK_TECHNOLOGY
+%token EDIF_TOK_TEXTHEIGHT
+%token EDIF_TOK_TIMEINTERVAL
+%token EDIF_TOK_TIMESTAMP
+%token EDIF_TOK_TIMING
+%token EDIF_TOK_TRANSFORM
+%token EDIF_TOK_TRANSITION
+%token EDIF_TOK_TRIGGER
+%token EDIF_TOK_TRUE
+%token EDIF_TOK_UNCONSTRAINED
+%token EDIF_TOK_UNDEFINED
+%token EDIF_TOK_UNION
+%token EDIF_TOK_UNIT
+%token EDIF_TOK_UNUSED
+%token EDIF_TOK_USERDATA
+%token EDIF_TOK_VERSION
+%token EDIF_TOK_VIEW
+%token EDIF_TOK_VIEWLIST
+%token EDIF_TOK_VIEWMAP
+%token EDIF_TOK_VIEWREF
+%token EDIF_TOK_VIEWTYPE
+%token EDIF_TOK_VISIBLE
+%token EDIF_TOK_VOLTAGEMAP
+%token EDIF_TOK_WAVEVALUE
+%token EDIF_TOK_WEAK
+%token EDIF_TOK_WEAKJOINED
+%token EDIF_TOK_WHEN
+%token EDIF_TOK_WRITTEN
+
+%start Edif
+
+%%
+
+PopC : ')' { PopC(); }
+ ;
+
+Edif : EDIF_TOK_EDIF EdifFileName EdifVersion EdifLevel KeywordMap _Edif PopC
+ ;
+
+_Edif :
+ | _Edif Status
+ | _Edif External
+ | _Edif Library
+ | _Edif Design
+ | _Edif Comment
+ | _Edif UserData
+ ;
+
+EdifFileName : NameDef { str_pair_free($1); }
+ ;
+
+EdifLevel : EDIF_TOK_EDIFLEVEL Int PopC { free($2); }
+ ;
+
+EdifVersion : EDIF_TOK_EDIFVERSION Int Int Int PopC
+{ free($2); free($3); free($4); }
+ ;
+
+AcLoad : EDIF_TOK_ACLOAD _AcLoad PopC
+ ;
+
+_AcLoad : MiNoMaValue
+ | MiNoMaDisp
+ ;
+
+After : EDIF_TOK_AFTER _After PopC
+ ;
+
+_After : MiNoMaValue
+ | _After Follow
+ | _After Maintain
+ | _After LogicAssn
+ | _After Comment
+ | _After UserData
+ ;
+
+Annotate : EDIF_TOK_ANNOTATE _Annotate PopC
+ ;
+
+_Annotate : Str { free($1); }
+ | StrDisplay
+ ;
+
+Apply : EDIF_TOK_APPLY _Apply PopC
+ ;
+
+_Apply : Cycle
+ | _Apply LogicIn
+ | _Apply LogicOut
+ | _Apply Comment
+ | _Apply UserData
+ ;
+
+Arc : EDIF_TOK_ARC PointValue PointValue PointValue PopC
+ ;
+
+Array : EDIF_TOK_ARRAY NameDef Int _Array PopC { str_pair_free($2); free($3); }
+ ;
+
+_Array :
+ | Int { free($1); }
+ ;
+
+ArrayMacro : EDIF_TOK_ARRAYMACRO Plug PopC
+ ;
+
+ArrayRelInfo : EDIF_TOK_ARRAYRELATEDINFO _ArrayRelInfo PopC
+ ;
+
+_ArrayRelInfo : BaseArray
+ | ArraySite
+ | ArrayMacro
+ | _ArrayRelInfo Comment
+ | _ArrayRelInfo UserData
+ ;
+
+ArraySite : EDIF_TOK_ARRAYSITE Socket PopC
+ ;
+
+AtLeast : EDIF_TOK_ATLEAST ScaledInt PopC
+ ;
+
+AtMost : EDIF_TOK_ATMOST ScaledInt PopC
+ ;
+
+Author : EDIF_TOK_AUTHOR Str PopC { free($2); }
+ ;
+
+BaseArray : EDIF_TOK_BASEARRAY PopC
+ ;
+
+Becomes : EDIF_TOK_BECOMES _Becomes PopC
+ ;
+
+_Becomes : LogicNameRef
+ | LogicList
+ | LogicOneOf
+ ;
+
+Between : EDIF_TOK_BETWEEN __Between _Between PopC
+ ;
+
+__Between : AtLeast
+ | GreaterThan
+ ;
+
+_Between : AtMost
+ | LessThan
+ ;
+
+Boolean : EDIF_TOK_BOOLEAN _Boolean PopC
+ ;
+
+_Boolean :
+ | _Boolean BooleanValue
+ | _Boolean BooleanDisp
+ | _Boolean Boolean
+ ;
+
+BooleanDisp : EDIF_TOK_BOOLEANDISPLAY _BooleanDisp PopC
+ ;
+
+_BooleanDisp : BooleanValue
+ | _BooleanDisp Display
+ ;
+
+BooleanMap : EDIF_TOK_BOOLEANMAP BooleanValue PopC
+ ;
+
+BooleanValue : True
+ | False
+ ;
+
+BorderPat : EDIF_TOK_BORDERPATTERN Int Int Boolean PopC { free($2); free($3); }
+ ;
+
+BorderWidth : EDIF_TOK_BORDERWIDTH Int PopC { free($2); }
+ ;
+
+BoundBox : EDIF_TOK_BOUNDINGBOX Rectangle PopC
+ ;
+
+Cell : EDIF_TOK_CELL CellNameDef _Cell PopC
+ ;
+
+_Cell : CellType
+ | _Cell Status
+ | _Cell ViewMap
+ | _Cell View
+ | _Cell Comment
+ | _Cell UserData
+ | _Cell Property
+ ;
+
+CellNameDef : NameDef { str_pair_free($1); }
+ ;
+
+CellRef : EDIF_TOK_CELLREF CellNameRef _CellRef PopC
+ ;
+
+_CellRef :
+ | LibraryRef
+ ;
+
+CellNameRef : NameRef { free($1); }
+ ;
+
+CellType : EDIF_TOK_CELLTYPE _CellType PopC
+ ;
+
+_CellType : EDIF_TOK_TIE
+ | EDIF_TOK_RIPPER
+ | EDIF_TOK_GENERIC
+ ;
+
+Change : EDIF_TOK_CHANGE __Change _Change PopC
+ ;
+
+__Change : PortNameRef
+ | PortRef { str_pair_free($1); }
+ | PortList
+ ;
+
+_Change :
+ | Becomes
+ | Transition
+ ;
+
+Circle : EDIF_TOK_CIRCLE PointValue PointValue _Circle PopC
+ ;
+
+_Circle :
+ | _Circle Property
+ ;
+
+Color : EDIF_TOK_COLOR ScaledInt ScaledInt ScaledInt PopC
+ ;
+
+Comment : EDIF_TOK_COMMENT _Comment PopC
+ ;
+
+_Comment :
+ | _Comment Str { free($2); }
+ ;
+
+CommGraph : EDIF_TOK_COMMENTGRAPHICS _CommGraph PopC
+ ;
+
+_CommGraph :
+ | _CommGraph Annotate
+ | _CommGraph Figure
+ | _CommGraph Instance
+ | _CommGraph BoundBox
+ | _CommGraph Property
+ | _CommGraph Comment
+ | _CommGraph UserData
+ ;
+
+Compound : EDIF_TOK_COMPOUND LogicNameRef PopC
+ ;
+
+Contents : EDIF_TOK_CONTENTS _Contents PopC
+ ;
+
+_Contents :
+ | _Contents Instance
+ | _Contents OffPageConn
+ | _Contents Figure
+ | _Contents Section
+ | _Contents Net
+ | _Contents NetBundle
+ | _Contents Page
+ | _Contents CommGraph
+ | _Contents PortImpl
+ | _Contents Timing
+ | _Contents Simulate
+ | _Contents When
+ | _Contents Follow
+ | _Contents LogicPort
+ | _Contents BoundBox
+ | _Contents Comment
+ | _Contents UserData
+ ;
+
+ConnectLoc : EDIF_TOK_CONNECTLOCATION _ConnectLoc PopC
+ ;
+
+_ConnectLoc :
+ | Figure
+ ;
+
+CornerType : EDIF_TOK_CORNERTYPE _CornerType PopC
+ ;
+
+_CornerType : EDIF_TOK_EXTEND
+ | EDIF_TOK_ROUND
+ | EDIF_TOK_TRUNCATE
+ ;
+
+Criticality : EDIF_TOK_CRITICALITY _Criticality PopC
+ ;
+
+_Criticality : Int { free($1); }
+ | IntDisplay
+ ;
+
+CurrentMap : EDIF_TOK_CURRENTMAP MiNoMaValue PopC
+ ;
+
+Curve : EDIF_TOK_CURVE _Curve PopC
+ ;
+
+_Curve :
+ | _Curve Arc
+ | _Curve PointValue
+ ;
+
+Cycle : EDIF_TOK_CYCLE Int _Cycle PopC { free($2); }
+ ;
+
+_Cycle :
+ | Duration
+ ;
+
+DataOrigin : EDIF_TOK_DATAORIGIN Str _DataOrigin PopC { free($2); }
+ ;
+
+_DataOrigin :
+ | Version
+ ;
+
+DcFanInLoad : EDIF_TOK_DCFANINLOAD _DcFanInLoad PopC
+ ;
+
+_DcFanInLoad : ScaledInt
+ | NumbDisplay
+ ;
+
+DcFanOutLoad : EDIF_TOK_DCFANOUTLOAD _DcFanOutLoad PopC
+ ;
+
+_DcFanOutLoad : ScaledInt
+ | NumbDisplay
+ ;
+
+DcMaxFanIn : EDIF_TOK_DCMAXFANIN _DcMaxFanIn PopC
+ ;
+
+_DcMaxFanIn : ScaledInt
+ | NumbDisplay
+ ;
+
+DcMaxFanOut : EDIF_TOK_DCMAXFANOUT _DcMaxFanOut PopC
+ ;
+
+_DcMaxFanOut : ScaledInt
+ | NumbDisplay
+ ;
+
+Delay : EDIF_TOK_DELAY _Delay PopC
+ ;
+
+_Delay : MiNoMaValue
+ | MiNoMaDisp
+ ;
+
+Delta : EDIF_TOK_DELTA _Delta PopC
+ ;
+
+_Delta :
+ | _Delta PointValue
+ ;
+
+Derivation : EDIF_TOK_DERIVATION _Derivation PopC
+ ;
+
+_Derivation : EDIF_TOK_CALCULATED
+ | EDIF_TOK_MEASURED
+ | EDIF_TOK_REQUIRED
+ ;
+
+Design : EDIF_TOK_DESIGN DesignNameDef _Design PopC
+ ;
+
+_Design : CellRef
+ | _Design Status
+ | _Design Comment
+ | _Design Property
+ | _Design UserData
+ ;
+
+Designator : EDIF_TOK_DESIGNATOR _Designator PopC
+ ;
+
+_Designator : Str { free($1); }
+ | StrDisplay
+ ;
+
+DesignNameDef : NameDef { str_pair_free($1); }
+ ;
+
+DesignRule : EDIF_TOK_PHYSICALDESIGNRULE _DesignRule PopC
+ ;
+
+_DesignRule :
+ | _DesignRule FigureWidth
+ | _DesignRule FigureArea
+ | _DesignRule RectSize
+ | _DesignRule FigurePerim
+ | _DesignRule OverlapDist
+ | _DesignRule OverhngDist
+ | _DesignRule EncloseDist
+ | _DesignRule InterFigGrp
+ | _DesignRule IntraFigGrp
+ | _DesignRule NotchSpace
+ | _DesignRule NotAllowed
+ | _DesignRule FigGrp
+ | _DesignRule Comment
+ | _DesignRule UserData
+ ;
+
+Difference : EDIF_TOK_DIFFERENCE _Difference PopC
+ ;
+
+_Difference : FigGrpRef
+ | FigureOp
+ | _Difference FigGrpRef
+ | _Difference FigureOp
+ ;
+
+Direction : EDIF_TOK_DIRECTION _Direction PopC
+ ;
+
+_Direction : EDIF_TOK_INOUT
+ | EDIF_TOK_INPUT
+ | EDIF_TOK_OUTPUT
+ ;
+
+Display : EDIF_TOK_DISPLAY _Display _DisplayJust _DisplayOrien _DisplayOrg PopC
+ ;
+
+_Display : FigGrpNameRef
+ | FigGrpOver
+ ;
+
+_DisplayJust :
+ | Justify
+ ;
+
+_DisplayOrien :
+ | Orientation
+ ;
+
+_DisplayOrg :
+ | Origin
+ ;
+
+Dominates : EDIF_TOK_DOMINATES _Dominates PopC
+ ;
+
+_Dominates :
+ | _Dominates LogicNameRef
+ ;
+
+Dot : EDIF_TOK_DOT _Dot PopC
+ ;
+
+_Dot : PointValue
+ | _Dot Property
+ ;
+
+Duration : EDIF_TOK_DURATION ScaledInt PopC
+ ;
+
+EncloseDist : EDIF_TOK_ENCLOSUREDISTANCE RuleNameDef FigGrpObj FigGrpObj _EncloseDist
+ PopC
+ ;
+
+_EncloseDist : Range
+ | SingleValSet
+ | _EncloseDist Comment
+ | _EncloseDist UserData
+ ;
+
+EndType : EDIF_TOK_ENDTYPE _EndType PopC
+ ;
+
+_EndType : EDIF_TOK_EXTEND
+ | EDIF_TOK_ROUND
+ | EDIF_TOK_TRUNCATE
+ ;
+
+Entry : EDIF_TOK_ENTRY ___Entry __Entry _Entry
+ PopC
+ ;
+
+___Entry : Match
+ | Change
+ | Steady
+ ;
+
+__Entry : LogicRef
+ | PortRef { str_pair_free($1); }
+ | NoChange
+ | Table
+ ;
+
+_Entry :
+ | Delay
+ | LoadDelay
+ ;
+
+Event : EDIF_TOK_EVENT _Event PopC
+ ;
+
+_Event : PortRef { str_pair_free($1); }
+ | PortList
+ | PortGroup
+ | NetRef
+ | NetGroup
+ | _Event Transition
+ | _Event Becomes
+ ;
+
+Exactly : EDIF_TOK_EXACTLY ScaledInt PopC
+ ;
+
+External : EDIF_TOK_EXTERNAL LibNameDef EdifLevel _External PopC
+ ;
+
+_External : Technology
+ | _External Status
+ | _External Cell
+ | _External Comment
+ | _External UserData
+ ;
+
+Fabricate : EDIF_TOK_FABRICATE LayerNameDef FigGrpNameRef PopC
+ ;
+
+False : EDIF_TOK_FALSE PopC
+ ;
+
+FigGrp : EDIF_TOK_FIGUREGROUP _FigGrp PopC
+ ;
+
+_FigGrp : FigGrpNameDef
+ | _FigGrp CornerType
+ | _FigGrp EndType
+ | _FigGrp PathWidth
+ | _FigGrp BorderWidth
+ | _FigGrp Color
+ | _FigGrp FillPattern
+ | _FigGrp BorderPat
+ | _FigGrp TextHeight
+ | _FigGrp Visible
+ | _FigGrp Comment
+ | _FigGrp Property
+ | _FigGrp UserData
+ | _FigGrp IncFigGrp
+ ;
+
+FigGrpNameDef : NameDef { str_pair_free($1); }
+ ;
+
+FigGrpNameRef : NameRef { free($1); }
+ ;
+
+FigGrpObj : EDIF_TOK_FIGUREGROUPOBJECT _FigGrpObj PopC
+ ;
+
+_FigGrpObj : FigGrpNameRef
+ | FigGrpRef
+ | FigureOp
+ ;
+
+FigGrpOver : EDIF_TOK_FIGUREGROUPOVERRIDE _FigGrpOver PopC
+ ;
+
+_FigGrpOver : FigGrpNameRef
+ | _FigGrpOver CornerType
+ | _FigGrpOver EndType
+ | _FigGrpOver PathWidth
+ | _FigGrpOver BorderWidth
+ | _FigGrpOver Color
+ | _FigGrpOver FillPattern
+ | _FigGrpOver BorderPat
+ | _FigGrpOver TextHeight
+ | _FigGrpOver Visible
+ | _FigGrpOver Comment
+ | _FigGrpOver Property
+ | _FigGrpOver UserData
+ ;
+
+FigGrpRef : EDIF_TOK_FIGUREGROUPREF FigGrpNameRef _FigGrpRef PopC
+ ;
+
+_FigGrpRef :
+ | LibraryRef
+ ;
+
+Figure : EDIF_TOK_FIGURE _Figure PopC
+ ;
+
+_Figure : FigGrpNameDef
+ | FigGrpOver
+ | _Figure Circle
+ | _Figure Dot
+ | _Figure OpenShape
+ | _Figure Path
+ | _Figure Polygon
+ | _Figure Rectangle
+ | _Figure Shape
+ | _Figure Comment
+ | _Figure UserData
+ ;
+
+FigureArea : EDIF_TOK_FIGUREAREA RuleNameDef FigGrpObj _FigureArea PopC
+ ;
+
+_FigureArea : Range
+ | SingleValSet
+ | _FigureArea Comment
+ | _FigureArea UserData
+ ;
+
+FigureOp : Intersection
+ | Union
+ | Difference
+ | Inverse
+ | Oversize
+ ;
+
+FigurePerim : EDIF_TOK_FIGUREPERIMETER RuleNameDef FigGrpObj _FigurePerim PopC
+ ;
+
+_FigurePerim : Range
+ | SingleValSet
+ | _FigurePerim Comment
+ | _FigurePerim UserData
+ ;
+
+FigureWidth : EDIF_TOK_FIGUREWIDTH RuleNameDef FigGrpObj _FigureWidth PopC
+ ;
+
+_FigureWidth : Range
+ | SingleValSet
+ | _FigureWidth Comment
+ | _FigureWidth UserData
+ ;
+
+FillPattern : EDIF_TOK_FILLPATTERN Int Int Boolean PopC { free($2); free($3); }
+ ;
+
+Follow : EDIF_TOK_FOLLOW __Follow _Follow PopC
+ ;
+
+__Follow : PortNameRef
+ | PortRef { str_pair_free($1); }
+ ;
+
+_Follow : PortRef { str_pair_free($1); }
+ | Table
+ | _Follow Delay
+ | _Follow LoadDelay
+ ;
+
+Forbidden : EDIF_TOK_FORBIDDENEVENT _Forbidden PopC
+ ;
+
+_Forbidden : TimeIntval
+ | _Forbidden Event
+ ;
+
+Form : Keyword _Form ')' { free($1); }
+ ;
+
+_Form :
+ | _Form Int { free($2); }
+ | _Form Str { free($2); }
+ | _Form Ident { free($2); }
+ | _Form Form
+ ;
+
+GlobPortRef : EDIF_TOK_GLOBALPORTREF PortNameRef PopC
+ ;
+
+GreaterThan : EDIF_TOK_GREATERTHAN ScaledInt PopC
+ ;
+
+GridMap : EDIF_TOK_GRIDMAP ScaledInt ScaledInt PopC
+ ;
+
+Ignore : EDIF_TOK_IGNORE PopC
+ ;
+
+IncFigGrp : EDIF_TOK_INCLUDEFIGUREGROUP _IncFigGrp PopC
+ ;
+
+_IncFigGrp : FigGrpRef
+ | FigureOp
+ ;
+
+Initial : EDIF_TOK_INITIAL PopC
+ ;
+
+Instance : EDIF_TOK_INSTANCE InstNameDef _Instance PopC
+ ;
+
+_Instance : ViewRef
+ | ViewList
+ | _Instance Transform
+ | _Instance ParamAssign
+ | _Instance PortInst
+ | _Instance Timing
+ | _Instance Designator
+ | _Instance Property
+ | _Instance Comment
+ | _Instance UserData
+ ;
+
+InstanceRef : EDIF_TOK_INSTANCEREF InstNameRef _InstanceRef PopC { $$=$2; }
+ ;
+
+_InstanceRef :
+| InstanceRef { free($1); }
+ | ViewRef
+ ;
+
+InstBackAn : EDIF_TOK_INSTANCEBACKANNOTATE _InstBackAn PopC
+ ;
+
+_InstBackAn : InstanceRef { free($1); }
+ | _InstBackAn Designator
+ | _InstBackAn Timing
+ | _InstBackAn Property
+ | _InstBackAn Comment
+ ;
+
+InstGroup : EDIF_TOK_INSTANCEGROUP _InstGroup PopC
+ ;
+
+_InstGroup :
+ | _InstGroup InstanceRef { free($2); }
+ ;
+
+InstMap : EDIF_TOK_INSTANCEMAP _InstMap PopC
+ ;
+
+_InstMap :
+ | _InstMap InstanceRef { free($2); }
+ | _InstMap InstGroup
+ | _InstMap Comment
+ | _InstMap UserData
+ ;
+
+InstNameDef : NameDef { str_pair_free($1); }
+ | Array
+ ;
+
+InstNameRef : NameRef { $$=$1; }
+ | Member
+ ;
+
+IntDisplay : EDIF_TOK_INTEGERDISPLAY _IntDisplay PopC
+ ;
+
+_IntDisplay : Int { free($1); }
+ | _IntDisplay Display
+ ;
+
+Integer : EDIF_TOK_INTEGER _Integer PopC
+ ;
+
+_Integer :
+ | _Integer Int { free($2); }
+ | _Integer IntDisplay
+ | _Integer Integer
+ ;
+
+Interface : EDIF_TOK_INTERFACE _Interface PopC
+ ;
+
+_Interface :
+ | _Interface Port
+ | _Interface PortBundle
+ | _Interface Symbol
+ | _Interface ProtectFrame
+ | _Interface ArrayRelInfo
+ | _Interface Parameter
+ | _Interface Joined { pair_list_free($2); }
+ | _Interface MustJoin
+ | _Interface WeakJoined
+ | _Interface Permutable
+ | _Interface Timing
+ | _Interface Simulate
+ | _Interface Designator
+ | _Interface Property
+ | _Interface Comment
+ | _Interface UserData
+ ;
+
+InterFigGrp : EDIF_TOK_INTERFIGUREGROUPSPACING RuleNameDef FigGrpObj FigGrpObj
+ _InterFigGrp PopC
+ ;
+
+_InterFigGrp : Range
+ | SingleValSet
+ | _InterFigGrp Comment
+ | _InterFigGrp UserData
+ ;
+
+Intersection : EDIF_TOK_INTERSECTION _Intersection PopC
+ ;
+
+_Intersection : FigGrpRef
+ | FigureOp
+ | _Intersection FigGrpRef
+ | _Intersection FigureOp
+ ;
+
+IntraFigGrp : EDIF_TOK_INTRAFIGUREGROUPSPACING RuleNameDef FigGrpObj _IntraFigGrp PopC
+ ;
+
+_IntraFigGrp : Range
+ | SingleValSet
+ | _IntraFigGrp Comment
+ | _IntraFigGrp UserData
+ ;
+
+Inverse : EDIF_TOK_INVERSE _Inverse PopC
+ ;
+
+_Inverse : FigGrpRef
+ | FigureOp
+ ;
+
+Isolated : EDIF_TOK_ISOLATED PopC
+ ;
+
+Joined : EDIF_TOK_JOINED _Joined PopC { $$ = new_pair_list($2); }
+ ;
+
+_Joined : { $$=NULL; }
+| _Joined PortRef { $2->next = $1; $$ = $2; }
+ | _Joined PortList
+ | _Joined GlobPortRef
+ ;
+
+Justify : EDIF_TOK_JUSTIFY _Justify PopC
+ ;
+
+_Justify : EDIF_TOK_CENTERCENTER
+ | EDIF_TOK_CENTERLEFT
+ | EDIF_TOK_CENTERRIGHT
+ | EDIF_TOK_LOWERCENTER
+ | EDIF_TOK_LOWERLEFT
+ | EDIF_TOK_LOWERRIGHT
+ | EDIF_TOK_UPPERCENTER
+ | EDIF_TOK_UPPERLEFT
+ | EDIF_TOK_UPPERRIGHT
+ ;
+
+KeywordDisp : EDIF_TOK_KEYWORDDISPLAY _KeywordDisp PopC
+ ;
+
+_KeywordDisp : KeywordName
+ | _KeywordDisp Display
+ ;
+
+KeywordLevel : EDIF_TOK_KEYWORDLEVEL Int PopC { free($2); }
+ ;
+
+KeywordMap : EDIF_TOK_KEYWORDMAP _KeywordMap PopC
+ ;
+
+_KeywordMap : KeywordLevel
+ | _KeywordMap Comment
+ ;
+
+KeywordName : Ident { free($1); }
+ ;
+
+LayerNameDef : NameDef { str_pair_free($1); }
+ ;
+
+LessThan : EDIF_TOK_LESSTHAN ScaledInt PopC
+ ;
+
+LibNameDef : NameDef { str_pair_free($1); }
+ ;
+
+LibNameRef : NameRef { free($1); }
+ ;
+
+Library : EDIF_TOK_LIBRARY LibNameDef EdifLevel _Library PopC
+ ;
+
+_Library : Technology
+ | _Library Status
+ | _Library Cell
+ | _Library Comment
+ | _Library UserData
+ ;
+
+LibraryRef : EDIF_TOK_LIBRARYREF LibNameRef PopC
+ ;
+
+ListOfNets : EDIF_TOK_LISTOFNETS _ListOfNets PopC
+ ;
+
+_ListOfNets :
+ | _ListOfNets Net
+ ;
+
+ListOfPorts : EDIF_TOK_LISTOFPORTS _ListOfPorts PopC
+ ;
+
+_ListOfPorts :
+ | _ListOfPorts Port
+ | _ListOfPorts PortBundle
+ ;
+
+LoadDelay : EDIF_TOK_LOADDELAY _LoadDelay _LoadDelay PopC
+ ;
+
+_LoadDelay : MiNoMaValue
+ | MiNoMaDisp
+ ;
+
+LogicAssn : EDIF_TOK_LOGICASSIGN ___LogicAssn __LogicAssn _LogicAssn PopC
+ ;
+
+___LogicAssn : PortNameRef
+ | PortRef { str_pair_free($1); }
+ ;
+
+__LogicAssn : PortRef { str_pair_free($1); }
+ | LogicRef
+ | Table
+ ;
+
+_LogicAssn :
+ | Delay
+ | LoadDelay
+ ;
+
+LogicIn : EDIF_TOK_LOGICINPUT _LogicIn PopC
+ ;
+
+_LogicIn : PortList
+ | PortRef { str_pair_free($1); }
+ | PortNameRef
+ | _LogicIn LogicWave
+ ;
+
+LogicList : EDIF_TOK_LOGICLIST _LogicList PopC
+ ;
+
+_LogicList :
+ | _LogicList LogicNameRef
+ | _LogicList LogicOneOf
+ | _LogicList Ignore
+ ;
+
+LogicMapIn : EDIF_TOK_LOGICMAPINPUT _LogicMapIn PopC
+ ;
+
+_LogicMapIn :
+ | _LogicMapIn LogicNameRef
+ ;
+
+LogicMapOut : EDIF_TOK_LOGICMAPOUTPUT _LogicMapOut PopC
+ ;
+
+_LogicMapOut :
+ | _LogicMapOut LogicNameRef
+ ;
+
+LogicNameDef : NameDef { str_pair_free($1); }
+ ;
+
+LogicNameRef : NameRef { free($1); }
+ ;
+
+LogicOneOf : EDIF_TOK_LOGICONEOF _LogicOneOf PopC
+ ;
+
+_LogicOneOf :
+ | _LogicOneOf LogicNameRef
+ | _LogicOneOf LogicList
+ ;
+
+LogicOut : EDIF_TOK_LOGICOUTPUT _LogicOut PopC
+ ;
+
+_LogicOut : PortList
+ | PortRef { str_pair_free($1); }
+ | PortNameRef
+ | _LogicOut LogicWave
+ ;
+
+LogicPort : EDIF_TOK_LOGICPORT _LogicPort PopC
+ ;
+
+_LogicPort : PortNameDef
+ | _LogicPort Property
+ | _LogicPort Comment
+ | _LogicPort UserData
+ ;
+
+LogicRef : EDIF_TOK_LOGICREF LogicNameRef _LogicRef PopC
+ ;
+
+_LogicRef :
+ | LibraryRef
+ ;
+
+LogicValue : EDIF_TOK_LOGICVALUE _LogicValue PopC
+ ;
+
+_LogicValue : LogicNameDef
+ | _LogicValue VoltageMap
+ | _LogicValue CurrentMap
+ | _LogicValue BooleanMap
+ | _LogicValue Compound
+ | _LogicValue Weak
+ | _LogicValue Strong
+ | _LogicValue Dominates
+ | _LogicValue LogicMapOut
+ | _LogicValue LogicMapIn
+ | _LogicValue Isolated
+ | _LogicValue Resolves
+ | _LogicValue Property
+ | _LogicValue Comment
+ | _LogicValue UserData
+ ;
+
+LogicWave : EDIF_TOK_LOGICWAVEFORM _LogicWave PopC
+ ;
+
+_LogicWave :
+ | _LogicWave LogicNameRef
+ | _LogicWave LogicList
+ | _LogicWave LogicOneOf
+ | _LogicWave Ignore
+ ;
+
+Maintain : EDIF_TOK_MAINTAIN __Maintain _Maintain PopC
+ ;
+
+__Maintain : PortNameRef
+ | PortRef { str_pair_free($1); }
+ ;
+
+_Maintain :
+ | Delay
+ | LoadDelay
+ ;
+
+Match : EDIF_TOK_MATCH __Match _Match PopC
+ ;
+
+__Match : PortNameRef
+ | PortRef { str_pair_free($1); }
+ | PortList
+ ;
+
+_Match : LogicNameRef
+ | LogicList
+ | LogicOneOf
+ ;
+
+Member : EDIF_TOK_MEMBER NameRef _Member PopC { free($2); }
+ ;
+
+_Member : Int { free($1); }
+ | _Member Int { free($2); }
+ ;
+
+MiNoMa : EDIF_TOK_MINOMAX _MiNoMa PopC
+ ;
+
+_MiNoMa :
+ | _MiNoMa MiNoMaValue
+ | _MiNoMa MiNoMaDisp
+ | _MiNoMa MiNoMa
+ ;
+
+MiNoMaDisp : EDIF_TOK_MINOMAXDISPLAY _MiNoMaDisp PopC
+ ;
+
+_MiNoMaDisp : MiNoMaValue
+ | _MiNoMaDisp Display
+ ;
+
+MiNoMaValue : Mnm
+ | ScaledInt
+ ;
+
+Mnm : EDIF_TOK_MNM _Mnm _Mnm _Mnm PopC
+ ;
+
+_Mnm : ScaledInt
+ | Undefined
+ | Unconstrained
+ ;
+
+MultValSet : EDIF_TOK_MULTIPLEVALUESET _MultValSet PopC
+ ;
+
+_MultValSet :
+ | _MultValSet RangeVector
+ ;
+
+MustJoin : EDIF_TOK_MUSTJOIN _MustJoin PopC
+ ;
+
+_MustJoin :
+ | _MustJoin PortRef { str_pair_free($2); }
+ | _MustJoin PortList
+ | _MustJoin WeakJoined
+ | _MustJoin Joined { pair_list_free($2); }
+ ;
+
+Name : EDIF_TOK_NAME _Name PopC { $$=$2; }
+ ;
+
+_Name : Ident { $$=$1; }
+ | _Name Display
+ ;
+
+NameDef : Ident { $$ = new_str_pair($1,NULL); }
+ | Name { $$ = new_str_pair($1,NULL); }
+| Rename { $$=$1; }
+ ;
+
+NameRef : Ident { $$=$1; }
+ | Name { $$=$1; }
+ ;
+
+Net : EDIF_TOK_NET NetNameDef _Net PopC { define_pcb_net($2, $3); }
+ ;
+
+_Net : Joined { $$=$1; }
+ | _Net Criticality
+ | _Net NetDelay
+ | _Net Figure
+ | _Net Net
+ | _Net Instance
+ | _Net CommGraph
+ | _Net Property
+ | _Net Comment
+ | _Net UserData
+ ;
+
+NetBackAn : EDIF_TOK_NETBACKANNOTATE _NetBackAn PopC
+ ;
+
+_NetBackAn : NetRef
+ | _NetBackAn NetDelay
+ | _NetBackAn Criticality
+ | _NetBackAn Property
+ | _NetBackAn Comment
+ ;
+
+NetBundle : EDIF_TOK_NETBUNDLE NetNameDef _NetBundle PopC { str_pair_free($2); }
+ ;
+
+_NetBundle : ListOfNets
+ | _NetBundle Figure
+ | _NetBundle CommGraph
+ | _NetBundle Property
+ | _NetBundle Comment
+ | _NetBundle UserData
+ ;
+
+NetDelay : EDIF_TOK_NETDELAY Derivation _NetDelay PopC
+ ;
+
+_NetDelay : Delay
+ | _NetDelay Transition
+ | _NetDelay Becomes
+ ;
+
+NetGroup : EDIF_TOK_NETGROUP _NetGroup PopC
+ ;
+
+_NetGroup :
+ | _NetGroup NetNameRef
+ | _NetGroup NetRef
+ ;
+
+NetMap : EDIF_TOK_NETMAP _NetMap PopC
+ ;
+
+_NetMap :
+ | _NetMap NetRef
+ | _NetMap NetGroup
+ | _NetMap Comment
+ | _NetMap UserData
+ ;
+
+NetNameDef : NameDef { $$=$1; }
+| Array { $$=NULL; }
+
+ ;
+
+NetNameRef : NameRef { free($1); }
+ | Member
+ ;
+
+NetRef : EDIF_TOK_NETREF NetNameRef _NetRef PopC
+ ;
+
+_NetRef :
+ | NetRef
+ | InstanceRef { free($1); }
+ | ViewRef
+ ;
+
+NoChange : EDIF_TOK_NOCHANGE PopC
+ ;
+
+NonPermut : EDIF_TOK_NONPERMUTABLE _NonPermut PopC
+ ;
+
+_NonPermut :
+ | _NonPermut PortRef { str_pair_free($2); }
+ | _NonPermut Permutable
+ ;
+
+NotAllowed : EDIF_TOK_NOTALLOWED RuleNameDef _NotAllowed PopC
+ ;
+
+_NotAllowed : FigGrpObj
+ | _NotAllowed Comment
+ | _NotAllowed UserData
+ ;
+
+NotchSpace : EDIF_TOK_NOTCHSPACING RuleNameDef FigGrpObj _NotchSpace PopC
+ ;
+
+_NotchSpace : Range
+ | SingleValSet
+ | _NotchSpace Comment
+ | _NotchSpace UserData
+ ;
+
+Number : EDIF_TOK_NUMBER _Number PopC
+ ;
+
+_Number :
+ | _Number ScaledInt
+ | _Number NumbDisplay
+ | _Number Number
+ ;
+
+NumbDisplay : EDIF_TOK_NUMBERDISPLAY _NumbDisplay PopC
+ ;
+
+_NumbDisplay : ScaledInt
+ | _NumbDisplay Display
+ ;
+
+NumberDefn : EDIF_TOK_NUMBERDEFINITION _NumberDefn PopC
+ ;
+
+_NumberDefn :
+ | _NumberDefn Scale
+ | _NumberDefn GridMap
+ | _NumberDefn Comment
+ ;
+
+OffPageConn : EDIF_TOK_OFFPAGECONNECTOR _OffPageConn PopC
+ ;
+
+_OffPageConn : PortNameDef
+ | _OffPageConn Unused
+ | _OffPageConn Property
+ | _OffPageConn Comment
+ | _OffPageConn UserData
+ ;
+
+OffsetEvent : EDIF_TOK_OFFSETEVENT Event ScaledInt PopC
+ ;
+
+OpenShape : EDIF_TOK_OPENSHAPE _OpenShape PopC
+ ;
+
+_OpenShape : Curve
+ | _OpenShape Property
+ ;
+
+Orientation : EDIF_TOK_ORIENTATION _Orientation PopC
+ ;
+
+_Orientation : EDIF_TOK_R0
+ | EDIF_TOK_R90
+ | EDIF_TOK_R180
+ | EDIF_TOK_R270
+ | EDIF_TOK_MX
+ | EDIF_TOK_MY
+ | EDIF_TOK_MYR90
+ | EDIF_TOK_MXR90
+ ;
+
+Origin : EDIF_TOK_ORIGIN PointValue PopC
+ ;
+
+OverhngDist : EDIF_TOK_OVERHANGDISTANCE RuleNameDef FigGrpObj FigGrpObj _OverhngDist
+ PopC
+ ;
+
+_OverhngDist : Range
+ | SingleValSet
+ | _OverhngDist Comment
+ | _OverhngDist UserData
+ ;
+
+OverlapDist : EDIF_TOK_OVERLAPDISTANCE RuleNameDef FigGrpObj FigGrpObj _OverlapDist
+ PopC
+ ;
+
+_OverlapDist : Range
+ | SingleValSet
+ | _OverlapDist Comment
+ | _OverlapDist UserData
+ ;
+
+Oversize : EDIF_TOK_OVERSIZE Int _Oversize CornerType PopC { free($2); }
+ ;
+
+_Oversize : FigGrpRef
+ | FigureOp
+ ;
+
+Owner : EDIF_TOK_OWNER Str PopC { free($2); }
+ ;
+
+Page : EDIF_TOK_PAGE _Page PopC
+ ;
+
+_Page : InstNameDef
+ | _Page Instance
+ | _Page Net
+ | _Page NetBundle
+ | _Page CommGraph
+ | _Page PortImpl
+ | _Page PageSize
+ | _Page BoundBox
+ | _Page Comment
+ | _Page UserData
+ ;
+
+PageSize : EDIF_TOK_PAGESIZE Rectangle PopC
+ ;
+
+ParamDisp : EDIF_TOK_PARAMETERDISPLAY _ParamDisp PopC
+ ;
+
+_ParamDisp : ValueNameRef
+ | _ParamDisp Display
+ ;
+
+Parameter : EDIF_TOK_PARAMETER ValueNameDef TypedValue _Parameter PopC
+ ;
+
+_Parameter :
+ | Unit
+ ;
+
+ParamAssign : EDIF_TOK_PARAMETERASSIGN ValueNameRef TypedValue PopC
+ ;
+
+Path : EDIF_TOK_PATH _Path PopC
+ ;
+
+_Path : PointList
+ | _Path Property
+ ;
+
+PathDelay : EDIF_TOK_PATHDELAY _PathDelay PopC
+ ;
+
+_PathDelay : Delay
+ | _PathDelay Event
+ ;
+
+PathWidth : EDIF_TOK_PATHWIDTH Int PopC { free($2); }
+ ;
+
+Permutable : EDIF_TOK_PERMUTABLE _Permutable PopC
+ ;
+
+_Permutable :
+ | _Permutable PortRef { str_pair_free($2); }
+ | _Permutable Permutable
+ | _Permutable NonPermut
+ ;
+
+Plug : EDIF_TOK_PLUG _Plug PopC
+ ;
+
+_Plug :
+ | _Plug SocketSet
+ ;
+
+Point : EDIF_TOK_POINT _Point PopC
+ ;
+
+_Point :
+ | _Point PointValue
+ | _Point PointDisp
+ | _Point Point
+ ;
+
+PointDisp : EDIF_TOK_POINTDISPLAY _PointDisp PopC
+ ;
+
+_PointDisp : PointValue
+ | _PointDisp Display
+ ;
+
+PointList : EDIF_TOK_POINTLIST _PointList PopC
+ ;
+
+_PointList :
+ | _PointList PointValue
+ ;
+
+PointValue : EDIF_TOK_PT Int Int PopC { free($2); free($3); }
+ ;
+
+Polygon : EDIF_TOK_POLYGON _Polygon PopC
+ ;
+
+_Polygon : PointList
+ | _Polygon Property
+ ;
+
+Port : EDIF_TOK_PORT _Port PopC
+ ;
+
+_Port : PortNameDef
+ | _Port Direction
+ | _Port Unused
+ | _Port PortDelay
+ | _Port Designator
+ | _Port DcFanInLoad
+ | _Port DcFanOutLoad
+ | _Port DcMaxFanIn
+ | _Port DcMaxFanOut
+ | _Port AcLoad
+ | _Port Property
+ | _Port Comment
+ | _Port UserData
+ ;
+
+PortBackAn : EDIF_TOK_PORTBACKANNOTATE _PortBackAn PopC
+ ;
+
+_PortBackAn : PortRef { str_pair_free($1); }
+ | _PortBackAn Designator
+ | _PortBackAn PortDelay
+ | _PortBackAn DcFanInLoad
+ | _PortBackAn DcFanOutLoad
+ | _PortBackAn DcMaxFanIn
+ | _PortBackAn DcMaxFanOut
+ | _PortBackAn AcLoad
+ | _PortBackAn Property
+ | _PortBackAn Comment
+ ;
+
+PortBundle : EDIF_TOK_PORTBUNDLE PortNameDef _PortBundle PopC
+ ;
+
+_PortBundle : ListOfPorts
+ | _PortBundle Property
+ | _PortBundle Comment
+ | _PortBundle UserData
+ ;
+
+PortDelay : EDIF_TOK_PORTDELAY Derivation _PortDelay PopC
+ ;
+
+_PortDelay : Delay
+ | LoadDelay
+ | _PortDelay Transition
+ | _PortDelay Becomes
+ ;
+
+PortGroup : EDIF_TOK_PORTGROUP _PortGroup PopC
+ ;
+
+_PortGroup :
+ | _PortGroup PortNameRef
+ | _PortGroup PortRef { str_pair_free($2); }
+ ;
+
+PortImpl : EDIF_TOK_PORTIMPLEMENTATION _PortImpl PopC
+ ;
+
+_PortImpl : PortRef { str_pair_free($1); }
+ | PortNameRef
+ | _PortImpl ConnectLoc
+ | _PortImpl Figure
+ | _PortImpl Instance
+ | _PortImpl CommGraph
+ | _PortImpl PropDisplay
+ | _PortImpl KeywordDisp
+ | _PortImpl Property
+ | _PortImpl UserData
+ | _PortImpl Comment
+ ;
+
+PortInst : EDIF_TOK_PORTINSTANCE _PortInst PopC
+ ;
+
+_PortInst : PortRef { str_pair_free($1); }
+ | PortNameRef
+ | _PortInst Unused
+ | _PortInst PortDelay
+ | _PortInst Designator
+ | _PortInst DcFanInLoad
+ | _PortInst DcFanOutLoad
+ | _PortInst DcMaxFanIn
+ | _PortInst DcMaxFanOut
+ | _PortInst AcLoad
+ | _PortInst Property
+ | _PortInst Comment
+ | _PortInst UserData
+ ;
+
+PortList : EDIF_TOK_PORTLIST _PortList PopC
+ ;
+
+_PortList :
+ | _PortList PortRef { str_pair_free($2); }
+ | _PortList PortNameRef
+ ;
+
+PortListAls : EDIF_TOK_PORTLISTALIAS PortNameDef PortList PopC
+ ;
+
+PortMap : EDIF_TOK_PORTMAP _PortMap PopC
+ ;
+
+_PortMap :
+ | _PortMap PortRef { str_pair_free($2); }
+ | _PortMap PortGroup
+ | _PortMap Comment
+ | _PortMap UserData
+ ;
+
+PortNameDef : NameDef { str_pair_free($1); }
+ | Array
+ ;
+
+PortNameRef : NameRef { $$=$1; }
+ | Member
+ ;
+
+PortRef : EDIF_TOK_PORTREF PortNameRef _PortRef PopC
+{
+ if ($3)
+ {
+ $$ = new_str_pair($3->str1,$2);
+ free($3);
+ }
+ else
+ {
+ /* handle port with no instance by passing up the chain */
+ $$ = new_str_pair(NULL,$2);
+ }
+}
+ ;
+
+_PortRef : { $$=NULL; }
+ | PortRef { $$=$1; }
+ | InstanceRef { $$ = new_str_pair($1,NULL); }
+ | ViewRef { $$=NULL; }
+ ;
+
+Program : EDIF_TOK_PROGRAM Str _Program PopC
+ ;
+
+_Program :
+ | Version
+ ;
+
+PropDisplay : EDIF_TOK_PROPERTYDISPLAY _PropDisplay PopC
+ ;
+
+_PropDisplay : PropNameRef
+ | _PropDisplay Display
+ ;
+
+Property : EDIF_TOK_PROPERTY PropNameDef _Property PopC
+ ;
+
+_Property : TypedValue
+ | _Property Owner
+ | _Property Unit
+ | _Property Property
+ | _Property Comment
+ ;
+
+PropNameDef : NameDef { str_pair_free($1); }
+ ;
+
+PropNameRef : NameRef { free($1); }
+ ;
+
+ProtectFrame : EDIF_TOK_PROTECTIONFRAME _ProtectFrame PopC
+ ;
+
+_ProtectFrame :
+ | _ProtectFrame PortImpl
+ | _ProtectFrame Figure
+ | _ProtectFrame Instance
+ | _ProtectFrame CommGraph
+ | _ProtectFrame BoundBox
+ | _ProtectFrame PropDisplay
+ | _ProtectFrame KeywordDisp
+ | _ProtectFrame ParamDisp
+ | _ProtectFrame Property
+ | _ProtectFrame Comment
+ | _ProtectFrame UserData
+ ;
+
+Range : LessThan
+ | GreaterThan
+ | AtMost
+ | AtLeast
+ | Exactly
+ | Between
+ ;
+
+RangeVector : EDIF_TOK_RANGEVECTOR _RangeVector PopC
+ ;
+
+_RangeVector :
+ | _RangeVector Range
+ | _RangeVector SingleValSet
+ ;
+
+Rectangle : EDIF_TOK_RECTANGLE PointValue _Rectangle PopC
+ ;
+
+_Rectangle : PointValue
+ | _Rectangle Property
+ ;
+
+RectSize : EDIF_TOK_RECTANGLESIZE RuleNameDef FigGrpObj _RectSize PopC
+ ;
+
+_RectSize : RangeVector
+ | MultValSet
+ | _RectSize Comment
+ | _RectSize UserData
+ ;
+
+Rename : EDIF_TOK_RENAME __Rename _Rename PopC
+{ $$ = new_str_pair($2,$3); }
+ ;
+
+__Rename : Ident { $$=$1; }
+ | Name { $$=$1; }
+ ;
+
+_Rename : Str { $$=$1; }
+ | StrDisplay { $$=NULL; }
+ ;
+
+Resolves : EDIF_TOK_RESOLVES _Resolves PopC
+ ;
+
+_Resolves :
+ | _Resolves LogicNameRef
+ ;
+
+RuleNameDef : NameDef { str_pair_free($1); }
+ ;
+
+Scale : EDIF_TOK_SCALE ScaledInt ScaledInt Unit PopC
+ ;
+
+ScaledInt : Int { free($1); }
+ | EDIF_TOK_E Int Int PopC { free($2); free($3); }
+ ;
+
+ScaleX : EDIF_TOK_SCALEX Int Int PopC { free($2); free($3); }
+ ;
+
+ScaleY : EDIF_TOK_SCALEY Int Int PopC { free($2); free($3); }
+ ;
+
+Section : EDIF_TOK_SECTION _Section PopC
+ ;
+
+_Section : Str { free($1); }
+ | _Section Section
+ | _Section Str { free($2); }
+ | _Section Instance
+ ;
+
+Shape : EDIF_TOK_SHAPE _Shape PopC
+ ;
+
+_Shape : Curve
+ | _Shape Property
+ ;
+
+SimNameDef : NameDef { str_pair_free($1); }
+ ;
+
+Simulate : EDIF_TOK_SIMULATE _Simulate PopC
+ ;
+
+_Simulate : SimNameDef
+ | _Simulate PortListAls
+ | _Simulate WaveValue
+ | _Simulate Apply
+ | _Simulate Comment
+ | _Simulate UserData
+ ;
+
+SimulInfo : EDIF_TOK_SIMULATIONINFO _SimulInfo PopC
+ ;
+
+_SimulInfo :
+ | _SimulInfo LogicValue
+ | _SimulInfo Comment
+ | _SimulInfo UserData
+ ;
+
+SingleValSet : EDIF_TOK_SINGLEVALUESET _SingleValSet PopC
+ ;
+
+_SingleValSet :
+ | Range
+ ;
+
+Site : EDIF_TOK_SITE ViewRef _Site PopC
+ ;
+
+_Site :
+ | Transform
+ ;
+
+Socket : EDIF_TOK_SOCKET _Socket PopC
+ ;
+
+_Socket :
+ | Symmetry
+ ;
+
+SocketSet : EDIF_TOK_SOCKETSET _SocketSet PopC
+ ;
+
+_SocketSet : Symmetry
+ | _SocketSet Site
+ ;
+
+Status : EDIF_TOK_STATUS _Status PopC
+ ;
+
+_Status :
+ | _Status Written
+ | _Status Comment
+ | _Status UserData
+ ;
+
+Steady : EDIF_TOK_STEADY __Steady _Steady PopC
+ ;
+
+__Steady : PortNameRef
+ | PortRef { str_pair_free($1); }
+ | PortList
+ ;
+
+_Steady : Duration
+ | _Steady Transition
+ | _Steady Becomes
+ ;
+
+StrDisplay : EDIF_TOK_STRINGDISPLAY _StrDisplay PopC
+ ;
+
+String : EDIF_TOK_STRING _String PopC
+ ;
+
+_String :
+ | _String Str { free($2); }
+ | _String StrDisplay
+ | _String String
+ ;
+
+_StrDisplay : Str { free($1); }
+ | _StrDisplay Display
+ ;
+
+Strong : EDIF_TOK_STRONG LogicNameRef PopC
+ ;
+
+Symbol : EDIF_TOK_SYMBOL _Symbol PopC
+ ;
+
+_Symbol :
+ | _Symbol PortImpl
+ | _Symbol Figure
+ | _Symbol Instance
+ | _Symbol CommGraph
+ | _Symbol Annotate
+ | _Symbol PageSize
+ | _Symbol BoundBox
+ | _Symbol PropDisplay
+ | _Symbol KeywordDisp
+ | _Symbol ParamDisp
+ | _Symbol Property
+ | _Symbol Comment
+ | _Symbol UserData
+ ;
+
+Symmetry : EDIF_TOK_SYMMETRY _Symmetry PopC
+ ;
+
+_Symmetry :
+ | _Symmetry Transform
+ ;
+
+Table : EDIF_TOK_TABLE _Table PopC
+ ;
+
+_Table :
+ | _Table Entry
+ | _Table TableDeflt
+ ;
+
+TableDeflt : EDIF_TOK_TABLEDEFAULT __TableDeflt _TableDeflt PopC
+ ;
+
+__TableDeflt : LogicRef
+ | PortRef { str_pair_free($1); }
+ | NoChange
+ | Table
+ ;
+
+_TableDeflt :
+ | Delay
+ | LoadDelay
+ ;
+
+Technology : EDIF_TOK_TECHNOLOGY _Technology PopC
+ ;
+
+_Technology : NumberDefn
+ | _Technology FigGrp
+ | _Technology Fabricate
+ | _Technology SimulInfo
+ | _Technology DesignRule
+ | _Technology Comment
+ | _Technology UserData
+ ;
+
+TextHeight : EDIF_TOK_TEXTHEIGHT Int PopC { free($2); }
+ ;
+
+TimeIntval : EDIF_TOK_TIMEINTERVAL __TimeIntval _TimeIntval PopC
+ ;
+
+__TimeIntval : Event
+ | OffsetEvent
+ ;
+
+_TimeIntval : Event
+ | OffsetEvent
+ | Duration
+ ;
+
+TimeStamp : EDIF_TOK_TIMESTAMP Int Int Int Int Int Int PopC
+{ free($2); free($3); free($4); free($5); free($6); free($7); }
+ ;
+
+Timing : EDIF_TOK_TIMING _Timing PopC
+ ;
+
+_Timing : Derivation
+ | _Timing PathDelay
+ | _Timing Forbidden
+ | _Timing Comment
+ | _Timing UserData
+ ;
+
+Transform : EDIF_TOK_TRANSFORM _TransX _TransY _TransDelta _TransOrien _TransOrg
+ PopC
+ ;
+
+_TransX :
+ | ScaleX
+ ;
+
+_TransY :
+ | ScaleY
+ ;
+
+_TransDelta :
+ | Delta
+ ;
+
+_TransOrien :
+ | Orientation
+ ;
+
+_TransOrg :
+ | Origin
+ ;
+
+Transition : EDIF_TOK_TRANSITION _Transition _Transition PopC
+ ;
+
+_Transition : LogicNameRef
+ | LogicList
+ | LogicOneOf
+ ;
+
+Trigger : EDIF_TOK_TRIGGER _Trigger PopC
+ ;
+
+_Trigger :
+ | _Trigger Change
+ | _Trigger Steady
+ | _Trigger Initial
+ ;
+
+True : EDIF_TOK_TRUE PopC
+ ;
+
+TypedValue : Boolean
+ | Integer
+ | MiNoMa
+ | Number
+ | Point
+ | String
+ ;
+
+Unconstrained : EDIF_TOK_UNCONSTRAINED PopC
+ ;
+
+Undefined : EDIF_TOK_UNDEFINED PopC
+ ;
+
+Union : EDIF_TOK_UNION _Union PopC
+ ;
+
+_Union : FigGrpRef
+ | FigureOp
+ | _Union FigGrpRef
+ | _Union FigureOp
+ ;
+
+Unit : EDIF_TOK_UNIT _Unit PopC
+ ;
+
+_Unit : EDIF_TOK_DISTANCE
+ | EDIF_TOK_CAPACITANCE
+ | EDIF_TOK_CURRENT
+ | EDIF_TOK_RESISTANCE
+ | EDIF_TOK_TEMPERATURE
+ | EDIF_TOK_TIME
+ | EDIF_TOK_VOLTAGE
+ | EDIF_TOK_MASS
+ | EDIF_TOK_FREQUENCY
+ | EDIF_TOK_INDUCTANCE
+ | EDIF_TOK_ENERGY
+ | EDIF_TOK_POWER
+ | EDIF_TOK_CHARGE
+ | EDIF_TOK_CONDUCTANCE
+ | EDIF_TOK_FLUX
+ | EDIF_TOK_ANGLE
+ ;
+
+Unused : EDIF_TOK_UNUSED PopC
+ ;
+
+UserData : EDIF_TOK_USERDATA _UserData PopC
+ ;
+
+_UserData : Ident { free($1); }
+ | _UserData Int { free($2); }
+ | _UserData Str { free($2); }
+ | _UserData Ident { free($2); }
+ | _UserData Form
+ ;
+
+ValueNameDef : NameDef { str_pair_free($1); }
+ | Array
+ ;
+
+ValueNameRef : NameRef { free($1); }
+ | Member
+ ;
+
+Version : EDIF_TOK_VERSION Str PopC { free($2); }
+ ;
+
+View : EDIF_TOK_VIEW ViewNameDef ViewType _View PopC
+ ;
+
+_View : Interface
+ | _View Status
+ | _View Contents
+ | _View Comment
+ | _View Property
+ | _View UserData
+ ;
+
+ViewList : EDIF_TOK_VIEWLIST _ViewList PopC
+ ;
+
+_ViewList :
+ | _ViewList ViewRef
+ | _ViewList ViewList
+ ;
+
+ViewMap : EDIF_TOK_VIEWMAP _ViewMap PopC
+ ;
+
+_ViewMap :
+ | _ViewMap PortMap
+ | _ViewMap PortBackAn
+ | _ViewMap InstMap
+ | _ViewMap InstBackAn
+ | _ViewMap NetMap
+ | _ViewMap NetBackAn
+ | _ViewMap Comment
+ | _ViewMap UserData
+ ;
+
+ViewNameDef : NameDef { str_pair_free($1); }
+ ;
+
+ViewNameRef : NameRef { free($1); }
+ ;
+
+ViewRef : EDIF_TOK_VIEWREF ViewNameRef _ViewRef PopC
+ ;
+
+_ViewRef :
+ | CellRef
+ ;
+
+ViewType : EDIF_TOK_VIEWTYPE _ViewType PopC
+ ;
+
+_ViewType : EDIF_TOK_MASKLAYOUT
+ | EDIF_TOK_PCBLAYOUT
+ | EDIF_TOK_NETLIST
+ | EDIF_TOK_SCHEMATIC
+ | EDIF_TOK_SYMBOLIC
+ | EDIF_TOK_BEHAVIOR
+ | EDIF_TOK_LOGICMODEL
+ | EDIF_TOK_DOCUMENT
+ | EDIF_TOK_GRAPHIC
+ | EDIF_TOK_STRANGER
+ ;
+
+Visible : EDIF_TOK_VISIBLE BooleanValue PopC
+ ;
+
+VoltageMap : EDIF_TOK_VOLTAGEMAP MiNoMaValue PopC
+ ;
+
+WaveValue : EDIF_TOK_WAVEVALUE LogicNameDef ScaledInt LogicWave PopC
+ ;
+
+Weak : EDIF_TOK_WEAK LogicNameRef PopC
+ ;
+
+WeakJoined : EDIF_TOK_WEAKJOINED _WeakJoined PopC
+ ;
+
+_WeakJoined :
+ | _WeakJoined PortRef { str_pair_free($2); }
+ | _WeakJoined PortList
+ | _WeakJoined Joined { pair_list_free($2); }
+ ;
+
+When : EDIF_TOK_WHEN _When PopC
+ ;
+
+_When : Trigger
+ | _When After
+ | _When Follow
+ | _When Maintain
+ | _When LogicAssn
+ | _When Comment
+ | _When UserData
+ ;
+
+Written : EDIF_TOK_WRITTEN _Written PopC
+ ;
+
+_Written : TimeStamp
+ | _Written Author
+ | _Written Program
+ | _Written DataOrigin
+ | _Written Property
+ | _Written Comment
+ | _Written UserData
+ ;
+
+Ident : EDIF_TOK_IDENT { $$=$1; }
+ ;
+
+Str : EDIF_TOK_STR { $$=$1; }
+ ;
+
+Int : EDIF_TOK_INT { $$=$1; }
+ ;
+
+Keyword : EDIF_TOK_KEYWORD { $$=$1; }
+ ;
+
+%%
+/*
+ * xmalloc:
+ *
+ * Garbage function for 'alloca()'.
+ */
+char *xmalloc(int siz)
+{
+ return ((char *)Malloc(siz));
+}
+/*
+ * Token & context carriers:
+ *
+ * These are the linkage pointers for threading this context garbage
+ * for converting identifiers into parser tokens.
+ */
+typedef struct TokenCar {
+ struct TokenCar *Next; /* pointer to next carrier */
+ struct Token *Token; /* associated token */
+} TokenCar;
+typedef struct UsedCar {
+ struct UsedCar *Next; /* pointer to next carrier */
+ short Code; /* used '%token' value */
+} UsedCar;
+typedef struct ContextCar {
+ struct ContextCar *Next; /* pointer to next carrier */
+ struct Context *Context; /* associated context */
+ union {
+ int Single; /* single usage flag (context tree) */
+ struct UsedCar *Used; /* single used list (context stack) */
+ } u;
+} ContextCar;
+/*
+ * Token definitions:
+ *
+ * This associates the '%token' codings with strings which are to
+ * be free standing tokens. Doesn't have to be in sorted order but the
+ * strings must be in lower case.
+ */
+typedef struct Token {
+ char *Name; /* token name */
+ int Code; /* '%token' value */
+ struct Token *Next; /* hash table linkage */
+} Token;
+static Token TokenDef[] = {
+ {"angle", EDIF_TOK_ANGLE},
+ {"behavior", EDIF_TOK_BEHAVIOR},
+ {"calculated", EDIF_TOK_CALCULATED},
+ {"capacitance", EDIF_TOK_CAPACITANCE},
+ {"centercenter", EDIF_TOK_CENTERCENTER},
+ {"centerleft", EDIF_TOK_CENTERLEFT},
+ {"centerright", EDIF_TOK_CENTERRIGHT},
+ {"charge", EDIF_TOK_CHARGE},
+ {"conductance", EDIF_TOK_CONDUCTANCE},
+ {"current", EDIF_TOK_CURRENT},
+ {"distance", EDIF_TOK_DISTANCE},
+ {"document", EDIF_TOK_DOCUMENT},
+ {"energy", EDIF_TOK_ENERGY},
+ {"extend", EDIF_TOK_EXTEND},
+ {"flux", EDIF_TOK_FLUX},
+ {"frequency", EDIF_TOK_FREQUENCY},
+ {"generic", EDIF_TOK_GENERIC},
+ {"graphic", EDIF_TOK_GRAPHIC},
+ {"inductance", EDIF_TOK_INDUCTANCE},
+ {"inout", EDIF_TOK_INOUT},
+ {"input", EDIF_TOK_INPUT},
+ {"logicmodel", EDIF_TOK_LOGICMODEL},
+ {"lowercenter", EDIF_TOK_LOWERCENTER},
+ {"lowerleft", EDIF_TOK_LOWERLEFT},
+ {"lowerright", EDIF_TOK_LOWERRIGHT},
+ {"masklayout", EDIF_TOK_MASKLAYOUT},
+ {"mass", EDIF_TOK_MASS},
+ {"measured", EDIF_TOK_MEASURED},
+ {"mx", EDIF_TOK_MX},
+ {"mxr90", EDIF_TOK_MXR90},
+ {"my", EDIF_TOK_MY},
+ {"myr90", EDIF_TOK_MYR90},
+ {"netlist", EDIF_TOK_NETLIST},
+ {"output", EDIF_TOK_OUTPUT},
+ {"pcblayout", EDIF_TOK_PCBLAYOUT},
+ {"power", EDIF_TOK_POWER},
+ {"r0", EDIF_TOK_R0},
+ {"r180", EDIF_TOK_R180},
+ {"r270", EDIF_TOK_R270},
+ {"r90", EDIF_TOK_R90},
+ {"required", EDIF_TOK_REQUIRED},
+ {"resistance", EDIF_TOK_RESISTANCE},
+ {"ripper", EDIF_TOK_RIPPER},
+ {"round", EDIF_TOK_ROUND},
+ {"schematic", EDIF_TOK_SCHEMATIC},
+ {"stranger", EDIF_TOK_STRANGER},
+ {"symbolic", EDIF_TOK_SYMBOLIC},
+ {"temperature", EDIF_TOK_TEMPERATURE},
+ {"tie", EDIF_TOK_TIE},
+ {"time", EDIF_TOK_TIME},
+ {"truncate", EDIF_TOK_TRUNCATE},
+ {"uppercenter", EDIF_TOK_UPPERCENTER},
+ {"upperleft", EDIF_TOK_UPPERLEFT},
+ {"upperright", EDIF_TOK_UPPERRIGHT},
+ {"voltage", EDIF_TOK_VOLTAGE}
+};
+static int TokenDefSize = sizeof(TokenDef) / sizeof(Token);
+/*
+ * Token enable definitions:
+ *
+ * There is one array for each set of tokens enabled by a
+ * particular context (barf). Another array is used to bind
+ * these arrays to a context.
+ */
+static short e_CellType[] = {EDIF_TOK_TIE, EDIF_TOK_RIPPER, EDIF_TOK_GENERIC};
+static short e_CornerType[] = {EDIF_TOK_EXTEND, EDIF_TOK_TRUNCATE,
+ EDIF_TOK_ROUND};
+static short e_Derivation[] = {EDIF_TOK_CALCULATED, EDIF_TOK_MEASURED,
+ EDIF_TOK_REQUIRED};
+static short e_Direction[] = {EDIF_TOK_INPUT, EDIF_TOK_OUTPUT,
+ EDIF_TOK_INOUT};
+static short e_EndType[] = {EDIF_TOK_EXTEND, EDIF_TOK_TRUNCATE,
+ EDIF_TOK_ROUND};
+static short e_Justify[] = {EDIF_TOK_CENTERCENTER, EDIF_TOK_CENTERLEFT,
+ EDIF_TOK_CENTERRIGHT, EDIF_TOK_LOWERCENTER,
+ EDIF_TOK_LOWERLEFT, EDIF_TOK_LOWERRIGHT,
+ EDIF_TOK_UPPERCENTER, EDIF_TOK_UPPERLEFT,
+ EDIF_TOK_UPPERRIGHT};
+static short e_Orientation[] = {EDIF_TOK_R0, EDIF_TOK_R90, EDIF_TOK_R180,
+ EDIF_TOK_R270, EDIF_TOK_MX, EDIF_TOK_MY,
+ EDIF_TOK_MXR90, EDIF_TOK_MYR90};
+static short e_Unit[] = {EDIF_TOK_DISTANCE, EDIF_TOK_CAPACITANCE,
+ EDIF_TOK_CURRENT, EDIF_TOK_RESISTANCE,
+ EDIF_TOK_TEMPERATURE, EDIF_TOK_TIME,
+ EDIF_TOK_VOLTAGE, EDIF_TOK_MASS, EDIF_TOK_FREQUENCY,
+ EDIF_TOK_INDUCTANCE, EDIF_TOK_ENERGY,
+ EDIF_TOK_POWER, EDIF_TOK_CHARGE,
+ EDIF_TOK_CONDUCTANCE, EDIF_TOK_FLUX, EDIF_TOK_ANGLE};
+static short e_ViewType[] = {EDIF_TOK_MASKLAYOUT, EDIF_TOK_PCBLAYOUT,
+ EDIF_TOK_NETLIST, EDIF_TOK_SCHEMATIC,
+ EDIF_TOK_SYMBOLIC, EDIF_TOK_BEHAVIOR,
+ EDIF_TOK_LOGICMODEL, EDIF_TOK_DOCUMENT,
+ EDIF_TOK_GRAPHIC, EDIF_TOK_STRANGER};
+/*
+ * Token tying table:
+ *
+ * This binds enabled tokens to a context.
+ */
+typedef struct Tie {
+ short *Enable; /* pointer to enable array */
+ short Origin; /* '%token' value of context */
+ short EnableSize; /* size of enabled array */
+} Tie;
+#define TE(e,o) {e,o,sizeof(e)/sizeof(short)}
+static Tie TieDef[] = {
+ TE(e_CellType, EDIF_TOK_CELLTYPE),
+ TE(e_CornerType, EDIF_TOK_CORNERTYPE),
+ TE(e_Derivation, EDIF_TOK_DERIVATION),
+ TE(e_Direction, EDIF_TOK_DIRECTION),
+ TE(e_EndType, EDIF_TOK_ENDTYPE),
+ TE(e_Justify, EDIF_TOK_JUSTIFY),
+ TE(e_Orientation, EDIF_TOK_ORIENTATION),
+ TE(e_Unit, EDIF_TOK_UNIT),
+ TE(e_ViewType, EDIF_TOK_VIEWTYPE)
+};
+static int TieDefSize = sizeof(TieDef) / sizeof(Tie);
+/*
+ * Context definitions:
+ *
+ * This associates keyword strings with '%token' values. It
+ * also creates a pretty much empty header for later building of
+ * the context tree. Again they needn't be sorted, but strings
+ * must be lower case.
+ */
+typedef struct Context {
+ char *Name; /* keyword name */
+ short Code; /* '%token' value */
+ short Flags; /* special operation flags */
+ struct ContextCar *Context; /* contexts which can be moved to */
+ struct TokenCar *Token; /* active tokens */
+ struct Context *Next; /* hash table linkage */
+} Context;
+static Context ContextDef[] = {
+ {"", 0}, /* start context */
+ {"acload", EDIF_TOK_ACLOAD},
+ {"after", EDIF_TOK_AFTER},
+ {"annotate", EDIF_TOK_ANNOTATE},
+ {"apply", EDIF_TOK_APPLY},
+ {"arc", EDIF_TOK_ARC},
+ {"array", EDIF_TOK_ARRAY},
+ {"arraymacro", EDIF_TOK_ARRAYMACRO},
+ {"arrayrelatedinfo", EDIF_TOK_ARRAYRELATEDINFO},
+ {"arraysite", EDIF_TOK_ARRAYSITE},
+ {"atleast", EDIF_TOK_ATLEAST},
+ {"atmost", EDIF_TOK_ATMOST},
+ {"author", EDIF_TOK_AUTHOR},
+ {"basearray", EDIF_TOK_BASEARRAY},
+ {"becomes", EDIF_TOK_BECOMES},
+ {"between", EDIF_TOK_BETWEEN},
+ {"boolean", EDIF_TOK_BOOLEAN},
+ {"booleandisplay", EDIF_TOK_BOOLEANDISPLAY},
+ {"booleanmap", EDIF_TOK_BOOLEANMAP},
+ {"borderpattern", EDIF_TOK_BORDERPATTERN},
+ {"borderwidth", EDIF_TOK_BORDERWIDTH},
+ {"boundingbox", EDIF_TOK_BOUNDINGBOX},
+ {"cell", EDIF_TOK_CELL},
+ {"cellref", EDIF_TOK_CELLREF},
+ {"celltype", EDIF_TOK_CELLTYPE},
+ {"change", EDIF_TOK_CHANGE},
+ {"circle", EDIF_TOK_CIRCLE},
+ {"color", EDIF_TOK_COLOR},
+ {"comment", EDIF_TOK_COMMENT},
+ {"commentgraphics", EDIF_TOK_COMMENTGRAPHICS},
+ {"compound", EDIF_TOK_COMPOUND},
+ {"connectlocation", EDIF_TOK_CONNECTLOCATION},
+ {"contents", EDIF_TOK_CONTENTS},
+ {"cornertype", EDIF_TOK_CORNERTYPE},
+ {"criticality", EDIF_TOK_CRITICALITY},
+ {"currentmap", EDIF_TOK_CURRENTMAP},
+ {"curve", EDIF_TOK_CURVE},
+ {"cycle", EDIF_TOK_CYCLE},
+ {"dataorigin", EDIF_TOK_DATAORIGIN},
+ {"dcfaninload", EDIF_TOK_DCFANINLOAD},
+ {"dcfanoutload", EDIF_TOK_DCFANOUTLOAD},
+ {"dcmaxfanin", EDIF_TOK_DCMAXFANIN},
+ {"dcmaxfanout", EDIF_TOK_DCMAXFANOUT},
+ {"delay", EDIF_TOK_DELAY},
+ {"delta", EDIF_TOK_DELTA},
+ {"derivation", EDIF_TOK_DERIVATION},
+ {"design", EDIF_TOK_DESIGN},
+ {"designator", EDIF_TOK_DESIGNATOR},
+ {"difference", EDIF_TOK_DIFFERENCE},
+ {"direction", EDIF_TOK_DIRECTION},
+ {"display", EDIF_TOK_DISPLAY},
+ {"dominates", EDIF_TOK_DOMINATES},
+ {"dot", EDIF_TOK_DOT},
+ {"duration", EDIF_TOK_DURATION},
+ {"e", EDIF_TOK_E},
+ {"edif", EDIF_TOK_EDIF},
+ {"ediflevel", EDIF_TOK_EDIFLEVEL},
+ {"edifversion", EDIF_TOK_EDIFVERSION},
+ {"enclosuredistance", EDIF_TOK_ENCLOSUREDISTANCE},
+ {"endtype", EDIF_TOK_ENDTYPE},
+ {"entry", EDIF_TOK_ENTRY},
+ {"exactly", EDIF_TOK_EXACTLY},
+ {"external", EDIF_TOK_EXTERNAL},
+ {"fabricate", EDIF_TOK_FABRICATE},
+ {"false", EDIF_TOK_FALSE},
+ {"figure", EDIF_TOK_FIGURE},
+ {"figurearea", EDIF_TOK_FIGUREAREA},
+ {"figuregroup", EDIF_TOK_FIGUREGROUP},
+ {"figuregroupobject", EDIF_TOK_FIGUREGROUPOBJECT},
+ {"figuregroupoverride", EDIF_TOK_FIGUREGROUPOVERRIDE},
+ {"figuregroupref", EDIF_TOK_FIGUREGROUPREF},
+ {"figureperimeter", EDIF_TOK_FIGUREPERIMETER},
+ {"figurewidth", EDIF_TOK_FIGUREWIDTH},
+ {"fillpattern", EDIF_TOK_FILLPATTERN},
+ {"follow", EDIF_TOK_FOLLOW},
+ {"forbiddenevent", EDIF_TOK_FORBIDDENEVENT},
+ {"globalportref", EDIF_TOK_GLOBALPORTREF},
+ {"greaterthan", EDIF_TOK_GREATERTHAN},
+ {"gridmap", EDIF_TOK_GRIDMAP},
+ {"ignore", EDIF_TOK_IGNORE},
+ {"includefiguregroup", EDIF_TOK_INCLUDEFIGUREGROUP},
+ {"initial", EDIF_TOK_INITIAL},
+ {"instance", EDIF_TOK_INSTANCE},
+ {"instancebackannotate", EDIF_TOK_INSTANCEBACKANNOTATE},
+ {"instancegroup", EDIF_TOK_INSTANCEGROUP},
+ {"instancemap", EDIF_TOK_INSTANCEMAP},
+ {"instanceref", EDIF_TOK_INSTANCEREF},
+ {"integer", EDIF_TOK_INTEGER},
+ {"integerdisplay", EDIF_TOK_INTEGERDISPLAY},
+ {"interface", EDIF_TOK_INTERFACE},
+ {"interfiguregroupspacing", EDIF_TOK_INTERFIGUREGROUPSPACING},
+ {"intersection", EDIF_TOK_INTERSECTION},
+ {"intrafiguregroupspacing", EDIF_TOK_INTRAFIGUREGROUPSPACING},
+ {"inverse", EDIF_TOK_INVERSE},
+ {"isolated", EDIF_TOK_ISOLATED},
+ {"joined", EDIF_TOK_JOINED},
+ {"justify", EDIF_TOK_JUSTIFY},
+ {"keyworddisplay", EDIF_TOK_KEYWORDDISPLAY},
+ {"keywordlevel", EDIF_TOK_KEYWORDLEVEL},
+ {"keywordmap", EDIF_TOK_KEYWORDMAP},
+ {"lessthan", EDIF_TOK_LESSTHAN},
+ {"library", EDIF_TOK_LIBRARY},
+ {"libraryref", EDIF_TOK_LIBRARYREF},
+ {"listofnets", EDIF_TOK_LISTOFNETS},
+ {"listofports", EDIF_TOK_LISTOFPORTS},
+ {"loaddelay", EDIF_TOK_LOADDELAY},
+ {"logicassign", EDIF_TOK_LOGICASSIGN},
+ {"logicinput", EDIF_TOK_LOGICINPUT},
+ {"logiclist", EDIF_TOK_LOGICLIST},
+ {"logicmapinput", EDIF_TOK_LOGICMAPINPUT},
+ {"logicmapoutput", EDIF_TOK_LOGICMAPOUTPUT},
+ {"logiconeof", EDIF_TOK_LOGICONEOF},
+ {"logicoutput", EDIF_TOK_LOGICOUTPUT},
+ {"logicport", EDIF_TOK_LOGICPORT},
+ {"logicref", EDIF_TOK_LOGICREF},
+ {"logicvalue", EDIF_TOK_LOGICVALUE},
+ {"logicwaveform", EDIF_TOK_LOGICWAVEFORM},
+ {"maintain", EDIF_TOK_MAINTAIN},
+ {"match", EDIF_TOK_MATCH},
+ {"member", EDIF_TOK_MEMBER},
+ {"minomax", EDIF_TOK_MINOMAX},
+ {"minomaxdisplay", EDIF_TOK_MINOMAXDISPLAY},
+ {"mnm", EDIF_TOK_MNM},
+ {"multiplevalueset", EDIF_TOK_MULTIPLEVALUESET},
+ {"mustjoin", EDIF_TOK_MUSTJOIN},
+ {"name", EDIF_TOK_NAME},
+ {"net", EDIF_TOK_NET},
+ {"netbackannotate", EDIF_TOK_NETBACKANNOTATE},
+ {"netbundle", EDIF_TOK_NETBUNDLE},
+ {"netdelay", EDIF_TOK_NETDELAY},
+ {"netgroup", EDIF_TOK_NETGROUP},
+ {"netmap", EDIF_TOK_NETMAP},
+ {"netref", EDIF_TOK_NETREF},
+ {"nochange", EDIF_TOK_NOCHANGE},
+ {"nonpermutable", EDIF_TOK_NONPERMUTABLE},
+ {"notallowed", EDIF_TOK_NOTALLOWED},
+ {"notchspacing", EDIF_TOK_NOTCHSPACING},
+ {"number", EDIF_TOK_NUMBER},
+ {"numberdefinition", EDIF_TOK_NUMBERDEFINITION},
+ {"numberdisplay", EDIF_TOK_NUMBERDISPLAY},
+ {"offpageconnector", EDIF_TOK_OFFPAGECONNECTOR},
+ {"offsetevent", EDIF_TOK_OFFSETEVENT},
+ {"openshape", EDIF_TOK_OPENSHAPE},
+ {"orientation", EDIF_TOK_ORIENTATION},
+ {"origin", EDIF_TOK_ORIGIN},
+ {"overhangdistance", EDIF_TOK_OVERHANGDISTANCE},
+ {"overlapdistance", EDIF_TOK_OVERLAPDISTANCE},
+ {"oversize", EDIF_TOK_OVERSIZE},
+ {"owner", EDIF_TOK_OWNER},
+ {"page", EDIF_TOK_PAGE},
+ {"pagesize", EDIF_TOK_PAGESIZE},
+ {"parameter", EDIF_TOK_PARAMETER},
+ {"parameterassign", EDIF_TOK_PARAMETERASSIGN},
+ {"parameterdisplay", EDIF_TOK_PARAMETERDISPLAY},
+ {"path", EDIF_TOK_PATH},
+ {"pathdelay", EDIF_TOK_PATHDELAY},
+ {"pathwidth", EDIF_TOK_PATHWIDTH},
+ {"permutable", EDIF_TOK_PERMUTABLE},
+ {"physicaldesignrule", EDIF_TOK_PHYSICALDESIGNRULE},
+ {"plug", EDIF_TOK_PLUG},
+ {"point", EDIF_TOK_POINT},
+ {"pointdisplay", EDIF_TOK_POINTDISPLAY},
+ {"pointlist", EDIF_TOK_POINTLIST},
+ {"polygon", EDIF_TOK_POLYGON},
+ {"port", EDIF_TOK_PORT},
+ {"portbackannotate", EDIF_TOK_PORTBACKANNOTATE},
+ {"portbundle", EDIF_TOK_PORTBUNDLE},
+ {"portdelay", EDIF_TOK_PORTDELAY},
+ {"portgroup", EDIF_TOK_PORTGROUP},
+ {"portimplementation", EDIF_TOK_PORTIMPLEMENTATION},
+ {"portinstance", EDIF_TOK_PORTINSTANCE},
+ {"portlist", EDIF_TOK_PORTLIST},
+ {"portlistalias", EDIF_TOK_PORTLISTALIAS},
+ {"portmap", EDIF_TOK_PORTMAP},
+ {"portref", EDIF_TOK_PORTREF},
+ {"program", EDIF_TOK_PROGRAM},
+ {"property", EDIF_TOK_PROPERTY},
+ {"propertydisplay", EDIF_TOK_PROPERTYDISPLAY},
+ {"protectionframe", EDIF_TOK_PROTECTIONFRAME},
+ {"pt", EDIF_TOK_PT},
+ {"rangevector", EDIF_TOK_RANGEVECTOR},
+ {"rectangle", EDIF_TOK_RECTANGLE},
+ {"rectanglesize", EDIF_TOK_RECTANGLESIZE},
+ {"rename", EDIF_TOK_RENAME},
+ {"resolves", EDIF_TOK_RESOLVES},
+ {"scale", EDIF_TOK_SCALE},
+ {"scalex", EDIF_TOK_SCALEX},
+ {"scaley", EDIF_TOK_SCALEY},
+ {"section", EDIF_TOK_SECTION},
+ {"shape", EDIF_TOK_SHAPE},
+ {"simulate", EDIF_TOK_SIMULATE},
+ {"simulationinfo", EDIF_TOK_SIMULATIONINFO},
+ {"singlevalueset", EDIF_TOK_SINGLEVALUESET},
+ {"site", EDIF_TOK_SITE},
+ {"socket", EDIF_TOK_SOCKET},
+ {"socketset", EDIF_TOK_SOCKETSET},
+ {"status", EDIF_TOK_STATUS},
+ {"steady", EDIF_TOK_STEADY},
+ {"string", EDIF_TOK_STRING},
+ {"stringdisplay", EDIF_TOK_STRINGDISPLAY},
+ {"strong", EDIF_TOK_STRONG},
+ {"symbol", EDIF_TOK_SYMBOL},
+ {"symmetry", EDIF_TOK_SYMMETRY},
+ {"table", EDIF_TOK_TABLE},
+ {"tabledefault", EDIF_TOK_TABLEDEFAULT},
+ {"technology", EDIF_TOK_TECHNOLOGY},
+ {"textheight", EDIF_TOK_TEXTHEIGHT},
+ {"timeinterval", EDIF_TOK_TIMEINTERVAL},
+ {"timestamp", EDIF_TOK_TIMESTAMP},
+ {"timing", EDIF_TOK_TIMING},
+ {"transform", EDIF_TOK_TRANSFORM},
+ {"transition", EDIF_TOK_TRANSITION},
+ {"trigger", EDIF_TOK_TRIGGER},
+ {"true", EDIF_TOK_TRUE},
+ {"unconstrained", EDIF_TOK_UNCONSTRAINED},
+ {"undefined", EDIF_TOK_UNDEFINED},
+ {"union", EDIF_TOK_UNION},
+ {"unit", EDIF_TOK_UNIT},
+ {"unused", EDIF_TOK_UNUSED},
+ {"userdata", EDIF_TOK_USERDATA},
+ {"version", EDIF_TOK_VERSION},
+ {"view", EDIF_TOK_VIEW},
+ {"viewlist", EDIF_TOK_VIEWLIST},
+ {"viewmap", EDIF_TOK_VIEWMAP},
+ {"viewref", EDIF_TOK_VIEWREF},
+ {"viewtype", EDIF_TOK_VIEWTYPE},
+ {"visible", EDIF_TOK_VISIBLE},
+ {"voltagemap", EDIF_TOK_VOLTAGEMAP},
+ {"wavevalue", EDIF_TOK_WAVEVALUE},
+ {"weak", EDIF_TOK_WEAK},
+ {"weakjoined", EDIF_TOK_WEAKJOINED},
+ {"when", EDIF_TOK_WHEN},
+ {"written", EDIF_TOK_WRITTEN}
+};
+static int ContextDefSize = sizeof(ContextDef) / sizeof(Context);
+/*
+ * Context follower tables:
+ *
+ * This is pretty ugly, an array is defined for each context
+ * which has following context levels. Yet another table is used
+ * to bind these arrays to the originating contexts.
+ * Arrays are declared as:
+ *
+ * static short f_[] = { ... };
+ *
+ * The array entries are the '%token' values for all keywords which
+ * can be reached from the context. Like I said, ugly,
+ * but it works.
+ * A negative entry means that the follow can only occur once within
+ * the specified context.
+ */
+static short f_NULL[] = {EDIF_TOK_EDIF};
+static short f_Edif[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_EDIFVERSION,
+ EDIF_TOK_EDIFLEVEL, EDIF_TOK_KEYWORDMAP,
+ -EDIF_TOK_STATUS, EDIF_TOK_EXTERNAL,
+ EDIF_TOK_LIBRARY, EDIF_TOK_DESIGN, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_AcLoad[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_MINOMAXDISPLAY};
+static short f_After[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_FOLLOW,
+ EDIF_TOK_MAINTAIN, EDIF_TOK_LOGICASSIGN,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_Annotate[] = {EDIF_TOK_STRINGDISPLAY};
+static short f_Apply[] = {EDIF_TOK_CYCLE, EDIF_TOK_LOGICINPUT,
+ EDIF_TOK_LOGICOUTPUT, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_Arc[] = {EDIF_TOK_PT};
+static short f_Array[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME};
+static short f_ArrayMacro[] = {EDIF_TOK_PLUG};
+static short f_ArrayRelatedInfo[] = {EDIF_TOK_BASEARRAY, EDIF_TOK_ARRAYSITE,
+ EDIF_TOK_ARRAYMACRO, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_ArraySite[] = {EDIF_TOK_SOCKET};
+static short f_AtLeast[] = {EDIF_TOK_E};
+static short f_AtMost[] = {EDIF_TOK_E};
+static short f_Becomes[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICLIST,
+ EDIF_TOK_LOGICONEOF};
+/*
+static short f_Between[] = {EDIF_TOK_ATLEAST, EDIF_TOK_GREATERTHAN,
+ EDIF_TOK_ATMOST, EDIF_TOK_LESSTHAN};
+*/
+static short f_Boolean[] = {EDIF_TOK_FALSE, EDIF_TOK_TRUE,
+ EDIF_TOK_BOOLEANDISPLAY, EDIF_TOK_BOOLEAN};
+static short f_BooleanDisplay[] = {EDIF_TOK_FALSE, EDIF_TOK_TRUE,
+ EDIF_TOK_DISPLAY};
+static short f_BooleanMap[] = {EDIF_TOK_FALSE, EDIF_TOK_TRUE};
+static short f_BorderPattern[] = {EDIF_TOK_BOOLEAN};
+static short f_BoundingBox[] = {EDIF_TOK_RECTANGLE};
+static short f_Cell[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_CELLTYPE,
+ -EDIF_TOK_STATUS, -EDIF_TOK_VIEWMAP, EDIF_TOK_VIEW,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA,
+ EDIF_TOK_PROPERTY};
+static short f_CellRef[] = {EDIF_TOK_NAME, EDIF_TOK_LIBRARYREF};
+static short f_Change[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
+ EDIF_TOK_BECOMES, EDIF_TOK_TRANSITION};
+static short f_Circle[] = {EDIF_TOK_PT, EDIF_TOK_PROPERTY};
+static short f_Color[] = {EDIF_TOK_E};
+static short f_CommentGraphics[] = {EDIF_TOK_ANNOTATE, EDIF_TOK_FIGURE,
+ EDIF_TOK_INSTANCE, -EDIF_TOK_BOUNDINGBOX,
+ EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_Compound[] = {EDIF_TOK_NAME};
+static short f_ConnectLocation[] = {EDIF_TOK_FIGURE};
+static short f_Contents[] = {EDIF_TOK_INSTANCE, EDIF_TOK_OFFPAGECONNECTOR,
+ EDIF_TOK_FIGURE, EDIF_TOK_SECTION, EDIF_TOK_NET,
+ EDIF_TOK_NETBUNDLE, EDIF_TOK_PAGE,
+ EDIF_TOK_COMMENTGRAPHICS,
+ EDIF_TOK_PORTIMPLEMENTATION,
+ EDIF_TOK_TIMING, EDIF_TOK_SIMULATE,
+ EDIF_TOK_WHEN, EDIF_TOK_FOLLOW,
+ EDIF_TOK_LOGICPORT, -EDIF_TOK_BOUNDINGBOX,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_Criticality[] = {EDIF_TOK_INTEGERDISPLAY};
+static short f_CurrentMap[] = {EDIF_TOK_MNM, EDIF_TOK_E};
+static short f_Curve[] = {EDIF_TOK_ARC, EDIF_TOK_PT};
+static short f_Cycle[] = {EDIF_TOK_DURATION};
+static short f_DataOrigin[] = {EDIF_TOK_VERSION};
+static short f_DcFanInLoad[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY};
+static short f_DcFanOutLoad[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY};
+static short f_DcMaxFanIn[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY};
+static short f_DcMaxFanOut[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY};
+static short f_Delay[] = {EDIF_TOK_MNM, EDIF_TOK_E};
+static short f_Delta[] = {EDIF_TOK_PT};
+static short f_Design[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_CELLREF,
+ EDIF_TOK_STATUS, EDIF_TOK_COMMENT,
+ EDIF_TOK_PROPERTY, EDIF_TOK_USERDATA};
+static short f_Designator[] = {EDIF_TOK_STRINGDISPLAY};
+static short f_Difference[] = {EDIF_TOK_FIGUREGROUPREF, EDIF_TOK_INTERSECTION,
+ EDIF_TOK_UNION, EDIF_TOK_DIFFERENCE,
+ EDIF_TOK_INVERSE, EDIF_TOK_OVERSIZE};
+static short f_Display[] = {EDIF_TOK_NAME, EDIF_TOK_FIGUREGROUPOVERRIDE,
+ EDIF_TOK_JUSTIFY, EDIF_TOK_ORIENTATION,
+ EDIF_TOK_ORIGIN};
+static short f_Dominates[] = {EDIF_TOK_NAME};
+static short f_Dot[] = {EDIF_TOK_PT, EDIF_TOK_PROPERTY};
+static short f_Duration[] = {EDIF_TOK_E};
+static short f_EnclosureDistance[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_FIGUREGROUPOBJECT,
+ EDIF_TOK_LESSTHAN, EDIF_TOK_GREATERTHAN,
+ EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
+ EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN,
+ EDIF_TOK_SINGLEVALUESET,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_Entry[] = {EDIF_TOK_MATCH, EDIF_TOK_CHANGE, EDIF_TOK_STEADY,
+ EDIF_TOK_LOGICREF, EDIF_TOK_PORTREF,
+ EDIF_TOK_NOCHANGE, EDIF_TOK_TABLE,
+ EDIF_TOK_DELAY, EDIF_TOK_LOADDELAY};
+static short f_Exactly[] = {EDIF_TOK_E};
+static short f_External[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_EDIFLEVEL, EDIF_TOK_TECHNOLOGY,
+ -EDIF_TOK_STATUS, EDIF_TOK_CELL, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_Fabricate[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME};
+static short f_Figure[] = {EDIF_TOK_NAME, EDIF_TOK_FIGUREGROUPOVERRIDE,
+ EDIF_TOK_CIRCLE, EDIF_TOK_DOT, EDIF_TOK_OPENSHAPE,
+ EDIF_TOK_PATH, EDIF_TOK_POLYGON,
+ EDIF_TOK_RECTANGLE, EDIF_TOK_SHAPE,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_FigureArea[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
+ EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
+ EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
+ EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_FigureGroup[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ -EDIF_TOK_CORNERTYPE, -EDIF_TOK_ENDTYPE,
+ -EDIF_TOK_PATHWIDTH, -EDIF_TOK_BORDERWIDTH,
+ -EDIF_TOK_COLOR, -EDIF_TOK_FILLPATTERN,
+ -EDIF_TOK_BORDERPATTERN, -EDIF_TOK_TEXTHEIGHT,
+ -EDIF_TOK_VISIBLE, EDIF_TOK_INCLUDEFIGUREGROUP,
+ EDIF_TOK_COMMENT, EDIF_TOK_PROPERTY,
+ EDIF_TOK_USERDATA};
+static short f_FigureGroupObject[] = {EDIF_TOK_NAME,
+ EDIF_TOK_FIGUREGROUPOBJECT,
+ EDIF_TOK_INTERSECTION, EDIF_TOK_UNION,
+ EDIF_TOK_DIFFERENCE, EDIF_TOK_INVERSE,
+ EDIF_TOK_OVERSIZE};
+static short f_FigureGroupOverride[] = {EDIF_TOK_NAME, -EDIF_TOK_CORNERTYPE,
+ -EDIF_TOK_ENDTYPE, -EDIF_TOK_PATHWIDTH,
+ -EDIF_TOK_BORDERWIDTH, -EDIF_TOK_COLOR,
+ -EDIF_TOK_FILLPATTERN,
+ -EDIF_TOK_TEXTHEIGHT,
+ -EDIF_TOK_BORDERPATTERN,
+ EDIF_TOK_VISIBLE, EDIF_TOK_COMMENT,
+ EDIF_TOK_PROPERTY, EDIF_TOK_USERDATA};
+static short f_FigureGroupRef[] = {EDIF_TOK_NAME, EDIF_TOK_LIBRARYREF};
+static short f_FigurePerimeter[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_FIGUREGROUPOBJECT,
+ EDIF_TOK_LESSTHAN, EDIF_TOK_GREATERTHAN,
+ EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
+ EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN,
+ EDIF_TOK_SINGLEVALUESET, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_FigureWidth[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
+ EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
+ EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
+ EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_FillPattern[] = {EDIF_TOK_BOOLEAN};
+static short f_Follow[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF, EDIF_TOK_TABLE,
+ EDIF_TOK_DELAY, EDIF_TOK_LOADDELAY};
+static short f_ForbiddenEvent[] = {EDIF_TOK_TIMEINTERVAL, EDIF_TOK_EVENT};
+static short f_GlobalPortRef[] = {EDIF_TOK_NAME};
+static short f_GreaterThan[] = {EDIF_TOK_E};
+static short f_GridMap[] = {EDIF_TOK_E};
+static short f_IncludeFigureGroup[] = {EDIF_TOK_FIGUREGROUPREF,
+ EDIF_TOK_INTERSECTION, EDIF_TOK_UNION,
+ EDIF_TOK_DIFFERENCE, EDIF_TOK_INVERSE,
+ EDIF_TOK_OVERSIZE};
+static short f_Instance[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
+ EDIF_TOK_VIEWREF, EDIF_TOK_VIEWLIST,
+ -EDIF_TOK_TRANSFORM, EDIF_TOK_PARAMETERASSIGN,
+ EDIF_TOK_PORTINSTANCE, EDIF_TOK_TIMING,
+ -EDIF_TOK_DESIGNATOR, EDIF_TOK_PROPERTY,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_InstanceBackAnnotate[] = {EDIF_TOK_INSTANCEREF,
+ -EDIF_TOK_DESIGNATOR, EDIF_TOK_TIMING,
+ EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT};
+static short f_InstanceGroup[] = {EDIF_TOK_INSTANCEREF};
+static short f_InstanceMap[] = {EDIF_TOK_INSTANCEREF, EDIF_TOK_INSTANCEGROUP,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_InstanceRef[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
+ EDIF_TOK_INSTANCEREF, EDIF_TOK_VIEWREF};
+static short f_Integer[] = {EDIF_TOK_INTEGERDISPLAY, EDIF_TOK_INTEGER};
+static short f_IntegerDisplay[] = {EDIF_TOK_DISPLAY};
+static short f_Interface[] = {EDIF_TOK_PORT, EDIF_TOK_PORTBUNDLE,
+ -EDIF_TOK_SYMBOL, -EDIF_TOK_PROTECTIONFRAME,
+ -EDIF_TOK_ARRAYRELATEDINFO, EDIF_TOK_PARAMETER,
+ EDIF_TOK_JOINED, EDIF_TOK_MUSTJOIN,
+ EDIF_TOK_WEAKJOINED, EDIF_TOK_PERMUTABLE,
+ EDIF_TOK_TIMING, EDIF_TOK_SIMULATE,
+ -EDIF_TOK_DESIGNATOR, EDIF_TOK_PROPERTY,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_InterFigureGroupSpacing[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_FIGUREGROUPOBJECT,
+ EDIF_TOK_LESSTHAN,
+ EDIF_TOK_GREATERTHAN,
+ EDIF_TOK_ATMOST,
+ EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
+ EDIF_TOK_BETWEEN,
+ EDIF_TOK_SINGLEVALUESET,
+ EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_Intersection[] = {EDIF_TOK_FIGUREGROUPREF,
+ EDIF_TOK_INTERSECTION, EDIF_TOK_UNION,
+ EDIF_TOK_DIFFERENCE, EDIF_TOK_INVERSE,
+ EDIF_TOK_OVERSIZE};
+static short f_IntraFigureGroupSpacing[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_FIGUREGROUPOBJECT,
+ EDIF_TOK_LESSTHAN,
+ EDIF_TOK_GREATERTHAN,
+ EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
+ EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN,
+ EDIF_TOK_SINGLEVALUESET,
+ EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_Inverse[] = {EDIF_TOK_FIGUREGROUPREF, EDIF_TOK_INTERSECTION,
+ EDIF_TOK_UNION, EDIF_TOK_DIFFERENCE,
+ EDIF_TOK_INVERSE, EDIF_TOK_OVERSIZE};
+static short f_Joined[] = {EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
+ EDIF_TOK_GLOBALPORTREF};
+static short f_KeywordDisplay[] = {EDIF_TOK_DISPLAY};
+static short f_KeywordMap[] = {EDIF_TOK_KEYWORDLEVEL, EDIF_TOK_COMMENT};
+static short f_LessThan[] = {EDIF_TOK_E};
+static short f_Library[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_EDIFLEVEL,
+ EDIF_TOK_TECHNOLOGY, -EDIF_TOK_STATUS,
+ EDIF_TOK_CELL, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_LibraryRef[] = {EDIF_TOK_NAME};
+static short f_ListOfNets[] = {EDIF_TOK_NET};
+static short f_ListOfPorts[] = {EDIF_TOK_PORT, EDIF_TOK_PORTBUNDLE};
+static short f_LoadDelay[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_MINOMAXDISPLAY};
+static short f_LogicAssign[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF,
+ EDIF_TOK_LOGICREF, EDIF_TOK_TABLE,
+ EDIF_TOK_DELAY, EDIF_TOK_LOADDELAY};
+static short f_LogicInput[] = {EDIF_TOK_PORTLIST, EDIF_TOK_PORTREF,
+ EDIF_TOK_NAME, EDIF_TOK_LOGICWAVEFORM};
+static short f_LogicList[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICONEOF,
+ EDIF_TOK_IGNORE};
+static short f_LogicMapInput[] = {EDIF_TOK_LOGICREF};
+static short f_LogicMapOutput[] = {EDIF_TOK_LOGICREF};
+static short f_LogicOneOf[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICLIST};
+static short f_LogicOutput[] = {EDIF_TOK_PORTLIST, EDIF_TOK_PORTREF,
+ EDIF_TOK_NAME, EDIF_TOK_LOGICWAVEFORM};
+static short f_LogicPort[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_LogicRef[] = {EDIF_TOK_NAME, EDIF_TOK_LIBRARYREF};
+static short f_LogicValue[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ -EDIF_TOK_VOLTAGEMAP, -EDIF_TOK_CURRENTMAP,
+ -EDIF_TOK_BOOLEANMAP, -EDIF_TOK_COMPOUND,
+ -EDIF_TOK_WEAK ,-EDIF_TOK_STRONG,
+ -EDIF_TOK_DOMINATES, -EDIF_TOK_LOGICMAPOUTPUT,
+ -EDIF_TOK_LOGICMAPINPUT,
+ -EDIF_TOK_ISOLATED, EDIF_TOK_RESOLVES,
+ EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_LogicWaveform[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICLIST,
+ EDIF_TOK_LOGICONEOF, EDIF_TOK_IGNORE};
+static short f_Maintain[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF, EDIF_TOK_DELAY,
+ EDIF_TOK_LOADDELAY};
+static short f_Match[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
+ EDIF_TOK_LOGICLIST, EDIF_TOK_LOGICONEOF};
+static short f_Member[] = {EDIF_TOK_NAME};
+static short f_MiNoMax[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_MINOMAXDISPLAY,
+ EDIF_TOK_MINOMAX};
+static short f_MiNoMaxDisplay[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_DISPLAY};
+static short f_Mnm[] = {EDIF_TOK_E, EDIF_TOK_UNDEFINED,
+ EDIF_TOK_UNCONSTRAINED};
+static short f_MultipleValueSet[] = {EDIF_TOK_RANGEVECTOR};
+static short f_MustJoin[] = {EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
+ EDIF_TOK_WEAKJOINED, EDIF_TOK_JOINED};
+static short f_Name[] = {EDIF_TOK_DISPLAY};
+static short f_Net[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, -EDIF_TOK_CRITICALITY,
+ EDIF_TOK_NETDELAY, EDIF_TOK_FIGURE, EDIF_TOK_NET,
+ EDIF_TOK_INSTANCE, EDIF_TOK_COMMENTGRAPHICS,
+ EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA, EDIF_TOK_JOINED, EDIF_TOK_ARRAY};
+static short f_NetBackAnnotate[] = {EDIF_TOK_NETREF, EDIF_TOK_NETDELAY,
+ -EDIF_TOK_CRITICALITY, EDIF_TOK_PROPERTY,
+ EDIF_TOK_COMMENT};
+static short f_NetBundle[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
+ EDIF_TOK_LISTOFNETS, EDIF_TOK_FIGURE,
+ EDIF_TOK_COMMENTGRAPHICS, EDIF_TOK_PROPERTY,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_NetDelay[] = {EDIF_TOK_DERIVATION, EDIF_TOK_DELAY,
+ EDIF_TOK_TRANSITION, EDIF_TOK_BECOMES};
+static short f_NetGroup[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER, EDIF_TOK_NETREF};
+static short f_NetMap[] = {EDIF_TOK_NETREF, EDIF_TOK_NETGROUP,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_NetRef[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER, EDIF_TOK_NETREF,
+ EDIF_TOK_INSTANCEREF, EDIF_TOK_VIEWREF};
+static short f_NonPermutable[] = {EDIF_TOK_PORTREF, EDIF_TOK_PERMUTABLE};
+static short f_NotAllowed[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_NotchSpacing[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
+ EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
+ EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
+ EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_Number[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY, EDIF_TOK_NUMBER};
+static short f_NumberDefinition[] = {EDIF_TOK_SCALE, -EDIF_TOK_GRIDMAP,
+ EDIF_TOK_COMMENT};
+static short f_NumberDisplay[] = {EDIF_TOK_E, EDIF_TOK_DISPLAY};
+static short f_OffPageConnector[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ -EDIF_TOK_UNUSED, EDIF_TOK_PROPERTY,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_OffsetEvent[] = {EDIF_TOK_EVENT, EDIF_TOK_E};
+static short f_OpenShape[] = {EDIF_TOK_CURVE, EDIF_TOK_PROPERTY};
+static short f_Origin[] = {EDIF_TOK_PT};
+static short f_OverhangDistance[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
+ EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
+ EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
+ EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_OverlapDistance[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
+ EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
+ EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
+ EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_Oversize[] = {EDIF_TOK_FIGUREGROUPREF, EDIF_TOK_INTERSECTION,
+ EDIF_TOK_UNION, EDIF_TOK_DIFFERENCE,
+ EDIF_TOK_INVERSE, EDIF_TOK_OVERSIZE,
+ EDIF_TOK_CORNERTYPE};
+static short f_Page[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
+ EDIF_TOK_INSTANCE, EDIF_TOK_NET, EDIF_TOK_NETBUNDLE,
+ EDIF_TOK_COMMENTGRAPHICS, EDIF_TOK_PORTIMPLEMENTATION,
+ -EDIF_TOK_PAGESIZE, -EDIF_TOK_BOUNDINGBOX,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_PageSize[] = {EDIF_TOK_RECTANGLE};
+static short f_Parameter[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
+ EDIF_TOK_BOOLEAN, EDIF_TOK_INTEGER,
+ EDIF_TOK_MINOMAX, EDIF_TOK_NUMBER,
+ EDIF_TOK_POINT, EDIF_TOK_STRING};
+static short f_ParameterAssign[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
+ EDIF_TOK_BOOLEAN, EDIF_TOK_INTEGER,
+ EDIF_TOK_MINOMAX, EDIF_TOK_NUMBER, EDIF_TOK_POINT,
+ EDIF_TOK_STRING};
+static short f_ParameterDisplay[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
+ EDIF_TOK_DISPLAY};
+static short f_Path[] = {EDIF_TOK_POINTLIST, EDIF_TOK_PROPERTY};
+static short f_PathDelay[] = {EDIF_TOK_DELAY, EDIF_TOK_EVENT};
+static short f_Permutable[] = {EDIF_TOK_PORTREF, EDIF_TOK_PERMUTABLE,
+ EDIF_TOK_NONPERMUTABLE};
+static short f_PhysicalDesignRule[] = {EDIF_TOK_FIGUREWIDTH,
+ EDIF_TOK_FIGUREAREA,
+ EDIF_TOK_RECTANGLESIZE,
+ EDIF_TOK_FIGUREPERIMETER,
+ EDIF_TOK_OVERLAPDISTANCE,
+ EDIF_TOK_OVERHANGDISTANCE,
+ EDIF_TOK_ENCLOSUREDISTANCE,
+ EDIF_TOK_INTERFIGUREGROUPSPACING,
+ EDIF_TOK_NOTCHSPACING,
+ EDIF_TOK_INTRAFIGUREGROUPSPACING,
+ EDIF_TOK_NOTALLOWED,
+ EDIF_TOK_FIGUREGROUP, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_Plug[] = {EDIF_TOK_SOCKETSET};
+static short f_Point[] = {EDIF_TOK_PT, EDIF_TOK_POINTDISPLAY,
+ EDIF_TOK_POINT};
+static short f_PointDisplay[] = {EDIF_TOK_PT, EDIF_TOK_DISPLAY};
+static short f_PointList[] = {EDIF_TOK_PT};
+static short f_Polygon[] = {EDIF_TOK_POINTLIST, EDIF_TOK_PROPERTY};
+static short f_Port[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
+ -EDIF_TOK_DIRECTION, -EDIF_TOK_UNUSED,
+ EDIF_TOK_PORTDELAY, -EDIF_TOK_DESIGNATOR,
+ -EDIF_TOK_DCFANINLOAD, -EDIF_TOK_DCFANOUTLOAD,
+ -EDIF_TOK_DCMAXFANIN, -EDIF_TOK_DCMAXFANOUT,
+ -EDIF_TOK_ACLOAD, EDIF_TOK_PROPERTY,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_PortBackAnnotate[] = {EDIF_TOK_PORTREF, -EDIF_TOK_DESIGNATOR,
+ EDIF_TOK_PORTDELAY, -EDIF_TOK_DCFANINLOAD,
+ -EDIF_TOK_DCFANOUTLOAD,
+ -EDIF_TOK_DCMAXFANIN,
+ -EDIF_TOK_DCMAXFANOUT, -EDIF_TOK_ACLOAD,
+ EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT};
+static short f_PortBundle[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
+ EDIF_TOK_LISTOFPORTS, EDIF_TOK_PROPERTY,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_PortDelay[] = {EDIF_TOK_DERIVATION, EDIF_TOK_DELAY,
+ EDIF_TOK_LOADDELAY, EDIF_TOK_TRANSITION,
+ EDIF_TOK_BECOMES};
+static short f_PortGroup[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
+ EDIF_TOK_PORTREF};
+static short f_PortImplementation[] = {EDIF_TOK_PORTREF, EDIF_TOK_NAME, EDIF_TOK_MEMBER,
+ -EDIF_TOK_CONNECTLOCATION,
+ EDIF_TOK_FIGURE, EDIF_TOK_INSTANCE,
+ EDIF_TOK_COMMENTGRAPHICS,
+ EDIF_TOK_PROPERTYDISPLAY,
+ EDIF_TOK_KEYWORDDISPLAY,
+ EDIF_TOK_PROPERTY,
+ EDIF_TOK_USERDATA, EDIF_TOK_COMMENT};
+static short f_PortInstance[] = {EDIF_TOK_PORTREF, EDIF_TOK_NAME,
+ EDIF_TOK_MEMBER, -EDIF_TOK_UNUSED,
+ EDIF_TOK_PORTDELAY, -EDIF_TOK_DESIGNATOR,
+ -EDIF_TOK_DCFANINLOAD,
+ -EDIF_TOK_DCFANOUTLOAD, -EDIF_TOK_DCMAXFANIN,
+ -EDIF_TOK_DCMAXFANOUT, -EDIF_TOK_ACLOAD,
+ EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_PortList[] = {EDIF_TOK_PORTREF, EDIF_TOK_NAME,
+ EDIF_TOK_MEMBER};
+static short f_PortListAlias[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_ARRAY, EDIF_TOK_PORTLIST};
+static short f_PortMap[] = {EDIF_TOK_PORTREF, EDIF_TOK_PORTGROUP,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_PortRef[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
+ EDIF_TOK_PORTREF, EDIF_TOK_INSTANCEREF,
+ EDIF_TOK_VIEWREF};
+static short f_Program[] = {EDIF_TOK_VERSION};
+static short f_Property[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_BOOLEAN,
+ EDIF_TOK_INTEGER, EDIF_TOK_MINOMAX,
+ EDIF_TOK_NUMBER, EDIF_TOK_POINT, EDIF_TOK_STRING,
+ -EDIF_TOK_OWNER, -EDIF_TOK_UNIT,
+ EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT};
+static short f_PropertyDisplay[] = {EDIF_TOK_NAME, EDIF_TOK_DISPLAY};
+static short f_ProtectionFrame[] = {EDIF_TOK_PORTIMPLEMENTATION,
+ EDIF_TOK_FIGURE, EDIF_TOK_INSTANCE,
+ EDIF_TOK_COMMENTGRAPHICS,
+ -EDIF_TOK_BOUNDINGBOX,
+ EDIF_TOK_PROPERTYDISPLAY,
+ EDIF_TOK_KEYWORDDISPLAY,
+ EDIF_TOK_PARAMETERDISPLAY,
+ EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_RangeVector[] = {EDIF_TOK_LESSTHAN, EDIF_TOK_GREATERTHAN,
+ EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
+ EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN,
+ EDIF_TOK_SINGLEVALUESET};
+static short f_Rectangle[] = {EDIF_TOK_PT, EDIF_TOK_PROPERTY};
+static short f_RectangleSize[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
+ EDIF_TOK_FIGUREGROUPOBJECT,
+ EDIF_TOK_RANGEVECTOR,
+ EDIF_TOK_MULTIPLEVALUESET,EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_Rename[] = {EDIF_TOK_NAME, EDIF_TOK_STRINGDISPLAY};
+static short f_Resolves[] = {EDIF_TOK_NAME};
+static short f_Scale[] = {EDIF_TOK_E, EDIF_TOK_UNIT};
+static short f_Section[] = {EDIF_TOK_SECTION, EDIF_TOK_INSTANCE};
+static short f_Shape[] = {EDIF_TOK_CURVE, EDIF_TOK_PROPERTY};
+static short f_Simulate[] = {EDIF_TOK_NAME, EDIF_TOK_PORTLISTALIAS,
+ EDIF_TOK_WAVEVALUE, EDIF_TOK_APPLY,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
+static short f_SimulationInfo[] = {EDIF_TOK_LOGICVALUE, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_SingleValueSet[] = {EDIF_TOK_LESSTHAN, EDIF_TOK_GREATERTHAN,
+ EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
+ EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN};
+static short f_Site[] = {EDIF_TOK_VIEWREF, EDIF_TOK_TRANSFORM};
+static short f_Socket[] = {EDIF_TOK_SYMMETRY};
+static short f_SocketSet[] = {EDIF_TOK_SYMMETRY, EDIF_TOK_SITE};
+static short f_Status[] = {EDIF_TOK_WRITTEN, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_Steady[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER, EDIF_TOK_PORTREF,
+ EDIF_TOK_PORTLIST, EDIF_TOK_DURATION,
+ EDIF_TOK_TRANSITION, EDIF_TOK_BECOMES};
+static short f_String[] = {EDIF_TOK_STRINGDISPLAY, EDIF_TOK_STRING};
+static short f_StringDisplay[] = {EDIF_TOK_DISPLAY};
+static short f_Strong[] = {EDIF_TOK_NAME};
+static short f_Symbol[] = {EDIF_TOK_PORTIMPLEMENTATION, EDIF_TOK_FIGURE,
+ EDIF_TOK_INSTANCE, EDIF_TOK_COMMENTGRAPHICS,
+ EDIF_TOK_ANNOTATE, -EDIF_TOK_PAGESIZE,
+ -EDIF_TOK_BOUNDINGBOX, EDIF_TOK_PROPERTYDISPLAY,
+ EDIF_TOK_KEYWORDDISPLAY, EDIF_TOK_PARAMETERDISPLAY,
+ EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_Symmetry[] = {EDIF_TOK_TRANSFORM};
+static short f_Table[] = {EDIF_TOK_ENTRY, EDIF_TOK_TABLEDEFAULT};
+static short f_TableDefault[] = {EDIF_TOK_LOGICREF, EDIF_TOK_PORTREF,
+ EDIF_TOK_NOCHANGE, EDIF_TOK_TABLE,
+ EDIF_TOK_DELAY, EDIF_TOK_LOADDELAY};
+static short f_Technology[] = {EDIF_TOK_NUMBERDEFINITION, EDIF_TOK_FIGUREGROUP,
+ EDIF_TOK_FABRICATE, -EDIF_TOK_SIMULATIONINFO,
+ EDIF_TOK_COMMENT, EDIF_TOK_USERDATA,
+ -EDIF_TOK_PHYSICALDESIGNRULE};
+static short f_TimeInterval[] = {EDIF_TOK_EVENT, EDIF_TOK_OFFSETEVENT,
+ EDIF_TOK_DURATION};
+static short f_Timing[] = {EDIF_TOK_DERIVATION, EDIF_TOK_PATHDELAY,
+ EDIF_TOK_FORBIDDENEVENT, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_Transform[] = {EDIF_TOK_SCALEX, EDIF_TOK_SCALEY, EDIF_TOK_DELTA,
+ EDIF_TOK_ORIENTATION, EDIF_TOK_ORIGIN};
+static short f_Transition[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICLIST,
+ EDIF_TOK_LOGICONEOF};
+static short f_Trigger[] = {EDIF_TOK_CHANGE, EDIF_TOK_STEADY,
+ EDIF_TOK_INITIAL};
+static short f_Union[] = {EDIF_TOK_FIGUREGROUPREF, EDIF_TOK_INTERSECTION,
+ EDIF_TOK_UNION, EDIF_TOK_DIFFERENCE,
+ EDIF_TOK_INVERSE, EDIF_TOK_OVERSIZE};
+static short f_View[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_VIEWTYPE,
+ EDIF_TOK_INTERFACE, -EDIF_TOK_STATUS,
+ -EDIF_TOK_CONTENTS, EDIF_TOK_COMMENT,
+ EDIF_TOK_PROPERTY, EDIF_TOK_USERDATA};
+static short f_ViewList[] = {EDIF_TOK_VIEWREF, EDIF_TOK_VIEWLIST};
+static short f_ViewMap[] = {EDIF_TOK_PORTMAP, EDIF_TOK_PORTBACKANNOTATE,
+ EDIF_TOK_INSTANCEMAP,
+ EDIF_TOK_INSTANCEBACKANNOTATE, EDIF_TOK_NETMAP,
+ EDIF_TOK_NETBACKANNOTATE, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_ViewRef[] = {EDIF_TOK_NAME, EDIF_TOK_CELLREF};
+static short f_Visible[] = {EDIF_TOK_FALSE, EDIF_TOK_TRUE};
+static short f_VoltageMap[] = {EDIF_TOK_MNM, EDIF_TOK_E};
+static short f_WaveValue[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_E,
+ EDIF_TOK_LOGICWAVEFORM};
+static short f_Weak[] = {EDIF_TOK_NAME};
+static short f_WeakJoined[] = {EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
+ EDIF_TOK_JOINED};
+static short f_When[] = {EDIF_TOK_TRIGGER, EDIF_TOK_AFTER,
+ EDIF_TOK_FOLLOW, EDIF_TOK_MAINTAIN,
+ EDIF_TOK_LOGICASSIGN, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+static short f_Written[] = {EDIF_TOK_TIMESTAMP, EDIF_TOK_AUTHOR,
+ EDIF_TOK_PROGRAM, EDIF_TOK_DATAORIGIN,
+ EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
+ EDIF_TOK_USERDATA};
+/*
+ * Context binding table:
+ *
+ * This binds context follower arrays to their originating context.
+ */
+typedef struct Binder {
+ short *Follower; /* pointer to follower array */
+ short Origin; /* '%token' value of origin */
+ short FollowerSize; /* size of follower array */
+} Binder;
+#define BE(f,o) {f,o,sizeof(f)/sizeof(short)}
+static Binder BinderDef[] = {
+ BE(f_NULL, 0),
+ BE(f_Edif, EDIF_TOK_EDIF),
+ BE(f_AcLoad, EDIF_TOK_ACLOAD),
+ BE(f_After, EDIF_TOK_AFTER),
+ BE(f_Annotate, EDIF_TOK_ANNOTATE),
+ BE(f_Apply, EDIF_TOK_APPLY),
+ BE(f_Arc, EDIF_TOK_ARC),
+ BE(f_Array, EDIF_TOK_ARRAY),
+ BE(f_ArrayMacro, EDIF_TOK_ARRAYMACRO),
+ BE(f_ArrayRelatedInfo, EDIF_TOK_ARRAYRELATEDINFO),
+ BE(f_ArraySite, EDIF_TOK_ARRAYSITE),
+ BE(f_AtLeast, EDIF_TOK_ATLEAST),
+ BE(f_AtMost, EDIF_TOK_ATMOST),
+ BE(f_Becomes, EDIF_TOK_BECOMES),
+ BE(f_Boolean, EDIF_TOK_BOOLEAN),
+ BE(f_BooleanDisplay, EDIF_TOK_BOOLEANDISPLAY),
+ BE(f_BooleanMap, EDIF_TOK_BOOLEANMAP),
+ BE(f_BorderPattern, EDIF_TOK_BORDERPATTERN),
+ BE(f_BoundingBox, EDIF_TOK_BOUNDINGBOX),
+ BE(f_Cell, EDIF_TOK_CELL),
+ BE(f_CellRef, EDIF_TOK_CELLREF),
+ BE(f_Change, EDIF_TOK_CHANGE),
+ BE(f_Circle, EDIF_TOK_CIRCLE),
+ BE(f_Color, EDIF_TOK_COLOR),
+ BE(f_CommentGraphics, EDIF_TOK_COMMENTGRAPHICS),
+ BE(f_Compound, EDIF_TOK_COMPOUND),
+ BE(f_ConnectLocation, EDIF_TOK_CONNECTLOCATION),
+ BE(f_Contents, EDIF_TOK_CONTENTS),
+ BE(f_Criticality, EDIF_TOK_CRITICALITY),
+ BE(f_CurrentMap, EDIF_TOK_CURRENTMAP),
+ BE(f_Curve, EDIF_TOK_CURVE),
+ BE(f_Cycle, EDIF_TOK_CYCLE),
+ BE(f_DataOrigin, EDIF_TOK_DATAORIGIN),
+ BE(f_DcFanInLoad, EDIF_TOK_DCFANINLOAD),
+ BE(f_DcFanOutLoad, EDIF_TOK_DCFANOUTLOAD),
+ BE(f_DcMaxFanIn, EDIF_TOK_DCMAXFANIN),
+ BE(f_DcMaxFanOut, EDIF_TOK_DCMAXFANOUT),
+ BE(f_Delay, EDIF_TOK_DELAY),
+ BE(f_Delta, EDIF_TOK_DELTA),
+ BE(f_Design, EDIF_TOK_DESIGN),
+ BE(f_Designator, EDIF_TOK_DESIGNATOR),
+ BE(f_Difference, EDIF_TOK_DIFFERENCE),
+ BE(f_Display, EDIF_TOK_DISPLAY),
+ BE(f_Dominates, EDIF_TOK_DOMINATES),
+ BE(f_Dot, EDIF_TOK_DOT),
+ BE(f_Duration, EDIF_TOK_DURATION),
+ BE(f_EnclosureDistance, EDIF_TOK_ENCLOSUREDISTANCE),
+ BE(f_Entry, EDIF_TOK_ENTRY),
+ BE(f_Exactly, EDIF_TOK_EXACTLY),
+ BE(f_External, EDIF_TOK_EXTERNAL),
+ BE(f_Fabricate, EDIF_TOK_FABRICATE),
+ BE(f_Figure, EDIF_TOK_FIGURE),
+ BE(f_FigureArea, EDIF_TOK_FIGUREAREA),
+ BE(f_FigureGroup, EDIF_TOK_FIGUREGROUP),
+ BE(f_FigureGroupObject, EDIF_TOK_FIGUREGROUPOBJECT),
+ BE(f_FigureGroupOverride, EDIF_TOK_FIGUREGROUPOVERRIDE),
+ BE(f_FigureGroupRef, EDIF_TOK_FIGUREGROUPREF),
+ BE(f_FigurePerimeter, EDIF_TOK_FIGUREPERIMETER),
+ BE(f_FigureWidth, EDIF_TOK_FIGUREWIDTH),
+ BE(f_FillPattern, EDIF_TOK_FILLPATTERN),
+ BE(f_Follow, EDIF_TOK_FOLLOW),
+ BE(f_ForbiddenEvent, EDIF_TOK_FORBIDDENEVENT),
+ BE(f_GlobalPortRef, EDIF_TOK_GLOBALPORTREF),
+ BE(f_GreaterThan, EDIF_TOK_GREATERTHAN),
+ BE(f_GridMap, EDIF_TOK_GRIDMAP),
+ BE(f_IncludeFigureGroup, EDIF_TOK_INCLUDEFIGUREGROUP),
+ BE(f_Instance, EDIF_TOK_INSTANCE),
+ BE(f_InstanceBackAnnotate, EDIF_TOK_INSTANCEBACKANNOTATE),
+ BE(f_InstanceGroup, EDIF_TOK_INSTANCEGROUP),
+ BE(f_InstanceMap, EDIF_TOK_INSTANCEMAP),
+ BE(f_InstanceRef, EDIF_TOK_INSTANCEREF),
+ BE(f_Integer, EDIF_TOK_INTEGER),
+ BE(f_IntegerDisplay, EDIF_TOK_INTEGERDISPLAY),
+ BE(f_InterFigureGroupSpacing, EDIF_TOK_INTERFIGUREGROUPSPACING),
+ BE(f_Interface, EDIF_TOK_INTERFACE),
+ BE(f_Intersection, EDIF_TOK_INTERSECTION),
+ BE(f_IntraFigureGroupSpacing, EDIF_TOK_INTRAFIGUREGROUPSPACING),
+ BE(f_Inverse, EDIF_TOK_INVERSE),
+ BE(f_Joined, EDIF_TOK_JOINED),
+ BE(f_KeywordDisplay, EDIF_TOK_KEYWORDDISPLAY),
+ BE(f_KeywordMap, EDIF_TOK_KEYWORDMAP),
+ BE(f_LessThan, EDIF_TOK_LESSTHAN),
+ BE(f_Library, EDIF_TOK_LIBRARY),
+ BE(f_LibraryRef, EDIF_TOK_LIBRARYREF),
+ BE(f_ListOfNets, EDIF_TOK_LISTOFNETS),
+ BE(f_ListOfPorts, EDIF_TOK_LISTOFPORTS),
+ BE(f_LoadDelay, EDIF_TOK_LOADDELAY),
+ BE(f_LogicAssign, EDIF_TOK_LOGICASSIGN),
+ BE(f_LogicInput, EDIF_TOK_LOGICINPUT),
+ BE(f_LogicList, EDIF_TOK_LOGICLIST),
+ BE(f_LogicMapInput, EDIF_TOK_LOGICMAPINPUT),
+ BE(f_LogicMapOutput, EDIF_TOK_LOGICMAPOUTPUT),
+ BE(f_LogicOneOf, EDIF_TOK_LOGICONEOF),
+ BE(f_LogicOutput, EDIF_TOK_LOGICOUTPUT),
+ BE(f_LogicPort, EDIF_TOK_LOGICPORT),
+ BE(f_LogicRef, EDIF_TOK_LOGICREF),
+ BE(f_LogicValue, EDIF_TOK_LOGICVALUE),
+ BE(f_LogicWaveform, EDIF_TOK_LOGICWAVEFORM),
+ BE(f_Maintain, EDIF_TOK_MAINTAIN),
+ BE(f_Match, EDIF_TOK_MATCH),
+ BE(f_Member, EDIF_TOK_MEMBER),
+ BE(f_MiNoMax, EDIF_TOK_MINOMAX),
+ BE(f_MiNoMaxDisplay, EDIF_TOK_MINOMAXDISPLAY),
+ BE(f_Mnm, EDIF_TOK_MNM),
+ BE(f_MultipleValueSet, EDIF_TOK_MULTIPLEVALUESET),
+ BE(f_MustJoin, EDIF_TOK_MUSTJOIN),
+ BE(f_Name, EDIF_TOK_NAME),
+ BE(f_Net, EDIF_TOK_NET),
+ BE(f_NetBackAnnotate, EDIF_TOK_NETBACKANNOTATE),
+ BE(f_NetBundle, EDIF_TOK_NETBUNDLE),
+ BE(f_NetDelay, EDIF_TOK_NETDELAY),
+ BE(f_NetGroup, EDIF_TOK_NETGROUP),
+ BE(f_NetMap, EDIF_TOK_NETMAP),
+ BE(f_NetRef, EDIF_TOK_NETREF),
+ BE(f_NonPermutable, EDIF_TOK_NONPERMUTABLE),
+ BE(f_NotAllowed, EDIF_TOK_NOTALLOWED),
+ BE(f_NotchSpacing, EDIF_TOK_NOTCHSPACING),
+ BE(f_Number, EDIF_TOK_NUMBER),
+ BE(f_NumberDefinition, EDIF_TOK_NUMBERDEFINITION),
+ BE(f_NumberDisplay, EDIF_TOK_NUMBERDISPLAY),
+ BE(f_OffPageConnector, EDIF_TOK_OFFPAGECONNECTOR),
+ BE(f_OffsetEvent, EDIF_TOK_OFFSETEVENT),
+ BE(f_OpenShape, EDIF_TOK_OPENSHAPE),
+ BE(f_Origin, EDIF_TOK_ORIGIN),
+ BE(f_OverhangDistance, EDIF_TOK_OVERHANGDISTANCE),
+ BE(f_OverlapDistance, EDIF_TOK_OVERLAPDISTANCE),
+ BE(f_Oversize, EDIF_TOK_OVERSIZE),
+ BE(f_Page, EDIF_TOK_PAGE),
+ BE(f_PageSize, EDIF_TOK_PAGESIZE),
+ BE(f_Parameter, EDIF_TOK_PARAMETER),
+ BE(f_ParameterAssign, EDIF_TOK_PARAMETERASSIGN),
+ BE(f_ParameterDisplay, EDIF_TOK_PARAMETERDISPLAY),
+ BE(f_Path, EDIF_TOK_PATH),
+ BE(f_PathDelay, EDIF_TOK_PATHDELAY),
+ BE(f_Permutable, EDIF_TOK_PERMUTABLE),
+ BE(f_PhysicalDesignRule, EDIF_TOK_PHYSICALDESIGNRULE),
+ BE(f_Plug, EDIF_TOK_PLUG),
+ BE(f_Point, EDIF_TOK_POINT),
+ BE(f_PointDisplay, EDIF_TOK_POINTDISPLAY),
+ BE(f_PointList, EDIF_TOK_POINTLIST),
+ BE(f_Polygon, EDIF_TOK_POLYGON),
+ BE(f_Port, EDIF_TOK_PORT),
+ BE(f_PortBackAnnotate, EDIF_TOK_PORTBACKANNOTATE),
+ BE(f_PortBundle, EDIF_TOK_PORTBUNDLE),
+ BE(f_PortDelay, EDIF_TOK_PORTDELAY),
+ BE(f_PortGroup, EDIF_TOK_PORTGROUP),
+ BE(f_PortImplementation, EDIF_TOK_PORTIMPLEMENTATION),
+ BE(f_PortInstance, EDIF_TOK_PORTINSTANCE),
+ BE(f_PortList, EDIF_TOK_PORTLIST),
+ BE(f_PortListAlias, EDIF_TOK_PORTLISTALIAS),
+ BE(f_PortMap, EDIF_TOK_PORTMAP),
+ BE(f_PortRef, EDIF_TOK_PORTREF),
+ BE(f_Program, EDIF_TOK_PROGRAM),
+ BE(f_Property, EDIF_TOK_PROPERTY),
+ BE(f_PropertyDisplay, EDIF_TOK_PROPERTYDISPLAY),
+ BE(f_ProtectionFrame, EDIF_TOK_PROTECTIONFRAME),
+ BE(f_RangeVector, EDIF_TOK_RANGEVECTOR),
+ BE(f_Rectangle, EDIF_TOK_RECTANGLE),
+ BE(f_RectangleSize, EDIF_TOK_RECTANGLESIZE),
+ BE(f_Rename, EDIF_TOK_RENAME),
+ BE(f_Resolves, EDIF_TOK_RESOLVES),
+ BE(f_Scale, EDIF_TOK_SCALE),
+ BE(f_Section, EDIF_TOK_SECTION),
+ BE(f_Shape, EDIF_TOK_SHAPE),
+ BE(f_Simulate, EDIF_TOK_SIMULATE),
+ BE(f_SimulationInfo, EDIF_TOK_SIMULATIONINFO),
+ BE(f_SingleValueSet, EDIF_TOK_SINGLEVALUESET),
+ BE(f_Site, EDIF_TOK_SITE),
+ BE(f_Socket, EDIF_TOK_SOCKET),
+ BE(f_SocketSet, EDIF_TOK_SOCKETSET),
+ BE(f_Status, EDIF_TOK_STATUS),
+ BE(f_Steady, EDIF_TOK_STEADY),
+ BE(f_String, EDIF_TOK_STRING),
+ BE(f_StringDisplay, EDIF_TOK_STRINGDISPLAY),
+ BE(f_Strong, EDIF_TOK_STRONG),
+ BE(f_Symbol, EDIF_TOK_SYMBOL),
+ BE(f_Symmetry, EDIF_TOK_SYMMETRY),
+ BE(f_Table, EDIF_TOK_TABLE),
+ BE(f_TableDefault, EDIF_TOK_TABLEDEFAULT),
+ BE(f_Technology, EDIF_TOK_TECHNOLOGY),
+ BE(f_TimeInterval, EDIF_TOK_TIMEINTERVAL),
+ BE(f_Timing, EDIF_TOK_TIMING),
+ BE(f_Transform, EDIF_TOK_TRANSFORM),
+ BE(f_Transition, EDIF_TOK_TRANSITION),
+ BE(f_Trigger, EDIF_TOK_TRIGGER),
+ BE(f_Union, EDIF_TOK_UNION),
+ BE(f_View, EDIF_TOK_VIEW),
+ BE(f_ViewList, EDIF_TOK_VIEWLIST),
+ BE(f_ViewMap, EDIF_TOK_VIEWMAP),
+ BE(f_ViewRef, EDIF_TOK_VIEWREF),
+ BE(f_Visible, EDIF_TOK_VISIBLE),
+ BE(f_VoltageMap, EDIF_TOK_VOLTAGEMAP),
+ BE(f_WaveValue, EDIF_TOK_WAVEVALUE),
+ BE(f_Weak, EDIF_TOK_WEAK),
+ BE(f_WeakJoined, EDIF_TOK_WEAKJOINED),
+ BE(f_When, EDIF_TOK_WHEN),
+ BE(f_Written, EDIF_TOK_WRITTEN)
+};
+static int BinderDefSize = sizeof(BinderDef) / sizeof(Binder);
+/*
+ * Keyword table:
+ *
+ * This hash table holds all strings which may have to be matched
+ * to. WARNING: it is assumed that there is no overlap of the 'token'
+ * and 'context' strings.
+ */
+typedef struct Keyword {
+ struct Keyword *Next; /* pointer to next entry */
+ char *String; /* pointer to associated string */
+} Keyword;
+#define KEYWORD_HASH 127 /* hash table size */
+static Keyword *KeywordTable[KEYWORD_HASH];
+/*
+ * Enter keyword:
+ *
+ * The passed string is entered into the keyword hash table.
+ */
+static void EnterKeyword(char * str)
+{
+ /*
+ * Locals.
+ */
+ register Keyword *key;
+ register unsigned int hsh;
+ register char *cp;
+ /*
+ * Create the hash code, and add an entry to the table.
+ */
+ for (hsh = 0, cp = str; *cp; hsh += hsh + *cp++);
+ hsh %= KEYWORD_HASH;
+ key = (Keyword *) Malloc(sizeof(Keyword));
+ key->Next = KeywordTable[hsh];
+ (KeywordTable[hsh] = key)->String = str;
+}
+/*
+ * Find keyword:
+ *
+ * The passed string is located within the keyword table. If an
+ * entry exists, then the value of the keyword string is returned. This
+ * is real useful for doing string comparisons by pointer value later.
+ * If there is no match, a NULL is returned.
+ */
+static char *FindKeyword(char * str)
+{
+ /*
+ * Locals.
+ */
+ register Keyword *wlk,*owk;
+ register unsigned int hsh;
+ register char *cp;
+ char lower[IDENT_LENGTH + 1];
+ /*
+ * Create a lower case copy of the string.
+ */
+ for (cp = lower; *str;)
+ if (isupper( (int) *str))
+ *cp++ = tolower( (int) *str++);
+ else
+ *cp++ = *str++;
+ *cp = '\0';
+ /*
+ * Search the hash table for a match.
+ */
+ for (hsh = 0, cp = lower; *cp; hsh += hsh + *cp++);
+ hsh %= KEYWORD_HASH;
+ for (owk = NULL, wlk = KeywordTable[hsh]; wlk; wlk = (owk = wlk)->Next)
+ if (!strcmp(wlk->String,lower)){
+ /*
+ * Readjust the LRU.
+ */
+ if (owk){
+ owk->Next = wlk->Next;
+ wlk->Next = KeywordTable[hsh];
+ KeywordTable[hsh] = wlk;
+ }
+ return (wlk->String);
+ }
+ return (NULL);
+}
+/*
+ * Token hash table.
+ */
+#define TOKEN_HASH 51
+static Token *TokenHash[TOKEN_HASH];
+/*
+ * Find token:
+ *
+ * A pointer to the token of the passed code is returned. If
+ * no such beastie is present a NULL is returned instead.
+ */
+static Token *FindToken(register int cod)
+{
+ /*
+ * Locals.
+ */
+ register Token *wlk,*owk;
+ register unsigned int hsh;
+ /*
+ * Search the hash table for a matching token.
+ */
+ hsh = cod % TOKEN_HASH;
+ for (owk = NULL, wlk = TokenHash[hsh]; wlk; wlk = (owk = wlk)->Next)
+ if (cod == wlk->Code){
+ if (owk){
+ owk->Next = wlk->Next;
+ wlk->Next = TokenHash[hsh];
+ TokenHash[hsh] = wlk;
+ }
+ break;
+ }
+ return (wlk);
+}
+/*
+ * Context hash table.
+ */
+#define CONTEXT_HASH 127
+static Context *ContextHash[CONTEXT_HASH];
+/*
+ * Find context:
+ *
+ * A pointer to the context of the passed code is returned. If
+ * no such beastie is present a NULL is returned instead.
+ */
+static Context *FindContext(register int cod)
+{
+ /*
+ * Locals.
+ */
+ register Context *wlk,*owk;
+ register unsigned int hsh;
+ /*
+ * Search the hash table for a matching context.
+ */
+ hsh = cod % CONTEXT_HASH;
+ for (owk = NULL, wlk = ContextHash[hsh]; wlk; wlk = (owk = wlk)->Next)
+ if (cod == wlk->Code){
+ if (owk){
+ owk->Next = wlk->Next;
+ wlk->Next = ContextHash[hsh];
+ ContextHash[hsh] = wlk;
+ }
+ break;
+ }
+ return (wlk);
+}
+/*
+ * Token stacking variables.
+ */
+#ifdef DEBUG
+#define TS_DEPTH 8
+#define TS_MASK (TS_DEPTH - 1)
+static unsigned int TSP = 0; /* token stack pointer */
+static char *TokenStack[TS_DEPTH]; /* token name strings */
+static short TokenType[TS_DEPTH]; /* token types */
+/*
+ * Stack:
+ *
+ * Add a token to the debug stack. The passed string and type are
+ * what is to be pushed.
+ */
+static Stack(char * str, int typ)
+{
+ /*
+ * Free any previous string, then push.
+ */
+ if (TokenStack[TSP & TS_MASK])
+ Free(TokenStack[TSP & TS_MASK]);
+ TokenStack[TSP & TS_MASK] = strcpy((char *)Malloc(strlen(str) + 1),str);
+ TokenType[TSP & TS_MASK] = typ;
+ TSP += 1;
+}
+/*
+ * Dump stack:
+ *
+ * This displays the last set of accumulated tokens.
+ */
+static DumpStack()
+{
+ /*
+ * Locals.
+ */
+ register int i;
+ register Context *cxt;
+ register Token *tok;
+ register char *nam;
+ /*
+ * Run through the list displaying the oldest first.
+ */
+ fprintf(Error,"\n\n");
+ for (i = 0; i < TS_DEPTH; i += 1)
+ if (TokenStack[(TSP + i) & TS_MASK]){
+ /*
+ * Get the type name string.
+ */
+ if (cxt = FindContext(TokenType[(TSP + i) & TS_MASK]))
+ nam = cxt->Name;
+ else if (tok = FindToken(TokenType[(TSP + i) & TS_MASK]))
+ nam = tok->Name;
+ else switch (TokenType[(TSP + i) & TS_MASK]){
+ case IDENT: nam = "IDENT"; break;
+ case INT: nam = "INT"; break;
+ case KEYWORD: nam = "KEYWORD"; break;
+ case STR: nam = "STR"; break;
+ default: nam = "?"; break;
+ }
+ /*
+ * Now print the token state.
+ */
+ fprintf(Error,"%2d %-16.16s '%s'\n",TS_DEPTH - i,nam,
+ TokenStack[(TSP + i) & TS_MASK]);
+ }
+ fprintf(Error,"\n");
+}
+#else
+#define Stack(s,t)
+#endif /* DEBUG */
+/*
+ * Parser state variables.
+ */
+static FILE *Input = NULL; /* input stream */
+static FILE *Error = NULL; /* error stream */
+static char *InFile; /* file name on the input stream */
+static long LineNumber; /* current input line number */
+static ContextCar *CSP = NULL; /* top of context stack */
+static char yytext[IDENT_LENGTH + 1]; /* token buffer */
+static char CharBuf[IDENT_LENGTH + 1]; /* garbage buffer */
+/*
+ * yyerror:
+ *
+ * Standard error reporter, it prints out the passed string
+ * preceeded by the current filename and line number.
+ */
+static void yyerror(const char *ers)
+{
+#ifdef DEBUG
+ DumpStack();
+#endif /* DEBUG */
+ fprintf(Error,"%s, line %ld: %s\n",InFile,LineNumber,ers);
+}
+/*
+ * String bucket definitions.
+ */
+#define BUCKET_SIZE 64
+typedef struct Bucket {
+ struct Bucket *Next; /* pointer to next bucket */
+ int Index; /* pointer to next free slot */
+ char Data[BUCKET_SIZE]; /* string data */
+} Bucket;
+static Bucket *CurrentBucket = NULL; /* string bucket list */
+static int StringSize = 0; /* current string length */
+/*
+ * Push string:
+ *
+ * This adds the passed charater to the current string bucket.
+ */
+static void PushString(char chr)
+{
+ /*
+ * Locals.
+ */
+ register Bucket *bck;
+ /*
+ * Make sure there is room for the push.
+ */
+ if ((bck = CurrentBucket)->Index >= BUCKET_SIZE){
+ bck = (Bucket *) Malloc(sizeof(Bucket));
+ bck->Next = CurrentBucket;
+ (CurrentBucket = bck)->Index = 0;
+ }
+ /*
+ * Push the character.
+ */
+ bck->Data[bck->Index++] = chr;
+ StringSize += 1;
+}
+/*
+ * Form string:
+ *
+ * This converts the current string bucket into a real live string,
+ * whose pointer is returned.
+ */
+static char *FormString()
+{
+ /*
+ * Locals.
+ */
+ register Bucket *bck;
+ register char *cp;
+ /*
+ * Allocate space for the string, set the pointer at the end.
+ */
+ cp = (char *) Malloc(StringSize + 1);
+
+ cp += StringSize;
+ *cp-- = '\0';
+ /*
+ * Yank characters out of the bucket.
+ */
+ for (bck = CurrentBucket; bck->Index || bck->Next;){
+ if (!bck->Index){
+ CurrentBucket = bck->Next;
+ Free(bck);
+ bck = CurrentBucket;
+ }
+ *cp-- = bck->Data[--bck->Index];
+ }
+ /* reset buffer size to zero */
+ StringSize =0;
+ return (cp + 1);
+}
+/*
+ * Parse EDIF:
+ *
+ * This builds the context tree and then calls the real parser.
+ * It is passed two file streams, the first is where the input comes
+ * from; the second is where error messages get printed.
+ */
+void ParseEDIF(char* filename,FILE* err)
+{
+ /*
+ * Locals.
+ */
+ register int i;
+ static int ContextDefined = 1;
+ /*
+ * Set up the file state to something useful.
+ */
+ InFile = filename;
+ Input = fopen(filename,"r");
+ Error = err;
+ LineNumber = 1;
+ /*
+ * Define both the enabled token and context strings.
+ */
+ if (ContextDefined){
+ for (i = TokenDefSize; i--; EnterKeyword(TokenDef[i].Name)){
+ register unsigned int hsh;
+ hsh = TokenDef[i].Code % TOKEN_HASH;
+ TokenDef[i].Next = TokenHash[hsh];
+ TokenHash[hsh] = &TokenDef[i];
+ }
+ for (i = ContextDefSize; i--; EnterKeyword(ContextDef[i].Name)){
+ register unsigned int hsh;
+ hsh = ContextDef[i].Code % CONTEXT_HASH;
+ ContextDef[i].Next = ContextHash[hsh];
+ ContextHash[hsh] = &ContextDef[i];
+ }
+ /*
+ * Build the context tree.
+ */
+ for (i = BinderDefSize; i--;){
+ register Context *cxt;
+ register int j;
+ /*
+ * Define the current context to have carriers bound to it.
+ */
+ cxt = FindContext(BinderDef[i].Origin);
+ for (j = BinderDef[i].FollowerSize; j--;){
+ register ContextCar *cc;
+ /*
+ * Add carriers to the current context.
+ */
+ cc = (ContextCar *) Malloc(sizeof(ContextCar));
+ cc->Next = cxt->Context;
+ (cxt->Context = cc)->Context =
+ FindContext(ABS(BinderDef[i].Follower[j]));
+ cc->u.Single = BinderDef[i].Follower[j] < 0;
+ }
+ }
+ /*
+ * Build the token tree.
+ */
+ for (i = TieDefSize; i--;){
+ register Context *cxt;
+ register int j;
+ /*
+ * Define the current context to have carriers bound to it.
+ */
+ cxt = FindContext(TieDef[i].Origin);
+ for (j = TieDef[i].EnableSize; j--;){
+ register TokenCar *tc;
+ /*
+ * Add carriers to the current context.
+ */
+ tc = (TokenCar *) Malloc(sizeof(TokenCar));
+ tc->Next = cxt->Token;
+ (cxt->Token = tc)->Token = FindToken(TieDef[i].Enable[j]);
+ }
+ }
+ /*
+ * Put a bogus context on the stack which has 'EDIF' as its
+ * follower.
+ */
+ CSP = (ContextCar *) Malloc(sizeof(ContextCar));
+ CSP->Next = NULL;
+ CSP->Context = FindContext(0);
+ CSP->u.Used = NULL;
+ ContextDefined = 0;
+ }
+ /*
+ * Create an initial, empty string bucket.
+ */
+ CurrentBucket = (Bucket *) Malloc(sizeof(Bucket));
+ CurrentBucket->Next = 0;
+ CurrentBucket->Index = 0;
+ /*
+ * Fill the token stack with NULLs if debugging is enabled.
+ */
+#ifdef DEBUG
+ for (i = TS_DEPTH; i--; TokenStack[i] = NULL)
+ if (TokenStack[i])
+ Free(TokenStack[i]);
+ TSP = 0;
+#endif /* DEBUG */
+ /*
+ * Go parse things!
+ */
+ edifparse();
+}
+/*
+ * Match token:
+ *
+ * The passed string is looked up in the current context's token
+ * list to see if it is enabled. If so the token value is returned,
+ * if not then zero.
+ */
+static int MatchToken(register char * str)
+{
+ /*
+ * Locals.
+ */
+ register TokenCar *wlk,*owk;
+ /*
+ * Convert the string to the proper form, then search the token
+ * carrier list for a match.
+ */
+ str = FindKeyword(str);
+ for (owk = NULL, wlk = CSP->Context->Token; wlk; wlk = (owk = wlk)->Next)
+ if (str == wlk->Token->Name){
+ if (owk){
+ owk->Next = wlk->Next;
+ wlk->Next = CSP->Context->Token;
+ CSP->Context->Token = wlk;
+ }
+ return (wlk->Token->Code);
+ }
+ return (0);
+}
+/*
+ * Match context:
+ *
+ * If the passed keyword string is within the current context, the
+ * new context is pushed and token value is returned. A zero otherwise.
+ */
+static int MatchContext(register char * str)
+{
+ /*
+ * Locals.
+ */
+ register ContextCar *wlk,*owk;
+ /*
+ * See if the context is present.
+ */
+ str = FindKeyword(str);
+ for (owk = NULL, wlk = CSP->Context->Context; wlk; wlk = (owk = wlk)->Next)
+ if (str == wlk->Context->Name){
+ if (owk){
+ owk->Next = wlk->Next;
+ wlk->Next = CSP->Context->Context;
+ CSP->Context->Context = wlk;
+ }
+ /*
+ * If a single context, make sure it isn't already used.
+ */
+ if (wlk->u.Single){
+ register UsedCar *usc;
+ for (usc = CSP->u.Used; usc; usc = usc->Next)
+ if (usc->Code == wlk->Context->Code)
+ break;
+ if (usc){
+ sprintf(CharBuf,"'%s' is used more than once within '%s'",
+ str,CSP->Context->Name);
+ yyerror(CharBuf);
+ } else {
+ usc = (UsedCar *) Malloc(sizeof(UsedCar));
+ usc->Next = CSP->u.Used;
+ (CSP->u.Used = usc)->Code = wlk->Context->Code;
+ }
+ }
+ /*
+ * Push the new context.
+ */
+ owk = (ContextCar *) Malloc(sizeof(ContextCar));
+ owk->Next = CSP;
+ (CSP = owk)->Context = wlk->Context;
+ owk->u.Used = NULL;
+ return (wlk->Context->Code);
+ }
+ return (0);
+}
+/*
+ * PopC:
+ *
+ * This pops the current context.
+ */
+static void PopC()
+{
+ /*
+ * Locals.
+ */
+ register UsedCar *usc;
+ register ContextCar *csp;
+ /*
+ * Release single markers and pop context.
+ */
+ while ( (usc = CSP->u.Used) ){
+ CSP->u.Used = usc->Next;
+ Free(usc);
+ }
+ csp = CSP->Next;
+ Free(CSP);
+ CSP = csp;
+}
+/*
+ * Lexical analyzer states.
+ */
+#define L_START 0
+#define L_INT 1
+#define L_IDENT 2
+#define L_KEYWORD 3
+#define L_STRING 4
+#define L_KEYWORD2 5
+#define L_ASCIICHAR 6
+#define L_ASCIICHAR2 7
+/*
+ * yylex:
+ *
+ * This is the lexical analyzer called by the YACC/BISON parser.
+ * It returns a pretty restricted set of token types and does the
+ * context movement when acceptable keywords are found. The token
+ * value returned is a NULL terminated string to allocated storage
+ * (ie - it should get released some time) with some restrictions.
+ * The token value for integers is strips a leading '+' if present.
+ * String token values have the leading and trailing '"'-s stripped.
+ * '%' conversion characters in string values are passed converted.
+ * The '(' and ')' characters do not have a token value.
+ */
+static int yylex()
+{
+ /*
+ * Locals.
+ */
+ register int c,s,l;
+ /*
+ * Keep on sucking up characters until we find something which
+ * explicitly forces us out of this function.
+ */
+ for (s = L_START, l = 0; 1;){
+ yytext[l++] = c = Getc(Input);
+ switch (s){
+ /*
+ * Starting state, look for something resembling a token.
+ */
+ case L_START:
+ if (isdigit(c) || c == '-')
+ s = L_INT;
+ else if (isalpha(c) || c == '&')
+ s = L_IDENT;
+ else if (isspace(c)){
+ if (c == '\n')
+ LineNumber += 1;
+ l = 0;
+ } else if (c == '('){
+ l = 0;
+ s = L_KEYWORD;
+ } else if (c == '"')
+ s = L_STRING;
+ else if (c == '+'){
+ l = 0; /* strip '+' */
+ s = L_INT;
+ } else if (c == EOF)
+ return ('\0');
+ else {
+ yytext[1] = '\0';
+ Stack(yytext,c);
+ return (c);
+ }
+ break;
+ /*
+ * Suck up the integer digits.
+ */
+ case L_INT:
+ if (isdigit(c))
+ break;
+ Ungetc(c);
+ yytext[--l] = '\0';
+ yylval.s = strcpy((char *)Malloc(l + 1),yytext);
+ Stack(yytext,EDIF_TOK_INT);
+ return (EDIF_TOK_INT);
+ /*
+ * Grab an identifier, see if the current context enables
+ * it with a specific token value.
+ */
+ case L_IDENT:
+ if (isalpha(c) || isdigit(c) || c == '_')
+ break;
+ Ungetc(c);
+ yytext[--l] = '\0';
+ if (CSP->Context->Token && (c = MatchToken(yytext))){
+ Stack(yytext,c);
+ return (c);
+ }
+ yylval.s = strcpy((char *)Malloc(l + 1),yytext);
+ Stack(yytext, EDIF_TOK_IDENT);
+ return (EDIF_TOK_IDENT);
+ /*
+ * Scan until you find the start of an identifier, discard
+ * any whitespace found. On no identifier, return a '('.
+ */
+ case L_KEYWORD:
+ if (isalpha(c) || c == '&'){
+ s = L_KEYWORD2;
+ break;
+ } else if (isspace(c)){
+ l = 0;
+ break;
+ }
+ Ungetc(c);
+ Stack("(",'(');
+ return ('(');
+ /*
+ * Suck up the keyword identifier, if it matches the set of
+ * allowable contexts then return its token value and push
+ * the context, otherwise just return the identifier string.
+ */
+ case L_KEYWORD2:
+ if (isalpha(c) || isdigit(c) || c == '_')
+ break;
+ Ungetc(c);
+ yytext[--l] = '\0';
+ if ( (c = MatchContext(yytext)) ){
+ Stack(yytext,c);
+ return (c);
+ }
+ yylval.s = strcpy((char *)Malloc(l + 1),yytext);
+ Stack(yytext, EDIF_TOK_KEYWORD);
+ return (EDIF_TOK_KEYWORD);
+ /*
+ * Suck up string characters but once resolved they should
+ * be deposited in the string bucket because they can be
+ * arbitrarily long.
+ */
+ case L_STRING:
+ if (c == '\n')
+ LineNumber += 1;
+ else if (c == '\r')
+ ;
+ else if (c == '"' || c == EOF){
+ yylval.s = FormString();
+ Stack(yylval.s, EDIF_TOK_STR);
+ return (EDIF_TOK_STR);
+ } else if (c == '%')
+ s = L_ASCIICHAR;
+ else
+ PushString(c);
+ l = 0;
+ break;
+ /*
+ * Skip white space and look for integers to be pushed
+ * as characters.
+ */
+ case L_ASCIICHAR:
+ if (isdigit(c)){
+ s = L_ASCIICHAR2;
+ break;
+ } else if (c == '%' || c == EOF)
+ s = L_STRING;
+ else if (c == '\n')
+ LineNumber += 1;
+ l = 0;
+ break;
+ /*
+ * Convert the accumulated integer into a char and push.
+ */
+ case L_ASCIICHAR2:
+ if (isdigit(c))
+ break;
+ Ungetc(c);
+ yytext[--l] = '\0';
+ PushString(atoi(yytext));
+ s = L_ASCIICHAR;
+ l = 0;
+ break;
+ }
+ }
+}
+
+int ReadEdifNetlist(char *filename)
+{
+ Message(_("Importing edif netlist %s\n"), filename);
+ ParseEDIF(filename, NULL);
+
+ return 0;
+}
+
+#include "stub_edif.h"
+void hid_edif_init(void)
+{
+ stub_ReadEdifNetlist = ReadEdifNetlist;
+}