pcb 4.1.1
An interactive printed circuit board layout editor.

edif.c

Go to the documentation of this file.
00001 
00002 /* A Bison parser, made by GNU Bison 2.4.1.  */
00003 
00004 /* Skeleton implementation for Bison's Yacc-like parsers in C
00005    
00006       Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
00007    Free Software Foundation, Inc.
00008    
00009    This program is free software: you can redistribute it and/or modify
00010    it under the terms of the GNU General Public License as published by
00011    the Free Software Foundation, either version 3 of the License, or
00012    (at your option) any later version.
00013    
00014    This program is distributed in the hope that it will be useful,
00015    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017    GNU General Public License for more details.
00018    
00019    You should have received a copy of the GNU General Public License
00020    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
00021 
00022 /* As a special exception, you may create a larger work that contains
00023    part or all of the Bison parser skeleton and distribute that work
00024    under terms of your choice, so long as that work isn't itself a
00025    parser generator using the skeleton or a modified version thereof
00026    as a parser skeleton.  Alternatively, if you modify or redistribute
00027    the parser skeleton itself, you may (at your option) remove this
00028    special exception, which will cause the skeleton and the resulting
00029    Bison output files to be licensed under the GNU General Public
00030    License without this special exception.
00031    
00032    This special exception was added by the Free Software Foundation in
00033    version 2.2 of Bison.  */
00034 
00035 /* C LALR(1) parser skeleton written by Richard Stallman, by
00036    simplifying the original so-called "semantic" parser.  */
00037 
00038 /* All symbols defined below should begin with yy or YY, to avoid
00039    infringing on user name space.  This should be done even for local
00040    variables, as they might otherwise be expanded by user macros.
00041    There are some unavoidable exceptions within include files to
00042    define necessary library symbols; they are noted "INFRINGES ON
00043    USER NAME SPACE" below.  */
00044 
00045 /* Identify Bison output.  */
00046 #define YYBISON 1
00047 
00048 /* Bison version.  */
00049 #define YYBISON_VERSION "2.4.1"
00050 
00051 /* Skeleton name.  */
00052 #define YYSKELETON_NAME "yacc.c"
00053 
00054 /* Pure parsers.  */
00055 #define YYPURE 0
00056 
00057 /* Push parsers.  */
00058 #define YYPUSH 0
00059 
00060 /* Pull parsers.  */
00061 #define YYPULL 1
00062 
00063 /* Using locations.  */
00064 #define YYLSP_NEEDED 0
00065 
00066 /* Substitute the variable and function names.  */
00067 #define yyparse         edifparse
00068 #define yylex           ediflex
00069 #define yyerror         ediferror
00070 #define yylval          ediflval
00071 #define yychar          edifchar
00072 #define yydebug         edifdebug
00073 #define yynerrs         edifnerrs
00074 
00075 
00076 /* Copy the first part of user declarations.  */
00077 
00078 /* Line 189 of yacc.c  */
00079 #line 1 "edif.y"
00080 
00081 /* 
00082  * PCB Edif parser based heavily on:
00083  *
00084  *      Header: edif.y,v 1.18 87/12/07 19:59:49 roger Locked 
00085  */
00086 /************************************************************************
00087  *                                                                      *
00088  *                              edif.y                                  *
00089  *                                                                      *
00090  *                      EDIF 2.0.0 parser, Level 0                      *
00091  *                                                                      *
00092  *      You are free to copy, distribute, use it, abuse it, make it     *
00093  *      write bad tracks all over the disk ... or anything else.        *
00094  *                                                                      *
00095  *      Your friendly neighborhood Rogue Monster - roger@mips.com       *
00096  *                                                                      *
00097  ************************************************************************/
00098 #include <stdio.h>
00099 
00100 /* for malloc, free, atoi */
00101 #include <stdlib.h>
00102 
00103 /* for strcpy */
00104 #include <string.h>
00105 
00106 #include <ctype.h>
00107 
00108 #include "global.h"
00109 #include "data.h"
00110 /* from mymem.h, not include because of the malloc junk */
00111 LibraryMenuType * GetLibraryMenuMemory (LibraryType *);
00112 LibraryEntryType * GetLibraryEntryMemory (LibraryMenuType *);
00113 
00114 /*
00115  *      Local definitions.
00116  */
00117 #define IDENT_LENGTH            255
00118 #define Malloc(s)               malloc(s)
00119 #define Free(p)                 free(p)
00120 #define Getc(s)                 getc(s)
00121 #define Ungetc(c)               ungetc(c,Input)
00122 
00123  typedef struct _str_pair
00124  {
00125      char* str1;
00126      char* str2;
00127      struct _str_pair* next;
00128  } str_pair;
00129 
00130  typedef struct _pair_list
00131  {
00132      char* name;
00133      str_pair* list;
00134  } pair_list;
00135 
00136  str_pair* new_str_pair(char* s1, char* s2)
00137  {
00138    str_pair* ps = (str_pair *)malloc(sizeof(str_pair));
00139      ps->str1 = s1;
00140      ps->str2 = s2;
00141      ps->next = NULL;
00142      return ps;
00143  }
00144  
00145  pair_list* new_pair_list(str_pair* ps)
00146  {
00147    pair_list* pl = (pair_list *)malloc(sizeof(pair_list));
00148      pl->list = ps;
00149      pl->name = NULL;
00150      return pl;
00151  }
00152 
00153  void str_pair_free(str_pair* ps)
00154  {
00155      str_pair* node;
00156      while ( ps )
00157      {
00158          free(ps->str1);
00159          free(ps->str2);
00160          node = ps;
00161          ps = ps->next;
00162          free(node);
00163      }
00164  }
00165   
00166  void pair_list_free(pair_list* pl)
00167  {
00168      str_pair_free(pl->list);
00169      free(pl->name);
00170      free(pl);
00171  }
00172 
00173  void define_pcb_net(str_pair* name, pair_list* nodes)
00174  {
00175      int tl;
00176      str_pair* done_node;
00177      str_pair* node;
00178      char* buf;
00179      char* p;
00180      LibraryEntryType *entry;
00181      LibraryMenuType *menu = GetLibraryMenuMemory (&PCB->NetlistLib);
00182 
00183      if ( !name->str1 )
00184      {
00185          /* no net name given, stop now */
00186          /* if renamed str2 also exists and must be freed */
00187          if ( name->str2 )  free(name->str2);
00188          free(name);
00189          pair_list_free(nodes);
00190          return;
00191      }
00192      menu->Name = strdup (name->str1);
00193      free(name->str1);
00194      /* if renamed str2 also exists and must be freed */
00195      if ( name->str2 )  free(name->str2);
00196      free(name);
00197      buf = (char *)malloc(256);
00198      if ( !buf )
00199      {
00200          /* no memory */
00201          pair_list_free(nodes);
00202          return;
00203      }
00204 
00205      node = nodes->list;
00206      free(nodes->name);
00207      free(nodes);
00208      while ( node )
00209      {
00210          /* check for node with no instance */
00211          if ( !node->str1 )
00212          {
00213              /* toss it and move on */
00214              free(node->str2);
00215              done_node = node;
00216              node = node->next;
00217              free(done_node);
00218              continue;
00219          }
00220          tl = strlen(node->str1) + strlen(node->str2);
00221          if ( tl + 3 > 256 )
00222          {
00223              free(buf);
00224              buf = (char *)malloc(tl+3);
00225              if ( !buf )
00226              {
00227                  /* no memory */
00228                  str_pair_free(node);
00229                  return;
00230              }
00231          }
00232          strcpy(buf,node->str1);
00233          /* make all upper case, because of PCB funky behaviour */
00234          p=buf;
00235          while ( *p ) 
00236          {
00237              *p = toupper( (int) *p);
00238              p++;
00239          }
00240          /* add dash separating designator from node */
00241          *(buf+strlen(node->str1)) = '-';
00242          /* check for the edif number prefix */
00243          if ( node->str2[0] == '&' )
00244          {
00245              /* skip number prefix */
00246              strcpy(buf+strlen(node->str1)+1,node->str2 +1);
00247          }
00248          else
00249          {
00250              strcpy(buf+strlen(node->str1)+1,node->str2);
00251          }
00252          /* free the strings */
00253          free(node->str1);
00254          free(node->str2);
00255          entry = GetLibraryEntryMemory (menu);
00256          entry->ListEntry = strdup(buf);
00257          done_node = node;
00258          node = node->next;
00259          free(done_node);
00260      }
00261  }
00262  
00263  
00264 /* forward function declarations */
00265  static int yylex(void);
00266  static void yyerror(const char *);
00267  static void PopC(void);
00268 
00269 
00270 /* Line 189 of yacc.c  */
00271 #line 272 "edif.c"
00272 
00273 /* Enabling traces.  */
00274 #ifndef YYDEBUG
00275 # define YYDEBUG 0
00276 #endif
00277 
00278 /* Enabling verbose error messages.  */
00279 #ifdef YYERROR_VERBOSE
00280 # undef YYERROR_VERBOSE
00281 # define YYERROR_VERBOSE 1
00282 #else
00283 # define YYERROR_VERBOSE 0
00284 #endif
00285 
00286 /* Enabling the token table.  */
00287 #ifndef YYTOKEN_TABLE
00288 # define YYTOKEN_TABLE 0
00289 #endif
00290 
00291 
00292 /* Tokens.  */
00293 #ifndef YYTOKENTYPE
00294 # define YYTOKENTYPE
00295    /* Put the tokens into the symbol table, so that GDB and other debuggers
00296       know about them.  */
00297    enum yytokentype {
00298      EDIF_TOK_IDENT = 258,
00299      EDIF_TOK_INT = 259,
00300      EDIF_TOK_KEYWORD = 260,
00301      EDIF_TOK_STR = 261,
00302      EDIF_TOK_ANGLE = 262,
00303      EDIF_TOK_BEHAVIOR = 263,
00304      EDIF_TOK_CALCULATED = 264,
00305      EDIF_TOK_CAPACITANCE = 265,
00306      EDIF_TOK_CENTERCENTER = 266,
00307      EDIF_TOK_CENTERLEFT = 267,
00308      EDIF_TOK_CENTERRIGHT = 268,
00309      EDIF_TOK_CHARGE = 269,
00310      EDIF_TOK_CONDUCTANCE = 270,
00311      EDIF_TOK_CURRENT = 271,
00312      EDIF_TOK_DISTANCE = 272,
00313      EDIF_TOK_DOCUMENT = 273,
00314      EDIF_TOK_ENERGY = 274,
00315      EDIF_TOK_EXTEND = 275,
00316      EDIF_TOK_FLUX = 276,
00317      EDIF_TOK_FREQUENCY = 277,
00318      EDIF_TOK_GENERIC = 278,
00319      EDIF_TOK_GRAPHIC = 279,
00320      EDIF_TOK_INDUCTANCE = 280,
00321      EDIF_TOK_INOUT = 281,
00322      EDIF_TOK_INPUT = 282,
00323      EDIF_TOK_LOGICMODEL = 283,
00324      EDIF_TOK_LOWERCENTER = 284,
00325      EDIF_TOK_LOWERLEFT = 285,
00326      EDIF_TOK_LOWERRIGHT = 286,
00327      EDIF_TOK_MASKLAYOUT = 287,
00328      EDIF_TOK_MASS = 288,
00329      EDIF_TOK_MEASURED = 289,
00330      EDIF_TOK_MX = 290,
00331      EDIF_TOK_MXR90 = 291,
00332      EDIF_TOK_MY = 292,
00333      EDIF_TOK_MYR90 = 293,
00334      EDIF_TOK_NETLIST = 294,
00335      EDIF_TOK_OUTPUT = 295,
00336      EDIF_TOK_PCBLAYOUT = 296,
00337      EDIF_TOK_POWER = 297,
00338      EDIF_TOK_R0 = 298,
00339      EDIF_TOK_R180 = 299,
00340      EDIF_TOK_R270 = 300,
00341      EDIF_TOK_R90 = 301,
00342      EDIF_TOK_REQUIRED = 302,
00343      EDIF_TOK_RESISTANCE = 303,
00344      EDIF_TOK_RIPPER = 304,
00345      EDIF_TOK_ROUND = 305,
00346      EDIF_TOK_SCHEMATIC = 306,
00347      EDIF_TOK_STRANGER = 307,
00348      EDIF_TOK_SYMBOLIC = 308,
00349      EDIF_TOK_TEMPERATURE = 309,
00350      EDIF_TOK_TIE = 310,
00351      EDIF_TOK_TIME = 311,
00352      EDIF_TOK_TRUNCATE = 312,
00353      EDIF_TOK_UPPERCENTER = 313,
00354      EDIF_TOK_UPPERLEFT = 314,
00355      EDIF_TOK_UPPERRIGHT = 315,
00356      EDIF_TOK_VOLTAGE = 316,
00357      EDIF_TOK_ACLOAD = 317,
00358      EDIF_TOK_AFTER = 318,
00359      EDIF_TOK_ANNOTATE = 319,
00360      EDIF_TOK_APPLY = 320,
00361      EDIF_TOK_ARC = 321,
00362      EDIF_TOK_ARRAY = 322,
00363      EDIF_TOK_ARRAYMACRO = 323,
00364      EDIF_TOK_ARRAYRELATEDINFO = 324,
00365      EDIF_TOK_ARRAYSITE = 325,
00366      EDIF_TOK_ATLEAST = 326,
00367      EDIF_TOK_ATMOST = 327,
00368      EDIF_TOK_AUTHOR = 328,
00369      EDIF_TOK_BASEARRAY = 329,
00370      EDIF_TOK_BECOMES = 330,
00371      EDIF_TOK_BETWEEN = 331,
00372      EDIF_TOK_BOOLEAN = 332,
00373      EDIF_TOK_BOOLEANDISPLAY = 333,
00374      EDIF_TOK_BOOLEANMAP = 334,
00375      EDIF_TOK_BORDERPATTERN = 335,
00376      EDIF_TOK_BORDERWIDTH = 336,
00377      EDIF_TOK_BOUNDINGBOX = 337,
00378      EDIF_TOK_CELL = 338,
00379      EDIF_TOK_CELLREF = 339,
00380      EDIF_TOK_CELLTYPE = 340,
00381      EDIF_TOK_CHANGE = 341,
00382      EDIF_TOK_CIRCLE = 342,
00383      EDIF_TOK_COLOR = 343,
00384      EDIF_TOK_COMMENT = 344,
00385      EDIF_TOK_COMMENTGRAPHICS = 345,
00386      EDIF_TOK_COMPOUND = 346,
00387      EDIF_TOK_CONNECTLOCATION = 347,
00388      EDIF_TOK_CONTENTS = 348,
00389      EDIF_TOK_CORNERTYPE = 349,
00390      EDIF_TOK_CRITICALITY = 350,
00391      EDIF_TOK_CURRENTMAP = 351,
00392      EDIF_TOK_CURVE = 352,
00393      EDIF_TOK_CYCLE = 353,
00394      EDIF_TOK_DATAORIGIN = 354,
00395      EDIF_TOK_DCFANINLOAD = 355,
00396      EDIF_TOK_DCFANOUTLOAD = 356,
00397      EDIF_TOK_DCMAXFANIN = 357,
00398      EDIF_TOK_DCMAXFANOUT = 358,
00399      EDIF_TOK_DELAY = 359,
00400      EDIF_TOK_DELTA = 360,
00401      EDIF_TOK_DERIVATION = 361,
00402      EDIF_TOK_DESIGN = 362,
00403      EDIF_TOK_DESIGNATOR = 363,
00404      EDIF_TOK_DIFFERENCE = 364,
00405      EDIF_TOK_DIRECTION = 365,
00406      EDIF_TOK_DISPLAY = 366,
00407      EDIF_TOK_DOMINATES = 367,
00408      EDIF_TOK_DOT = 368,
00409      EDIF_TOK_DURATION = 369,
00410      EDIF_TOK_E = 370,
00411      EDIF_TOK_EDIF = 371,
00412      EDIF_TOK_EDIFLEVEL = 372,
00413      EDIF_TOK_EDIFVERSION = 373,
00414      EDIF_TOK_ENCLOSUREDISTANCE = 374,
00415      EDIF_TOK_ENDTYPE = 375,
00416      EDIF_TOK_ENTRY = 376,
00417      EDIF_TOK_EVENT = 377,
00418      EDIF_TOK_EXACTLY = 378,
00419      EDIF_TOK_EXTERNAL = 379,
00420      EDIF_TOK_FABRICATE = 380,
00421      EDIF_TOK_FALSE = 381,
00422      EDIF_TOK_FIGURE = 382,
00423      EDIF_TOK_FIGUREAREA = 383,
00424      EDIF_TOK_FIGUREGROUP = 384,
00425      EDIF_TOK_FIGUREGROUPOBJECT = 385,
00426      EDIF_TOK_FIGUREGROUPOVERRIDE = 386,
00427      EDIF_TOK_FIGUREGROUPREF = 387,
00428      EDIF_TOK_FIGUREPERIMETER = 388,
00429      EDIF_TOK_FIGUREWIDTH = 389,
00430      EDIF_TOK_FILLPATTERN = 390,
00431      EDIF_TOK_FOLLOW = 391,
00432      EDIF_TOK_FORBIDDENEVENT = 392,
00433      EDIF_TOK_GLOBALPORTREF = 393,
00434      EDIF_TOK_GREATERTHAN = 394,
00435      EDIF_TOK_GRIDMAP = 395,
00436      EDIF_TOK_IGNORE = 396,
00437      EDIF_TOK_INCLUDEFIGUREGROUP = 397,
00438      EDIF_TOK_INITIAL = 398,
00439      EDIF_TOK_INSTANCE = 399,
00440      EDIF_TOK_INSTANCEBACKANNOTATE = 400,
00441      EDIF_TOK_INSTANCEGROUP = 401,
00442      EDIF_TOK_INSTANCEMAP = 402,
00443      EDIF_TOK_INSTANCEREF = 403,
00444      EDIF_TOK_INTEGER = 404,
00445      EDIF_TOK_INTEGERDISPLAY = 405,
00446      EDIF_TOK_INTERFACE = 406,
00447      EDIF_TOK_INTERFIGUREGROUPSPACING = 407,
00448      EDIF_TOK_INTERSECTION = 408,
00449      EDIF_TOK_INTRAFIGUREGROUPSPACING = 409,
00450      EDIF_TOK_INVERSE = 410,
00451      EDIF_TOK_ISOLATED = 411,
00452      EDIF_TOK_JOINED = 412,
00453      EDIF_TOK_JUSTIFY = 413,
00454      EDIF_TOK_KEYWORDDISPLAY = 414,
00455      EDIF_TOK_KEYWORDLEVEL = 415,
00456      EDIF_TOK_KEYWORDMAP = 416,
00457      EDIF_TOK_LESSTHAN = 417,
00458      EDIF_TOK_LIBRARY = 418,
00459      EDIF_TOK_LIBRARYREF = 419,
00460      EDIF_TOK_LISTOFNETS = 420,
00461      EDIF_TOK_LISTOFPORTS = 421,
00462      EDIF_TOK_LOADDELAY = 422,
00463      EDIF_TOK_LOGICASSIGN = 423,
00464      EDIF_TOK_LOGICINPUT = 424,
00465      EDIF_TOK_LOGICLIST = 425,
00466      EDIF_TOK_LOGICMAPINPUT = 426,
00467      EDIF_TOK_LOGICMAPOUTPUT = 427,
00468      EDIF_TOK_LOGICONEOF = 428,
00469      EDIF_TOK_LOGICOUTPUT = 429,
00470      EDIF_TOK_LOGICPORT = 430,
00471      EDIF_TOK_LOGICREF = 431,
00472      EDIF_TOK_LOGICVALUE = 432,
00473      EDIF_TOK_LOGICWAVEFORM = 433,
00474      EDIF_TOK_MAINTAIN = 434,
00475      EDIF_TOK_MATCH = 435,
00476      EDIF_TOK_MEMBER = 436,
00477      EDIF_TOK_MINOMAX = 437,
00478      EDIF_TOK_MINOMAXDISPLAY = 438,
00479      EDIF_TOK_MNM = 439,
00480      EDIF_TOK_MULTIPLEVALUESET = 440,
00481      EDIF_TOK_MUSTJOIN = 441,
00482      EDIF_TOK_NAME = 442,
00483      EDIF_TOK_NET = 443,
00484      EDIF_TOK_NETBACKANNOTATE = 444,
00485      EDIF_TOK_NETBUNDLE = 445,
00486      EDIF_TOK_NETDELAY = 446,
00487      EDIF_TOK_NETGROUP = 447,
00488      EDIF_TOK_NETMAP = 448,
00489      EDIF_TOK_NETREF = 449,
00490      EDIF_TOK_NOCHANGE = 450,
00491      EDIF_TOK_NONPERMUTABLE = 451,
00492      EDIF_TOK_NOTALLOWED = 452,
00493      EDIF_TOK_NOTCHSPACING = 453,
00494      EDIF_TOK_NUMBER = 454,
00495      EDIF_TOK_NUMBERDEFINITION = 455,
00496      EDIF_TOK_NUMBERDISPLAY = 456,
00497      EDIF_TOK_OFFPAGECONNECTOR = 457,
00498      EDIF_TOK_OFFSETEVENT = 458,
00499      EDIF_TOK_OPENSHAPE = 459,
00500      EDIF_TOK_ORIENTATION = 460,
00501      EDIF_TOK_ORIGIN = 461,
00502      EDIF_TOK_OVERHANGDISTANCE = 462,
00503      EDIF_TOK_OVERLAPDISTANCE = 463,
00504      EDIF_TOK_OVERSIZE = 464,
00505      EDIF_TOK_OWNER = 465,
00506      EDIF_TOK_PAGE = 466,
00507      EDIF_TOK_PAGESIZE = 467,
00508      EDIF_TOK_PARAMETER = 468,
00509      EDIF_TOK_PARAMETERASSIGN = 469,
00510      EDIF_TOK_PARAMETERDISPLAY = 470,
00511      EDIF_TOK_PATH = 471,
00512      EDIF_TOK_PATHDELAY = 472,
00513      EDIF_TOK_PATHWIDTH = 473,
00514      EDIF_TOK_PERMUTABLE = 474,
00515      EDIF_TOK_PHYSICALDESIGNRULE = 475,
00516      EDIF_TOK_PLUG = 476,
00517      EDIF_TOK_POINT = 477,
00518      EDIF_TOK_POINTDISPLAY = 478,
00519      EDIF_TOK_POINTLIST = 479,
00520      EDIF_TOK_POLYGON = 480,
00521      EDIF_TOK_PORT = 481,
00522      EDIF_TOK_PORTBACKANNOTATE = 482,
00523      EDIF_TOK_PORTBUNDLE = 483,
00524      EDIF_TOK_PORTDELAY = 484,
00525      EDIF_TOK_PORTGROUP = 485,
00526      EDIF_TOK_PORTIMPLEMENTATION = 486,
00527      EDIF_TOK_PORTINSTANCE = 487,
00528      EDIF_TOK_PORTLIST = 488,
00529      EDIF_TOK_PORTLISTALIAS = 489,
00530      EDIF_TOK_PORTMAP = 490,
00531      EDIF_TOK_PORTREF = 491,
00532      EDIF_TOK_PROGRAM = 492,
00533      EDIF_TOK_PROPERTY = 493,
00534      EDIF_TOK_PROPERTYDISPLAY = 494,
00535      EDIF_TOK_PROTECTIONFRAME = 495,
00536      EDIF_TOK_PT = 496,
00537      EDIF_TOK_RANGEVECTOR = 497,
00538      EDIF_TOK_RECTANGLE = 498,
00539      EDIF_TOK_RECTANGLESIZE = 499,
00540      EDIF_TOK_RENAME = 500,
00541      EDIF_TOK_RESOLVES = 501,
00542      EDIF_TOK_SCALE = 502,
00543      EDIF_TOK_SCALEX = 503,
00544      EDIF_TOK_SCALEY = 504,
00545      EDIF_TOK_SECTION = 505,
00546      EDIF_TOK_SHAPE = 506,
00547      EDIF_TOK_SIMULATE = 507,
00548      EDIF_TOK_SIMULATIONINFO = 508,
00549      EDIF_TOK_SINGLEVALUESET = 509,
00550      EDIF_TOK_SITE = 510,
00551      EDIF_TOK_SOCKET = 511,
00552      EDIF_TOK_SOCKETSET = 512,
00553      EDIF_TOK_STATUS = 513,
00554      EDIF_TOK_STEADY = 514,
00555      EDIF_TOK_STRING = 515,
00556      EDIF_TOK_STRINGDISPLAY = 516,
00557      EDIF_TOK_STRONG = 517,
00558      EDIF_TOK_SYMBOL = 518,
00559      EDIF_TOK_SYMMETRY = 519,
00560      EDIF_TOK_TABLE = 520,
00561      EDIF_TOK_TABLEDEFAULT = 521,
00562      EDIF_TOK_TECHNOLOGY = 522,
00563      EDIF_TOK_TEXTHEIGHT = 523,
00564      EDIF_TOK_TIMEINTERVAL = 524,
00565      EDIF_TOK_TIMESTAMP = 525,
00566      EDIF_TOK_TIMING = 526,
00567      EDIF_TOK_TRANSFORM = 527,
00568      EDIF_TOK_TRANSITION = 528,
00569      EDIF_TOK_TRIGGER = 529,
00570      EDIF_TOK_TRUE = 530,
00571      EDIF_TOK_UNCONSTRAINED = 531,
00572      EDIF_TOK_UNDEFINED = 532,
00573      EDIF_TOK_UNION = 533,
00574      EDIF_TOK_UNIT = 534,
00575      EDIF_TOK_UNUSED = 535,
00576      EDIF_TOK_USERDATA = 536,
00577      EDIF_TOK_VERSION = 537,
00578      EDIF_TOK_VIEW = 538,
00579      EDIF_TOK_VIEWLIST = 539,
00580      EDIF_TOK_VIEWMAP = 540,
00581      EDIF_TOK_VIEWREF = 541,
00582      EDIF_TOK_VIEWTYPE = 542,
00583      EDIF_TOK_VISIBLE = 543,
00584      EDIF_TOK_VOLTAGEMAP = 544,
00585      EDIF_TOK_WAVEVALUE = 545,
00586      EDIF_TOK_WEAK = 546,
00587      EDIF_TOK_WEAKJOINED = 547,
00588      EDIF_TOK_WHEN = 548,
00589      EDIF_TOK_WRITTEN = 549
00590    };
00591 #endif
00592 /* Tokens.  */
00593 #define EDIF_TOK_IDENT 258
00594 #define EDIF_TOK_INT 259
00595 #define EDIF_TOK_KEYWORD 260
00596 #define EDIF_TOK_STR 261
00597 #define EDIF_TOK_ANGLE 262
00598 #define EDIF_TOK_BEHAVIOR 263
00599 #define EDIF_TOK_CALCULATED 264
00600 #define EDIF_TOK_CAPACITANCE 265
00601 #define EDIF_TOK_CENTERCENTER 266
00602 #define EDIF_TOK_CENTERLEFT 267
00603 #define EDIF_TOK_CENTERRIGHT 268
00604 #define EDIF_TOK_CHARGE 269
00605 #define EDIF_TOK_CONDUCTANCE 270
00606 #define EDIF_TOK_CURRENT 271
00607 #define EDIF_TOK_DISTANCE 272
00608 #define EDIF_TOK_DOCUMENT 273
00609 #define EDIF_TOK_ENERGY 274
00610 #define EDIF_TOK_EXTEND 275
00611 #define EDIF_TOK_FLUX 276
00612 #define EDIF_TOK_FREQUENCY 277
00613 #define EDIF_TOK_GENERIC 278
00614 #define EDIF_TOK_GRAPHIC 279
00615 #define EDIF_TOK_INDUCTANCE 280
00616 #define EDIF_TOK_INOUT 281
00617 #define EDIF_TOK_INPUT 282
00618 #define EDIF_TOK_LOGICMODEL 283
00619 #define EDIF_TOK_LOWERCENTER 284
00620 #define EDIF_TOK_LOWERLEFT 285
00621 #define EDIF_TOK_LOWERRIGHT 286
00622 #define EDIF_TOK_MASKLAYOUT 287
00623 #define EDIF_TOK_MASS 288
00624 #define EDIF_TOK_MEASURED 289
00625 #define EDIF_TOK_MX 290
00626 #define EDIF_TOK_MXR90 291
00627 #define EDIF_TOK_MY 292
00628 #define EDIF_TOK_MYR90 293
00629 #define EDIF_TOK_NETLIST 294
00630 #define EDIF_TOK_OUTPUT 295
00631 #define EDIF_TOK_PCBLAYOUT 296
00632 #define EDIF_TOK_POWER 297
00633 #define EDIF_TOK_R0 298
00634 #define EDIF_TOK_R180 299
00635 #define EDIF_TOK_R270 300
00636 #define EDIF_TOK_R90 301
00637 #define EDIF_TOK_REQUIRED 302
00638 #define EDIF_TOK_RESISTANCE 303
00639 #define EDIF_TOK_RIPPER 304
00640 #define EDIF_TOK_ROUND 305
00641 #define EDIF_TOK_SCHEMATIC 306
00642 #define EDIF_TOK_STRANGER 307
00643 #define EDIF_TOK_SYMBOLIC 308
00644 #define EDIF_TOK_TEMPERATURE 309
00645 #define EDIF_TOK_TIE 310
00646 #define EDIF_TOK_TIME 311
00647 #define EDIF_TOK_TRUNCATE 312
00648 #define EDIF_TOK_UPPERCENTER 313
00649 #define EDIF_TOK_UPPERLEFT 314
00650 #define EDIF_TOK_UPPERRIGHT 315
00651 #define EDIF_TOK_VOLTAGE 316
00652 #define EDIF_TOK_ACLOAD 317
00653 #define EDIF_TOK_AFTER 318
00654 #define EDIF_TOK_ANNOTATE 319
00655 #define EDIF_TOK_APPLY 320
00656 #define EDIF_TOK_ARC 321
00657 #define EDIF_TOK_ARRAY 322
00658 #define EDIF_TOK_ARRAYMACRO 323
00659 #define EDIF_TOK_ARRAYRELATEDINFO 324
00660 #define EDIF_TOK_ARRAYSITE 325
00661 #define EDIF_TOK_ATLEAST 326
00662 #define EDIF_TOK_ATMOST 327
00663 #define EDIF_TOK_AUTHOR 328
00664 #define EDIF_TOK_BASEARRAY 329
00665 #define EDIF_TOK_BECOMES 330
00666 #define EDIF_TOK_BETWEEN 331
00667 #define EDIF_TOK_BOOLEAN 332
00668 #define EDIF_TOK_BOOLEANDISPLAY 333
00669 #define EDIF_TOK_BOOLEANMAP 334
00670 #define EDIF_TOK_BORDERPATTERN 335
00671 #define EDIF_TOK_BORDERWIDTH 336
00672 #define EDIF_TOK_BOUNDINGBOX 337
00673 #define EDIF_TOK_CELL 338
00674 #define EDIF_TOK_CELLREF 339
00675 #define EDIF_TOK_CELLTYPE 340
00676 #define EDIF_TOK_CHANGE 341
00677 #define EDIF_TOK_CIRCLE 342
00678 #define EDIF_TOK_COLOR 343
00679 #define EDIF_TOK_COMMENT 344
00680 #define EDIF_TOK_COMMENTGRAPHICS 345
00681 #define EDIF_TOK_COMPOUND 346
00682 #define EDIF_TOK_CONNECTLOCATION 347
00683 #define EDIF_TOK_CONTENTS 348
00684 #define EDIF_TOK_CORNERTYPE 349
00685 #define EDIF_TOK_CRITICALITY 350
00686 #define EDIF_TOK_CURRENTMAP 351
00687 #define EDIF_TOK_CURVE 352
00688 #define EDIF_TOK_CYCLE 353
00689 #define EDIF_TOK_DATAORIGIN 354
00690 #define EDIF_TOK_DCFANINLOAD 355
00691 #define EDIF_TOK_DCFANOUTLOAD 356
00692 #define EDIF_TOK_DCMAXFANIN 357
00693 #define EDIF_TOK_DCMAXFANOUT 358
00694 #define EDIF_TOK_DELAY 359
00695 #define EDIF_TOK_DELTA 360
00696 #define EDIF_TOK_DERIVATION 361
00697 #define EDIF_TOK_DESIGN 362
00698 #define EDIF_TOK_DESIGNATOR 363
00699 #define EDIF_TOK_DIFFERENCE 364
00700 #define EDIF_TOK_DIRECTION 365
00701 #define EDIF_TOK_DISPLAY 366
00702 #define EDIF_TOK_DOMINATES 367
00703 #define EDIF_TOK_DOT 368
00704 #define EDIF_TOK_DURATION 369
00705 #define EDIF_TOK_E 370
00706 #define EDIF_TOK_EDIF 371
00707 #define EDIF_TOK_EDIFLEVEL 372
00708 #define EDIF_TOK_EDIFVERSION 373
00709 #define EDIF_TOK_ENCLOSUREDISTANCE 374
00710 #define EDIF_TOK_ENDTYPE 375
00711 #define EDIF_TOK_ENTRY 376
00712 #define EDIF_TOK_EVENT 377
00713 #define EDIF_TOK_EXACTLY 378
00714 #define EDIF_TOK_EXTERNAL 379
00715 #define EDIF_TOK_FABRICATE 380
00716 #define EDIF_TOK_FALSE 381
00717 #define EDIF_TOK_FIGURE 382
00718 #define EDIF_TOK_FIGUREAREA 383
00719 #define EDIF_TOK_FIGUREGROUP 384
00720 #define EDIF_TOK_FIGUREGROUPOBJECT 385
00721 #define EDIF_TOK_FIGUREGROUPOVERRIDE 386
00722 #define EDIF_TOK_FIGUREGROUPREF 387
00723 #define EDIF_TOK_FIGUREPERIMETER 388
00724 #define EDIF_TOK_FIGUREWIDTH 389
00725 #define EDIF_TOK_FILLPATTERN 390
00726 #define EDIF_TOK_FOLLOW 391
00727 #define EDIF_TOK_FORBIDDENEVENT 392
00728 #define EDIF_TOK_GLOBALPORTREF 393
00729 #define EDIF_TOK_GREATERTHAN 394
00730 #define EDIF_TOK_GRIDMAP 395
00731 #define EDIF_TOK_IGNORE 396
00732 #define EDIF_TOK_INCLUDEFIGUREGROUP 397
00733 #define EDIF_TOK_INITIAL 398
00734 #define EDIF_TOK_INSTANCE 399
00735 #define EDIF_TOK_INSTANCEBACKANNOTATE 400
00736 #define EDIF_TOK_INSTANCEGROUP 401
00737 #define EDIF_TOK_INSTANCEMAP 402
00738 #define EDIF_TOK_INSTANCEREF 403
00739 #define EDIF_TOK_INTEGER 404
00740 #define EDIF_TOK_INTEGERDISPLAY 405
00741 #define EDIF_TOK_INTERFACE 406
00742 #define EDIF_TOK_INTERFIGUREGROUPSPACING 407
00743 #define EDIF_TOK_INTERSECTION 408
00744 #define EDIF_TOK_INTRAFIGUREGROUPSPACING 409
00745 #define EDIF_TOK_INVERSE 410
00746 #define EDIF_TOK_ISOLATED 411
00747 #define EDIF_TOK_JOINED 412
00748 #define EDIF_TOK_JUSTIFY 413
00749 #define EDIF_TOK_KEYWORDDISPLAY 414
00750 #define EDIF_TOK_KEYWORDLEVEL 415
00751 #define EDIF_TOK_KEYWORDMAP 416
00752 #define EDIF_TOK_LESSTHAN 417
00753 #define EDIF_TOK_LIBRARY 418
00754 #define EDIF_TOK_LIBRARYREF 419
00755 #define EDIF_TOK_LISTOFNETS 420
00756 #define EDIF_TOK_LISTOFPORTS 421
00757 #define EDIF_TOK_LOADDELAY 422
00758 #define EDIF_TOK_LOGICASSIGN 423
00759 #define EDIF_TOK_LOGICINPUT 424
00760 #define EDIF_TOK_LOGICLIST 425
00761 #define EDIF_TOK_LOGICMAPINPUT 426
00762 #define EDIF_TOK_LOGICMAPOUTPUT 427
00763 #define EDIF_TOK_LOGICONEOF 428
00764 #define EDIF_TOK_LOGICOUTPUT 429
00765 #define EDIF_TOK_LOGICPORT 430
00766 #define EDIF_TOK_LOGICREF 431
00767 #define EDIF_TOK_LOGICVALUE 432
00768 #define EDIF_TOK_LOGICWAVEFORM 433
00769 #define EDIF_TOK_MAINTAIN 434
00770 #define EDIF_TOK_MATCH 435
00771 #define EDIF_TOK_MEMBER 436
00772 #define EDIF_TOK_MINOMAX 437
00773 #define EDIF_TOK_MINOMAXDISPLAY 438
00774 #define EDIF_TOK_MNM 439
00775 #define EDIF_TOK_MULTIPLEVALUESET 440
00776 #define EDIF_TOK_MUSTJOIN 441
00777 #define EDIF_TOK_NAME 442
00778 #define EDIF_TOK_NET 443
00779 #define EDIF_TOK_NETBACKANNOTATE 444
00780 #define EDIF_TOK_NETBUNDLE 445
00781 #define EDIF_TOK_NETDELAY 446
00782 #define EDIF_TOK_NETGROUP 447
00783 #define EDIF_TOK_NETMAP 448
00784 #define EDIF_TOK_NETREF 449
00785 #define EDIF_TOK_NOCHANGE 450
00786 #define EDIF_TOK_NONPERMUTABLE 451
00787 #define EDIF_TOK_NOTALLOWED 452
00788 #define EDIF_TOK_NOTCHSPACING 453
00789 #define EDIF_TOK_NUMBER 454
00790 #define EDIF_TOK_NUMBERDEFINITION 455
00791 #define EDIF_TOK_NUMBERDISPLAY 456
00792 #define EDIF_TOK_OFFPAGECONNECTOR 457
00793 #define EDIF_TOK_OFFSETEVENT 458
00794 #define EDIF_TOK_OPENSHAPE 459
00795 #define EDIF_TOK_ORIENTATION 460
00796 #define EDIF_TOK_ORIGIN 461
00797 #define EDIF_TOK_OVERHANGDISTANCE 462
00798 #define EDIF_TOK_OVERLAPDISTANCE 463
00799 #define EDIF_TOK_OVERSIZE 464
00800 #define EDIF_TOK_OWNER 465
00801 #define EDIF_TOK_PAGE 466
00802 #define EDIF_TOK_PAGESIZE 467
00803 #define EDIF_TOK_PARAMETER 468
00804 #define EDIF_TOK_PARAMETERASSIGN 469
00805 #define EDIF_TOK_PARAMETERDISPLAY 470
00806 #define EDIF_TOK_PATH 471
00807 #define EDIF_TOK_PATHDELAY 472
00808 #define EDIF_TOK_PATHWIDTH 473
00809 #define EDIF_TOK_PERMUTABLE 474
00810 #define EDIF_TOK_PHYSICALDESIGNRULE 475
00811 #define EDIF_TOK_PLUG 476
00812 #define EDIF_TOK_POINT 477
00813 #define EDIF_TOK_POINTDISPLAY 478
00814 #define EDIF_TOK_POINTLIST 479
00815 #define EDIF_TOK_POLYGON 480
00816 #define EDIF_TOK_PORT 481
00817 #define EDIF_TOK_PORTBACKANNOTATE 482
00818 #define EDIF_TOK_PORTBUNDLE 483
00819 #define EDIF_TOK_PORTDELAY 484
00820 #define EDIF_TOK_PORTGROUP 485
00821 #define EDIF_TOK_PORTIMPLEMENTATION 486
00822 #define EDIF_TOK_PORTINSTANCE 487
00823 #define EDIF_TOK_PORTLIST 488
00824 #define EDIF_TOK_PORTLISTALIAS 489
00825 #define EDIF_TOK_PORTMAP 490
00826 #define EDIF_TOK_PORTREF 491
00827 #define EDIF_TOK_PROGRAM 492
00828 #define EDIF_TOK_PROPERTY 493
00829 #define EDIF_TOK_PROPERTYDISPLAY 494
00830 #define EDIF_TOK_PROTECTIONFRAME 495
00831 #define EDIF_TOK_PT 496
00832 #define EDIF_TOK_RANGEVECTOR 497
00833 #define EDIF_TOK_RECTANGLE 498
00834 #define EDIF_TOK_RECTANGLESIZE 499
00835 #define EDIF_TOK_RENAME 500
00836 #define EDIF_TOK_RESOLVES 501
00837 #define EDIF_TOK_SCALE 502
00838 #define EDIF_TOK_SCALEX 503
00839 #define EDIF_TOK_SCALEY 504
00840 #define EDIF_TOK_SECTION 505
00841 #define EDIF_TOK_SHAPE 506
00842 #define EDIF_TOK_SIMULATE 507
00843 #define EDIF_TOK_SIMULATIONINFO 508
00844 #define EDIF_TOK_SINGLEVALUESET 509
00845 #define EDIF_TOK_SITE 510
00846 #define EDIF_TOK_SOCKET 511
00847 #define EDIF_TOK_SOCKETSET 512
00848 #define EDIF_TOK_STATUS 513
00849 #define EDIF_TOK_STEADY 514
00850 #define EDIF_TOK_STRING 515
00851 #define EDIF_TOK_STRINGDISPLAY 516
00852 #define EDIF_TOK_STRONG 517
00853 #define EDIF_TOK_SYMBOL 518
00854 #define EDIF_TOK_SYMMETRY 519
00855 #define EDIF_TOK_TABLE 520
00856 #define EDIF_TOK_TABLEDEFAULT 521
00857 #define EDIF_TOK_TECHNOLOGY 522
00858 #define EDIF_TOK_TEXTHEIGHT 523
00859 #define EDIF_TOK_TIMEINTERVAL 524
00860 #define EDIF_TOK_TIMESTAMP 525
00861 #define EDIF_TOK_TIMING 526
00862 #define EDIF_TOK_TRANSFORM 527
00863 #define EDIF_TOK_TRANSITION 528
00864 #define EDIF_TOK_TRIGGER 529
00865 #define EDIF_TOK_TRUE 530
00866 #define EDIF_TOK_UNCONSTRAINED 531
00867 #define EDIF_TOK_UNDEFINED 532
00868 #define EDIF_TOK_UNION 533
00869 #define EDIF_TOK_UNIT 534
00870 #define EDIF_TOK_UNUSED 535
00871 #define EDIF_TOK_USERDATA 536
00872 #define EDIF_TOK_VERSION 537
00873 #define EDIF_TOK_VIEW 538
00874 #define EDIF_TOK_VIEWLIST 539
00875 #define EDIF_TOK_VIEWMAP 540
00876 #define EDIF_TOK_VIEWREF 541
00877 #define EDIF_TOK_VIEWTYPE 542
00878 #define EDIF_TOK_VISIBLE 543
00879 #define EDIF_TOK_VOLTAGEMAP 544
00880 #define EDIF_TOK_WAVEVALUE 545
00881 #define EDIF_TOK_WEAK 546
00882 #define EDIF_TOK_WEAKJOINED 547
00883 #define EDIF_TOK_WHEN 548
00884 #define EDIF_TOK_WRITTEN 549
00885 
00886 
00887 
00888 
00889 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
00890 typedef union YYSTYPE
00891 {
00892 
00893 /* Line 214 of yacc.c  */
00894 #line 193 "edif.y"
00895 
00896     char* s;
00897     pair_list* pl;
00898     str_pair* ps;
00899 
00900 
00901 
00902 /* Line 214 of yacc.c  */
00903 #line 904 "edif.c"
00904 } YYSTYPE;
00905 # define YYSTYPE_IS_TRIVIAL 1
00906 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
00907 # define YYSTYPE_IS_DECLARED 1
00908 #endif
00909 
00910 
00911 /* Copy the second part of user declarations.  */
00912 
00913 
00914 /* Line 264 of yacc.c  */
00915 #line 916 "edif.c"
00916 
00917 #ifdef short
00918 # undef short
00919 #endif
00920 
00921 #ifdef YYTYPE_UINT8
00922 typedef YYTYPE_UINT8 yytype_uint8;
00923 #else
00924 typedef unsigned char yytype_uint8;
00925 #endif
00926 
00927 #ifdef YYTYPE_INT8
00928 typedef YYTYPE_INT8 yytype_int8;
00929 #elif (defined __STDC__ || defined __C99__FUNC__ \
00930      || defined __cplusplus || defined _MSC_VER)
00931 typedef signed char yytype_int8;
00932 #else
00933 typedef short int yytype_int8;
00934 #endif
00935 
00936 #ifdef YYTYPE_UINT16
00937 typedef YYTYPE_UINT16 yytype_uint16;
00938 #else
00939 typedef unsigned short int yytype_uint16;
00940 #endif
00941 
00942 #ifdef YYTYPE_INT16
00943 typedef YYTYPE_INT16 yytype_int16;
00944 #else
00945 typedef short int yytype_int16;
00946 #endif
00947 
00948 #ifndef YYSIZE_T
00949 # ifdef __SIZE_TYPE__
00950 #  define YYSIZE_T __SIZE_TYPE__
00951 # elif defined size_t
00952 #  define YYSIZE_T size_t
00953 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
00954      || defined __cplusplus || defined _MSC_VER)
00955 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
00956 #  define YYSIZE_T size_t
00957 # else
00958 #  define YYSIZE_T unsigned int
00959 # endif
00960 #endif
00961 
00962 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
00963 
00964 #ifndef YY_
00965 # if YYENABLE_NLS
00966 #  if ENABLE_NLS
00967 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
00968 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
00969 #  endif
00970 # endif
00971 # ifndef YY_
00972 #  define YY_(msgid) msgid
00973 # endif
00974 #endif
00975 
00976 /* Suppress unused-variable warnings by "using" E.  */
00977 #if ! defined lint || defined __GNUC__
00978 # define YYUSE(e) ((void) (e))
00979 #else
00980 # define YYUSE(e) /* empty */
00981 #endif
00982 
00983 /* Identity function, used to suppress warnings about constant conditions.  */
00984 #ifndef lint
00985 # define YYID(n) (n)
00986 #else
00987 #if (defined __STDC__ || defined __C99__FUNC__ \
00988      || defined __cplusplus || defined _MSC_VER)
00989 static int
00990 YYID (int yyi)
00991 #else
00992 static int
00993 YYID (yyi)
00994     int yyi;
00995 #endif
00996 {
00997   return yyi;
00998 }
00999 #endif
01000 
01001 #if ! defined yyoverflow || YYERROR_VERBOSE
01002 
01003 /* The parser invokes alloca or malloc; define the necessary symbols.  */
01004 
01005 # ifdef YYSTACK_USE_ALLOCA
01006 #  if YYSTACK_USE_ALLOCA
01007 #   ifdef __GNUC__
01008 #    define YYSTACK_ALLOC __builtin_alloca
01009 #   elif defined __BUILTIN_VA_ARG_INCR
01010 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
01011 #   elif defined _AIX
01012 #    define YYSTACK_ALLOC __alloca
01013 #   elif defined _MSC_VER
01014 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
01015 #    define alloca _alloca
01016 #   else
01017 #    define YYSTACK_ALLOC alloca
01018 #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
01019      || defined __cplusplus || defined _MSC_VER)
01020 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
01021 #     ifndef _STDLIB_H
01022 #      define _STDLIB_H 1
01023 #     endif
01024 #    endif
01025 #   endif
01026 #  endif
01027 # endif
01028 
01029 # ifdef YYSTACK_ALLOC
01030    /* Pacify GCC's `empty if-body' warning.  */
01031 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
01032 #  ifndef YYSTACK_ALLOC_MAXIMUM
01033     /* The OS might guarantee only one guard page at the bottom of the stack,
01034        and a page size can be as small as 4096 bytes.  So we cannot safely
01035        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
01036        to allow for a few compiler-allocated temporary stack slots.  */
01037 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
01038 #  endif
01039 # else
01040 #  define YYSTACK_ALLOC YYMALLOC
01041 #  define YYSTACK_FREE YYFREE
01042 #  ifndef YYSTACK_ALLOC_MAXIMUM
01043 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
01044 #  endif
01045 #  if (defined __cplusplus && ! defined _STDLIB_H \
01046        && ! ((defined YYMALLOC || defined malloc) \
01047              && (defined YYFREE || defined free)))
01048 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
01049 #   ifndef _STDLIB_H
01050 #    define _STDLIB_H 1
01051 #   endif
01052 #  endif
01053 #  ifndef YYMALLOC
01054 #   define YYMALLOC malloc
01055 #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
01056      || defined __cplusplus || defined _MSC_VER)
01057 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
01058 #   endif
01059 #  endif
01060 #  ifndef YYFREE
01061 #   define YYFREE free
01062 #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
01063      || defined __cplusplus || defined _MSC_VER)
01064 void free (void *); /* INFRINGES ON USER NAME SPACE */
01065 #   endif
01066 #  endif
01067 # endif
01068 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
01069 
01070 
01071 #if (! defined yyoverflow \
01072      && (! defined __cplusplus \
01073          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
01074 
01075 /* A type that is properly aligned for any stack member.  */
01076 union yyalloc
01077 {
01078   yytype_int16 yyss_alloc;
01079   YYSTYPE yyvs_alloc;
01080 };
01081 
01082 /* The size of the maximum gap between one aligned stack and the next.  */
01083 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
01084 
01085 /* The size of an array large to enough to hold all stacks, each with
01086    N elements.  */
01087 # define YYSTACK_BYTES(N) \
01088      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
01089       + YYSTACK_GAP_MAXIMUM)
01090 
01091 /* Copy COUNT objects from FROM to TO.  The source and destination do
01092    not overlap.  */
01093 # ifndef YYCOPY
01094 #  if defined __GNUC__ && 1 < __GNUC__
01095 #   define YYCOPY(To, From, Count) \
01096       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
01097 #  else
01098 #   define YYCOPY(To, From, Count)              \
01099       do                                        \
01100         {                                       \
01101           YYSIZE_T yyi;                         \
01102           for (yyi = 0; yyi < (Count); yyi++)   \
01103             (To)[yyi] = (From)[yyi];            \
01104         }                                       \
01105       while (YYID (0))
01106 #  endif
01107 # endif
01108 
01109 /* Relocate STACK from its old location to the new one.  The
01110    local variables YYSIZE and YYSTACKSIZE give the old and new number of
01111    elements in the stack, and YYPTR gives the new location of the
01112    stack.  Advance YYPTR to a properly aligned location for the next
01113    stack.  */
01114 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
01115     do                                                                  \
01116       {                                                                 \
01117         YYSIZE_T yynewbytes;                                            \
01118         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
01119         Stack = &yyptr->Stack_alloc;                                    \
01120         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
01121         yyptr += yynewbytes / sizeof (*yyptr);                          \
01122       }                                                                 \
01123     while (YYID (0))
01124 
01125 #endif
01126 
01127 /* YYFINAL -- State number of the termination state.  */
01128 #define YYFINAL  11
01129 /* YYLAST -- Last index in YYTABLE.  */
01130 #define YYLAST   2619
01131 
01132 /* YYNTOKENS -- Number of terminals.  */
01133 #define YYNTOKENS  296
01134 /* YYNNTS -- Number of nonterminals.  */
01135 #define YYNNTS  472
01136 /* YYNRULES -- Number of rules.  */
01137 #define YYNRULES  1129
01138 /* YYNRULES -- Number of states.  */
01139 #define YYNSTATES  1626
01140 
01141 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
01142 #define YYUNDEFTOK  2
01143 #define YYMAXUTOK   549
01144 
01145 #define YYTRANSLATE(YYX)                                                \
01146   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
01147 
01148 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
01149 static const yytype_uint16 yytranslate[] =
01150 {
01151        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01152        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01153        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01154        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01155        2,   295,     2,     2,     2,     2,     2,     2,     2,     2,
01156        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01157        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01158        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01159        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01160        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01161        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01162        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01163        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01164        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01165        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01166        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01167        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01168        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01169        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01170        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01171        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01172        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01173        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01174        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01175        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01176        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
01177        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
01178       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
01179       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
01180       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
01181       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
01182       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
01183       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
01184       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
01185       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
01186       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
01187      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
01188      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
01189      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
01190      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
01191      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
01192      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
01193      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
01194      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
01195      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
01196      195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
01197      205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
01198      215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
01199      225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
01200      235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
01201      245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
01202      255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
01203      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
01204      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
01205      285,   286,   287,   288,   289,   290,   291,   292,   293,   294
01206 };
01207 
01208 #if YYDEBUG
01209 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
01210    YYRHS.  */
01211 static const yytype_uint16 yyprhs[] =
01212 {
01213        0,     0,     3,     5,    13,    14,    17,    20,    23,    26,
01214       29,    32,    34,    38,    44,    48,    50,    52,    56,    58,
01215       61,    64,    67,    70,    73,    77,    79,    81,    85,    87,
01216       90,    93,    96,    99,   105,   111,   112,   114,   118,   122,
01217      124,   126,   128,   131,   134,   138,   142,   146,   150,   153,
01218      157,   159,   161,   163,   168,   170,   172,   174,   176,   180,
01219      181,   184,   187,   190,   194,   196,   199,   203,   205,   207,
01220      213,   217,   221,   226,   228,   231,   234,   237,   240,   243,
01221      246,   248,   253,   254,   256,   258,   262,   264,   266,   268,
01222      273,   275,   277,   279,   280,   282,   284,   290,   291,   294,
01223      300,   304,   305,   308,   312,   313,   316,   319,   322,   325,
01224      328,   331,   334,   338,   342,   343,   346,   349,   352,   355,
01225      358,   361,   364,   367,   370,   373,   376,   379,   382,   385,
01226      388,   391,   394,   398,   399,   401,   405,   407,   409,   411,
01227      415,   417,   419,   423,   427,   428,   431,   434,   439,   440,
01228      442,   447,   448,   450,   454,   456,   458,   462,   464,   466,
01229      470,   472,   474,   478,   480,   482,   486,   488,   490,   494,
01230      495,   498,   502,   504,   506,   508,   513,   515,   518,   521,
01231      524,   527,   531,   533,   535,   537,   541,   542,   545,   548,
01232      551,   554,   557,   560,   563,   566,   569,   572,   575,   578,
01233      581,   584,   588,   590,   592,   595,   598,   602,   604,   606,
01234      608,   615,   617,   619,   620,   622,   623,   625,   626,   628,
01235      632,   633,   636,   640,   642,   645,   649,   656,   658,   660,
01236      663,   666,   670,   672,   674,   676,   682,   684,   686,   688,
01237      690,   692,   694,   696,   697,   699,   701,   705,   707,   709,
01238      711,   713,   715,   718,   721,   725,   731,   733,   736,   739,
01239      742,   745,   750,   753,   757,   759,   762,   765,   768,   771,
01240      774,   777,   780,   783,   786,   789,   792,   795,   798,   800,
01241      802,   806,   808,   810,   812,   816,   818,   821,   824,   827,
01242      830,   833,   836,   839,   842,   845,   848,   851,   854,   859,
01243      860,   862,   866,   868,   870,   873,   876,   879,   882,   885,
01244      888,   891,   894,   897,   903,   905,   907,   910,   913,   915,
01245      917,   919,   921,   923,   929,   931,   933,   936,   939,   945,
01246      947,   949,   952,   955,   961,   966,   968,   970,   972,   974,
01247      977,   980,   984,   986,   989,   993,   994,   997,  1000,  1003,
01248     1006,  1010,  1014,  1019,  1022,  1026,  1028,  1030,  1033,  1038,
01249     1040,  1042,  1045,  1048,  1051,  1054,  1057,  1060,  1063,  1066,
01250     1071,  1072,  1074,  1076,  1080,  1082,  1085,  1088,  1091,  1094,
01251     1098,  1099,  1102,  1106,  1107,  1110,  1113,  1116,  1119,  1121,
01252     1123,  1125,  1127,  1131,  1133,  1136,  1140,  1141,  1144,  1147,
01253     1150,  1154,  1155,  1158,  1161,  1164,  1167,  1170,  1173,  1176,
01254     1179,  1182,  1185,  1188,  1191,  1194,  1197,  1200,  1203,  1210,
01255     1212,  1214,  1217,  1220,  1224,  1226,  1228,  1231,  1234,  1240,
01256     1242,  1244,  1247,  1250,  1254,  1256,  1258,  1261,  1265,  1266,
01257     1269,  1272,  1275,  1279,  1281,  1283,  1285,  1287,  1289,  1291,
01258     1293,  1295,  1297,  1301,  1303,  1306,  1310,  1314,  1316,  1319,
01259     1321,  1323,  1327,  1329,  1331,  1337,  1339,  1342,  1345,  1348,
01260     1351,  1355,  1359,  1360,  1363,  1367,  1368,  1371,  1374,  1379,
01261     1381,  1383,  1389,  1391,  1393,  1395,  1397,  1399,  1400,  1402,
01262     1404,  1408,  1410,  1412,  1414,  1417,  1421,  1422,  1425,  1428,
01263     1431,  1435,  1436,  1439,  1443,  1444,  1447,  1449,  1451,  1455,
01264     1456,  1459,  1462,  1466,  1468,  1470,  1472,  1475,  1479,  1481,
01265     1484,  1487,  1490,  1495,  1496,  1498,  1502,  1504,  1507,  1510,
01266     1513,  1516,  1519,  1522,  1525,  1528,  1531,  1534,  1537,  1540,
01267     1543,  1546,  1550,  1551,  1554,  1557,  1560,  1563,  1568,  1570,
01268     1572,  1573,  1575,  1577,  1582,  1584,  1586,  1588,  1590,  1592,
01269     1594,  1599,  1601,  1604,  1608,  1609,  1612,  1615,  1618,  1622,
01270     1624,  1627,  1629,  1631,  1637,  1639,  1641,  1643,  1647,  1648,
01271     1651,  1655,  1656,  1659,  1662,  1665,  1668,  1672,  1674,  1677,
01272     1679,  1681,  1683,  1685,  1687,  1692,  1694,  1697,  1700,  1703,
01273     1706,  1709,  1712,  1715,  1718,  1721,  1725,  1727,  1730,  1733,
01274     1736,  1739,  1744,  1746,  1749,  1752,  1755,  1758,  1761,  1766,
01275     1768,  1771,  1774,  1778,  1779,  1782,  1785,  1789,  1790,  1793,
01276     1796,  1799,  1802,  1804,  1806,  1808,  1810,  1815,  1816,  1818,
01277     1820,  1822,  1825,  1829,  1830,  1833,  1836,  1841,  1843,  1846,
01278     1849,  1855,  1857,  1859,  1862,  1865,  1869,  1870,  1873,  1876,
01279     1879,  1883,  1885,  1888,  1892,  1893,  1896,  1899,  1902,  1906,
01280     1908,  1911,  1914,  1917,  1920,  1925,  1929,  1931,  1934,  1938,
01281     1940,  1942,  1944,  1946,  1948,  1950,  1952,  1954,  1958,  1965,
01282     1967,  1969,  1972,  1975,  1982,  1984,  1986,  1989,  1992,  1998,
01283     2000,  2002,  2006,  2010,  2012,  2015,  2018,  2021,  2024,  2027,
01284     2030,  2033,  2036,  2039,  2043,  2047,  2049,  2052,  2058,  2059,
01285     2061,  2066,  2070,  2072,  2075,  2079,  2081,  2084,  2088,  2092,
01286     2093,  2096,  2099,  2102,  2106,  2107,  2110,  2114,  2115,  2118,
01287     2121,  2124,  2128,  2130,  2133,  2137,  2138,  2141,  2146,  2150,
01288     2152,  2155,  2159,  2161,  2164,  2167,  2170,  2173,  2176,  2179,
01289     2182,  2185,  2188,  2191,  2194,  2197,  2201,  2203,  2206,  2209,
01290     2212,  2215,  2218,  2221,  2224,  2227,  2230,  2235,  2237,  2240,
01291     2243,  2246,  2251,  2253,  2255,  2258,  2261,  2265,  2266,  2269,
01292     2272,  2276,  2278,  2280,  2283,  2286,  2289,  2292,  2295,  2298,
01293     2301,  2304,  2307,  2311,  2313,  2315,  2318,  2321,  2324,  2327,
01294     2330,  2333,  2336,  2339,  2342,  2345,  2348,  2352,  2353,  2356,
01295     2359,  2364,  2368,  2369,  2372,  2375,  2378,  2381,  2383,  2385,
01296     2387,  2389,  2394,  2395,  2397,  2399,  2401,  2406,  2407,  2409,
01297     2413,  2415,  2418,  2423,  2425,  2428,  2431,  2434,  2437,  2439,
01298     2441,  2445,  2446,  2449,  2452,  2455,  2458,  2461,  2464,  2467,
01299     2470,  2473,  2476,  2479,  2481,  2483,  2485,  2487,  2489,  2491,
01300     2495,  2496,  2499,  2502,  2507,  2509,  2512,  2518,  2520,  2522,
01301     2525,  2528,  2533,  2535,  2537,  2539,  2541,  2545,  2546,  2549,
01302     2551,  2557,  2559,  2564,  2569,  2574,  2578,  2580,  2583,  2586,
01303     2589,  2593,  2595,  2598,  2600,  2604,  2606,  2609,  2612,  2615,
01304     2618,  2621,  2625,  2626,  2629,  2632,  2635,  2639,  2640,  2642,
01305     2647,  2648,  2650,  2654,  2655,  2657,  2661,  2663,  2666,  2670,
01306     2671,  2674,  2677,  2680,  2685,  2687,  2689,  2691,  2693,  2696,
01307     2699,  2703,  2707,  2708,  2711,  2714,  2717,  2719,  2722,  2726,
01308     2730,  2731,  2734,  2737,  2740,  2743,  2746,  2749,  2752,  2755,
01309     2758,  2761,  2764,  2767,  2770,  2774,  2775,  2778,  2782,  2783,
01310     2786,  2789,  2794,  2796,  2798,  2800,  2802,  2803,  2805,  2807,
01311     2811,  2813,  2816,  2819,  2822,  2825,  2828,  2831,  2835,  2840,
01312     2842,  2844,  2846,  2848,  2850,  2859,  2863,  2865,  2868,  2871,
01313     2874,  2877,  2885,  2886,  2888,  2889,  2891,  2892,  2894,  2895,
01314     2897,  2898,  2900,  2905,  2907,  2909,  2911,  2915,  2916,  2919,
01315     2922,  2925,  2928,  2930,  2932,  2934,  2936,  2938,  2940,  2943,
01316     2946,  2950,  2952,  2954,  2957,  2960,  2964,  2966,  2968,  2970,
01317     2972,  2974,  2976,  2978,  2980,  2982,  2984,  2986,  2988,  2990,
01318     2992,  2994,  2996,  2999,  3003,  3005,  3008,  3011,  3014,  3017,
01319     3019,  3021,  3023,  3025,  3029,  3035,  3037,  3040,  3043,  3046,
01320     3049,  3052,  3056,  3057,  3060,  3063,  3067,  3068,  3071,  3074,
01321     3077,  3080,  3083,  3086,  3089,  3092,  3094,  3096,  3101,  3102,
01322     3104,  3108,  3110,  3112,  3114,  3116,  3118,  3120,  3122,  3124,
01323     3126,  3128,  3132,  3136,  3142,  3146,  3150,  3151,  3154,  3157,
01324     3160,  3164,  3166,  3169,  3172,  3175,  3178,  3181,  3184,  3188,
01325     3190,  3193,  3196,  3199,  3202,  3205,  3208,  3210,  3212,  3214
01326 };
01327 
01328 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
01329 static const yytype_int16 yyrhs[] =
01330 {
01331      298,     0,    -1,   295,    -1,   116,   300,   302,   301,   488,
01332      299,   297,    -1,    -1,   299,   690,    -1,   299,   416,    -1,
01333      299,   495,    -1,   299,   384,    -1,   299,   350,    -1,   299,
01334      737,    -1,   551,    -1,   117,   766,   297,    -1,   118,   766,
01335      766,   766,   297,    -1,    62,   304,   297,    -1,   542,    -1,
01336      540,    -1,    63,   306,   297,    -1,   542,    -1,   306,   440,
01337       -1,   306,   530,    -1,   306,   504,    -1,   306,   350,    -1,
01338      306,   737,    -1,    64,   308,   297,    -1,   765,    -1,   695,
01339       -1,    65,   310,   297,    -1,   366,    -1,   310,   508,    -1,
01340      310,   520,    -1,   310,   350,    -1,   310,   737,    -1,    66,
01341      620,   620,   620,   297,    -1,    67,   551,   766,   313,   297,
01342       -1,    -1,   766,    -1,    68,   612,   297,    -1,    69,   316,
01343      297,    -1,   321,    -1,   317,    -1,   314,    -1,   316,   350,
01344       -1,   316,   737,    -1,    70,   686,   297,    -1,    71,   670,
01345      297,    -1,    72,   670,   297,    -1,    73,   765,   297,    -1,
01346       74,   297,    -1,    75,   323,   297,    -1,   517,    -1,   510,
01347       -1,   518,    -1,    76,   325,   326,   297,    -1,   318,    -1,
01348      448,    -1,   319,    -1,   492,    -1,    77,   328,   297,    -1,
01349       -1,   328,   332,    -1,   328,   329,    -1,   328,   327,    -1,
01350       78,   330,   297,    -1,   332,    -1,   330,   395,    -1,    79,
01351      332,   297,    -1,   728,    -1,   419,    -1,    80,   766,   766,
01352      327,   297,    -1,    81,   766,   297,    -1,    82,   659,   297,
01353       -1,    83,   338,   337,   297,    -1,   342,    -1,   337,   690,
01354       -1,   337,   746,    -1,   337,   742,    -1,   337,   350,    -1,
01355      337,   737,    -1,   337,   650,    -1,   551,    -1,    84,   341,
01356      340,   297,    -1,    -1,   497,    -1,   552,    -1,    85,   343,
01357      297,    -1,    55,    -1,    49,    -1,    23,    -1,    86,   345,
01358      346,   297,    -1,   643,    -1,   644,    -1,   637,    -1,    -1,
01359      322,    -1,   724,    -1,    87,   620,   620,   348,   297,    -1,
01360       -1,   348,   650,    -1,    88,   670,   670,   670,   297,    -1,
01361       89,   351,   297,    -1,    -1,   351,   765,    -1,    90,   353,
01362      297,    -1,    -1,   353,   307,    -1,   353,   430,    -1,   353,
01363      454,    -1,   353,   335,    -1,   353,   650,    -1,   353,   350,
01364       -1,   353,   737,    -1,    91,   517,   297,    -1,    93,   356,
01365      297,    -1,    -1,   356,   454,    -1,   356,   582,    -1,   356,
01366      430,    -1,   356,   673,    -1,   356,   553,    -1,   356,   557,
01367       -1,   356,   597,    -1,   356,   352,    -1,   356,   633,    -1,
01368      356,   716,    -1,   356,   678,    -1,   356,   760,    -1,   356,
01369      440,    -1,   356,   522,    -1,   356,   335,    -1,   356,   350,
01370       -1,   356,   737,    -1,    92,   358,   297,    -1,    -1,   430,
01371       -1,    94,   360,   297,    -1,    20,    -1,    50,    -1,    57,
01372       -1,    95,   362,   297,    -1,   766,    -1,   466,    -1,    96,
01373      542,   297,    -1,    97,   365,   297,    -1,    -1,   365,   311,
01374       -1,   365,   620,    -1,    98,   766,   367,   297,    -1,    -1,
01375      404,    -1,    99,   765,   369,   297,    -1,    -1,   741,    -1,
01376      100,   371,   297,    -1,   670,    -1,   578,    -1,   101,   373,
01377      297,    -1,   670,    -1,   578,    -1,   102,   375,   297,    -1,
01378      670,    -1,   578,    -1,   103,   377,   297,    -1,   670,    -1,
01379      578,    -1,   104,   379,   297,    -1,   542,    -1,   540,    -1,
01380      105,   381,   297,    -1,    -1,   381,   620,    -1,   106,   383,
01381      297,    -1,     9,    -1,    34,    -1,    47,    -1,   107,   388,
01382      385,   297,    -1,   339,    -1,   385,   690,    -1,   385,   350,
01383       -1,   385,   650,    -1,   385,   737,    -1,   108,   387,   297,
01384       -1,   765,    -1,   695,    -1,   551,    -1,   220,   390,   297,
01385       -1,    -1,   390,   437,    -1,   390,   432,    -1,   390,   661,
01386       -1,   390,   435,    -1,   390,   592,    -1,   390,   590,    -1,
01387      390,   405,    -1,   390,   472,    -1,   390,   476,    -1,   390,
01388      574,    -1,   390,   572,    -1,   390,   420,    -1,   390,   350,
01389       -1,   390,   737,    -1,   109,   392,   297,    -1,   428,    -1,
01390      434,    -1,   392,   428,    -1,   392,   434,    -1,   110,   394,
01391      297,    -1,    26,    -1,    27,    -1,    40,    -1,   111,   396,
01392      397,   398,   399,   297,    -1,   423,    -1,   426,    -1,    -1,
01393      483,    -1,    -1,   587,    -1,    -1,   589,    -1,   112,   401,
01394      297,    -1,    -1,   401,   517,    -1,   113,   403,   297,    -1,
01395      620,    -1,   403,   650,    -1,   114,   670,   297,    -1,   119,
01396      668,   424,   424,   406,   297,    -1,   656,    -1,   682,    -1,
01397      406,   350,    -1,   406,   737,    -1,   120,   408,   297,    -1,
01398       20,    -1,    50,    -1,    57,    -1,   121,   410,   411,   412,
01399      297,    -1,   533,    -1,   344,    -1,   692,    -1,   524,    -1,
01400      644,    -1,   569,    -1,   704,    -1,    -1,   378,    -1,   502,
01401       -1,   122,   414,   297,    -1,   644,    -1,   637,    -1,   631,
01402       -1,   567,    -1,   561,    -1,   414,   724,    -1,   414,   322,
01403       -1,   123,   670,   297,    -1,   124,   493,   301,   417,   297,
01404       -1,   709,    -1,   417,   690,    -1,   417,   336,    -1,   417,
01405      350,    -1,   417,   737,    -1,   125,   491,   423,   297,    -1,
01406      126,   297,    -1,   129,   421,   297,    -1,   422,    -1,   421,
01407      359,    -1,   421,   407,    -1,   421,   609,    -1,   421,   334,
01408       -1,   421,   349,    -1,   421,   439,    -1,   421,   333,    -1,
01409      421,   711,    -1,   421,   754,    -1,   421,   350,    -1,   421,
01410      650,    -1,   421,   737,    -1,   421,   451,    -1,   551,    -1,
01411      552,    -1,   130,   425,   297,    -1,   423,    -1,   428,    -1,
01412      434,    -1,   131,   427,   297,    -1,   423,    -1,   427,   359,
01413       -1,   427,   407,    -1,   427,   609,    -1,   427,   334,    -1,
01414      427,   349,    -1,   427,   439,    -1,   427,   333,    -1,   427,
01415      711,    -1,   427,   754,    -1,   427,   350,    -1,   427,   650,
01416       -1,   427,   737,    -1,   132,   423,   429,   297,    -1,    -1,
01417      497,    -1,   127,   431,   297,    -1,   422,    -1,   426,    -1,
01418      431,   347,    -1,   431,   402,    -1,   431,   585,    -1,   431,
01419      605,    -1,   431,   621,    -1,   431,   659,    -1,   431,   675,
01420       -1,   431,   350,    -1,   431,   737,    -1,   128,   668,   424,
01421      433,   297,    -1,   656,    -1,   682,    -1,   433,   350,    -1,
01422      433,   737,    -1,   474,    -1,   732,    -1,   391,    -1,   478,
01423       -1,   594,    -1,   133,   668,   424,   436,   297,    -1,   656,
01424       -1,   682,    -1,   436,   350,    -1,   436,   737,    -1,   134,
01425      668,   424,   438,   297,    -1,   656,    -1,   682,    -1,   438,
01426      350,    -1,   438,   737,    -1,   135,   766,   766,   327,   297,
01427       -1,   136,   441,   442,   297,    -1,   643,    -1,   644,    -1,
01428      644,    -1,   704,    -1,   442,   378,    -1,   442,   502,    -1,
01429      137,   444,   297,    -1,   712,    -1,   444,   413,    -1,   767,
01430      446,   295,    -1,    -1,   446,   766,    -1,   446,   765,    -1,
01431      446,   764,    -1,   446,   445,    -1,   138,   643,   297,    -1,
01432      139,   670,   297,    -1,   140,   670,   670,   297,    -1,   141,
01433      297,    -1,   142,   452,   297,    -1,   428,    -1,   434,    -1,
01434      143,   297,    -1,   144,   464,   455,   297,    -1,   750,    -1,
01435      744,    -1,   455,   718,    -1,   455,   604,    -1,   455,   635,
01436       -1,   455,   716,    -1,   455,   386,    -1,   455,   650,    -1,
01437      455,   350,    -1,   455,   737,    -1,   148,   465,   457,   297,
01438       -1,    -1,   456,    -1,   750,    -1,   145,   459,   297,    -1,
01439      456,    -1,   459,   386,    -1,   459,   716,    -1,   459,   650,
01440       -1,   459,   350,    -1,   146,   461,   297,    -1,    -1,   461,
01441      456,    -1,   147,   463,   297,    -1,    -1,   463,   456,    -1,
01442      463,   460,    -1,   463,   350,    -1,   463,   737,    -1,   551,
01443       -1,   312,    -1,   552,    -1,   536,    -1,   150,   467,   297,
01444       -1,   766,    -1,   467,   395,    -1,   149,   469,   297,    -1,
01445       -1,   469,   766,    -1,   469,   466,    -1,   469,   468,    -1,
01446      151,   471,   297,    -1,    -1,   471,   623,    -1,   471,   627,
01447       -1,   471,   700,    -1,   471,   654,    -1,   471,   315,    -1,
01448      471,   602,    -1,   471,   481,    -1,   471,   547,    -1,   471,
01449      758,    -1,   471,   610,    -1,   471,   716,    -1,   471,   678,
01450       -1,   471,   386,    -1,   471,   650,    -1,   471,   350,    -1,
01451      471,   737,    -1,   152,   668,   424,   424,   473,   297,    -1,
01452      656,    -1,   682,    -1,   473,   350,    -1,   473,   737,    -1,
01453      153,   475,   297,    -1,   428,    -1,   434,    -1,   475,   428,
01454       -1,   475,   434,    -1,   154,   668,   424,   477,   297,    -1,
01455      656,    -1,   682,    -1,   477,   350,    -1,   477,   737,    -1,
01456      155,   479,   297,    -1,   428,    -1,   434,    -1,   156,   297,
01457       -1,   157,   482,   297,    -1,    -1,   482,   644,    -1,   482,
01458      637,    -1,   482,   447,    -1,   158,   484,   297,    -1,    11,
01459       -1,    12,    -1,    13,    -1,    29,    -1,    30,    -1,    31,
01460       -1,    58,    -1,    59,    -1,    60,    -1,   159,   486,   297,
01461       -1,   490,    -1,   486,   395,    -1,   160,   766,   297,    -1,
01462      161,   489,   297,    -1,   487,    -1,   489,   350,    -1,   764,
01463       -1,   551,    -1,   162,   670,   297,    -1,   551,    -1,   552,
01464       -1,   163,   493,   301,   496,   297,    -1,   709,    -1,   496,
01465      690,    -1,   496,   336,    -1,   496,   350,    -1,   496,   737,
01466       -1,   164,   494,   297,    -1,   165,   499,   297,    -1,    -1,
01467      499,   553,    -1,   166,   501,   297,    -1,    -1,   501,   623,
01468       -1,   501,   627,    -1,   167,   503,   503,   297,    -1,   542,
01469       -1,   540,    -1,   168,   505,   506,   507,   297,    -1,   643,
01470       -1,   644,    -1,   644,    -1,   524,    -1,   704,    -1,    -1,
01471      378,    -1,   502,    -1,   169,   509,   297,    -1,   637,    -1,
01472      644,    -1,   643,    -1,   509,   528,    -1,   170,   511,   297,
01473       -1,    -1,   511,   517,    -1,   511,   518,    -1,   511,   450,
01474       -1,   171,   513,   297,    -1,    -1,   513,   517,    -1,   172,
01475      515,   297,    -1,    -1,   515,   517,    -1,   551,    -1,   552,
01476       -1,   173,   519,   297,    -1,    -1,   519,   517,    -1,   519,
01477      510,    -1,   174,   521,   297,    -1,   637,    -1,   644,    -1,
01478      643,    -1,   521,   528,    -1,   175,   523,   297,    -1,   642,
01479       -1,   523,   650,    -1,   523,   350,    -1,   523,   737,    -1,
01480      176,   517,   525,   297,    -1,    -1,   497,    -1,   177,   527,
01481      297,    -1,   516,    -1,   527,   755,    -1,   527,   363,    -1,
01482      527,   331,    -1,   527,   354,    -1,   527,   757,    -1,   527,
01483      699,    -1,   527,   400,    -1,   527,   514,    -1,   527,   512,
01484       -1,   527,   480,    -1,   527,   666,    -1,   527,   650,    -1,
01485      527,   350,    -1,   527,   737,    -1,   178,   529,   297,    -1,
01486       -1,   529,   517,    -1,   529,   510,    -1,   529,   518,    -1,
01487      529,   450,    -1,   179,   531,   532,   297,    -1,   643,    -1,
01488      644,    -1,    -1,   378,    -1,   502,    -1,   180,   534,   535,
01489      297,    -1,   643,    -1,   644,    -1,   637,    -1,   517,    -1,
01490      510,    -1,   518,    -1,   181,   552,   537,   297,    -1,   766,
01491       -1,   537,   766,    -1,   182,   539,   297,    -1,    -1,   539,
01492      542,    -1,   539,   540,    -1,   539,   538,    -1,   183,   541,
01493      297,    -1,   542,    -1,   541,   395,    -1,   543,    -1,   670,
01494       -1,   184,   544,   544,   544,   297,    -1,   670,    -1,   731,
01495       -1,   730,    -1,   185,   546,   297,    -1,    -1,   546,   657,
01496       -1,   186,   548,   297,    -1,    -1,   548,   644,    -1,   548,
01497      637,    -1,   548,   758,    -1,   548,   481,    -1,   187,   550,
01498      297,    -1,   764,    -1,   550,   395,    -1,   764,    -1,   549,
01499       -1,   663,    -1,   764,    -1,   549,    -1,   188,   565,   554,
01500      297,    -1,   481,    -1,   554,   361,    -1,   554,   559,    -1,
01501      554,   430,    -1,   554,   553,    -1,   554,   454,    -1,   554,
01502      352,    -1,   554,   650,    -1,   554,   350,    -1,   554,   737,
01503       -1,   189,   556,   297,    -1,   567,    -1,   556,   559,    -1,
01504      556,   361,    -1,   556,   650,    -1,   556,   350,    -1,   190,
01505      565,   558,   297,    -1,   498,    -1,   558,   430,    -1,   558,
01506      352,    -1,   558,   650,    -1,   558,   350,    -1,   558,   737,
01507       -1,   191,   382,   560,   297,    -1,   378,    -1,   560,   724,
01508       -1,   560,   322,    -1,   192,   562,   297,    -1,    -1,   562,
01509      566,    -1,   562,   567,    -1,   193,   564,   297,    -1,    -1,
01510      564,   567,    -1,   564,   561,    -1,   564,   350,    -1,   564,
01511      737,    -1,   551,    -1,   312,    -1,   552,    -1,   536,    -1,
01512      194,   566,   568,   297,    -1,    -1,   567,    -1,   456,    -1,
01513      750,    -1,   195,   297,    -1,   196,   571,   297,    -1,    -1,
01514      571,   644,    -1,   571,   610,    -1,   197,   668,   573,   297,
01515       -1,   424,    -1,   573,   350,    -1,   573,   737,    -1,   198,
01516      668,   424,   575,   297,    -1,   656,    -1,   682,    -1,   575,
01517      350,    -1,   575,   737,    -1,   199,   577,   297,    -1,    -1,
01518      577,   670,    -1,   577,   578,    -1,   577,   576,    -1,   201,
01519      579,   297,    -1,   670,    -1,   579,   395,    -1,   200,   581,
01520      297,    -1,    -1,   581,   669,    -1,   581,   449,    -1,   581,
01521      350,    -1,   202,   583,   297,    -1,   642,    -1,   583,   736,
01522       -1,   583,   650,    -1,   583,   350,    -1,   583,   737,    -1,
01523      203,   413,   670,   297,    -1,   204,   586,   297,    -1,   364,
01524       -1,   586,   650,    -1,   205,   588,   297,    -1,    43,    -1,
01525       46,    -1,    44,    -1,    45,    -1,    35,    -1,    37,    -1,
01526       38,    -1,    36,    -1,   206,   620,   297,    -1,   207,   668,
01527      424,   424,   591,   297,    -1,   656,    -1,   682,    -1,   591,
01528      350,    -1,   591,   737,    -1,   208,   668,   424,   424,   593,
01529      297,    -1,   656,    -1,   682,    -1,   593,   350,    -1,   593,
01530      737,    -1,   209,   766,   595,   359,   297,    -1,   428,    -1,
01531      434,    -1,   210,   765,   297,    -1,   211,   598,   297,    -1,
01532      464,    -1,   598,   454,    -1,   598,   553,    -1,   598,   557,
01533       -1,   598,   352,    -1,   598,   633,    -1,   598,   599,    -1,
01534      598,   335,    -1,   598,   350,    -1,   598,   737,    -1,   212,
01535      659,   297,    -1,   215,   601,   297,    -1,   740,    -1,   601,
01536      395,    -1,   213,   739,   729,   603,   297,    -1,    -1,   734,
01537       -1,   214,   740,   729,   297,    -1,   216,   606,   297,    -1,
01538      618,    -1,   606,   650,    -1,   217,   608,   297,    -1,   378,
01539       -1,   608,   413,    -1,   218,   766,   297,    -1,   219,   611,
01540      297,    -1,    -1,   611,   644,    -1,   611,   610,    -1,   611,
01541      570,    -1,   221,   613,   297,    -1,    -1,   613,   688,    -1,
01542      222,   615,   297,    -1,    -1,   615,   620,    -1,   615,   616,
01543       -1,   615,   614,    -1,   223,   617,   297,    -1,   620,    -1,
01544      617,   395,    -1,   224,   619,   297,    -1,    -1,   619,   620,
01545       -1,   241,   766,   766,   297,    -1,   225,   622,   297,    -1,
01546      618,    -1,   622,   650,    -1,   226,   624,   297,    -1,   642,
01547       -1,   624,   393,    -1,   624,   736,    -1,   624,   629,    -1,
01548      624,   386,    -1,   624,   370,    -1,   624,   372,    -1,   624,
01549      374,    -1,   624,   376,    -1,   624,   303,    -1,   624,   650,
01550       -1,   624,   350,    -1,   624,   737,    -1,   227,   626,   297,
01551       -1,   644,    -1,   626,   386,    -1,   626,   629,    -1,   626,
01552      370,    -1,   626,   372,    -1,   626,   374,    -1,   626,   376,
01553       -1,   626,   303,    -1,   626,   650,    -1,   626,   350,    -1,
01554      228,   642,   628,   297,    -1,   500,    -1,   628,   650,    -1,
01555      628,   350,    -1,   628,   737,    -1,   229,   382,   630,   297,
01556       -1,   378,    -1,   502,    -1,   630,   724,    -1,   630,   322,
01557       -1,   230,   632,   297,    -1,    -1,   632,   643,    -1,   632,
01558      644,    -1,   231,   634,   297,    -1,   644,    -1,   643,    -1,
01559      634,   357,    -1,   634,   430,    -1,   634,   454,    -1,   634,
01560      352,    -1,   634,   648,    -1,   634,   485,    -1,   634,   650,
01561       -1,   634,   737,    -1,   634,   350,    -1,   232,   636,   297,
01562       -1,   644,    -1,   643,    -1,   636,   736,    -1,   636,   629,
01563       -1,   636,   386,    -1,   636,   370,    -1,   636,   372,    -1,
01564      636,   374,    -1,   636,   376,    -1,   636,   303,    -1,   636,
01565      650,    -1,   636,   350,    -1,   636,   737,    -1,   233,   638,
01566      297,    -1,    -1,   638,   644,    -1,   638,   643,    -1,   234,
01567      642,   637,   297,    -1,   235,   641,   297,    -1,    -1,   641,
01568      644,    -1,   641,   631,    -1,   641,   350,    -1,   641,   737,
01569       -1,   551,    -1,   312,    -1,   552,    -1,   536,    -1,   236,
01570      643,   645,   297,    -1,    -1,   644,    -1,   456,    -1,   750,
01571       -1,   237,   765,   647,   297,    -1,    -1,   741,    -1,   239,
01572      649,   297,    -1,   653,    -1,   649,   395,    -1,   238,   652,
01573      651,   297,    -1,   729,    -1,   651,   596,    -1,   651,   734,
01574       -1,   651,   650,    -1,   651,   350,    -1,   551,    -1,   552,
01575       -1,   240,   655,   297,    -1,    -1,   655,   633,    -1,   655,
01576      430,    -1,   655,   454,    -1,   655,   352,    -1,   655,   335,
01577       -1,   655,   648,    -1,   655,   485,    -1,   655,   600,    -1,
01578      655,   650,    -1,   655,   350,    -1,   655,   737,    -1,   492,
01579       -1,   448,    -1,   319,    -1,   318,    -1,   415,    -1,   324,
01580       -1,   242,   658,   297,    -1,    -1,   658,   656,    -1,   658,
01581      682,    -1,   243,   620,   660,   297,    -1,   620,    -1,   660,
01582      650,    -1,   244,   668,   424,   662,   297,    -1,   657,    -1,
01583      545,    -1,   662,   350,    -1,   662,   737,    -1,   245,   664,
01584      665,   297,    -1,   764,    -1,   549,    -1,   765,    -1,   695,
01585       -1,   246,   667,   297,    -1,    -1,   667,   517,    -1,   551,
01586       -1,   247,   670,   670,   734,   297,    -1,   766,    -1,   115,
01587      766,   766,   297,    -1,   248,   766,   766,   297,    -1,   249,
01588      766,   766,   297,    -1,   250,   674,   297,    -1,   765,    -1,
01589      674,   673,    -1,   674,   765,    -1,   674,   454,    -1,   251,
01590      676,   297,    -1,   364,    -1,   676,   650,    -1,   551,    -1,
01591      252,   679,   297,    -1,   677,    -1,   679,   639,    -1,   679,
01592      756,    -1,   679,   309,    -1,   679,   350,    -1,   679,   737,
01593       -1,   253,   681,   297,    -1,    -1,   681,   526,    -1,   681,
01594      350,    -1,   681,   737,    -1,   254,   683,   297,    -1,    -1,
01595      656,    -1,   255,   750,   685,   297,    -1,    -1,   718,    -1,
01596      256,   687,   297,    -1,    -1,   702,    -1,   257,   689,   297,
01597       -1,   702,    -1,   689,   684,    -1,   258,   691,   297,    -1,
01598       -1,   691,   762,    -1,   691,   350,    -1,   691,   737,    -1,
01599      259,   693,   694,   297,    -1,   643,    -1,   644,    -1,   637,
01600       -1,   404,    -1,   694,   724,    -1,   694,   322,    -1,   261,
01601      698,   297,    -1,   260,   697,   297,    -1,    -1,   697,   765,
01602       -1,   697,   695,    -1,   697,   696,    -1,   765,    -1,   698,
01603      395,    -1,   262,   517,   297,    -1,   263,   701,   297,    -1,
01604       -1,   701,   633,    -1,   701,   430,    -1,   701,   454,    -1,
01605      701,   352,    -1,   701,   307,    -1,   701,   599,    -1,   701,
01606      335,    -1,   701,   648,    -1,   701,   485,    -1,   701,   600,
01607       -1,   701,   650,    -1,   701,   350,    -1,   701,   737,    -1,
01608      264,   703,   297,    -1,    -1,   703,   718,    -1,   265,   705,
01609      297,    -1,    -1,   705,   409,    -1,   705,   706,    -1,   266,
01610      707,   708,   297,    -1,   524,    -1,   644,    -1,   569,    -1,
01611      704,    -1,    -1,   378,    -1,   502,    -1,   267,   710,   297,
01612       -1,   580,    -1,   710,   420,    -1,   710,   418,    -1,   710,
01613      680,    -1,   710,   389,    -1,   710,   350,    -1,   710,   737,
01614       -1,   268,   766,   297,    -1,   269,   713,   714,   297,    -1,
01615      413,    -1,   584,    -1,   413,    -1,   584,    -1,   404,    -1,
01616      270,   766,   766,   766,   766,   766,   766,   297,    -1,   271,
01617      717,   297,    -1,   382,    -1,   717,   607,    -1,   717,   443,
01618       -1,   717,   350,    -1,   717,   737,    -1,   272,   719,   720,
01619      721,   722,   723,   297,    -1,    -1,   671,    -1,    -1,   672,
01620       -1,    -1,   380,    -1,    -1,   587,    -1,    -1,   589,    -1,
01621      273,   725,   725,   297,    -1,   517,    -1,   510,    -1,   518,
01622       -1,   274,   727,   297,    -1,    -1,   727,   344,    -1,   727,
01623      692,    -1,   727,   453,    -1,   275,   297,    -1,   327,    -1,
01624      468,    -1,   538,    -1,   576,    -1,   614,    -1,   696,    -1,
01625      276,   297,    -1,   277,   297,    -1,   278,   733,   297,    -1,
01626      428,    -1,   434,    -1,   733,   428,    -1,   733,   434,    -1,
01627      279,   735,   297,    -1,    17,    -1,    10,    -1,    16,    -1,
01628       48,    -1,    54,    -1,    56,    -1,    61,    -1,    33,    -1,
01629       22,    -1,    25,    -1,    19,    -1,    42,    -1,    14,    -1,
01630       15,    -1,    21,    -1,     7,    -1,   280,   297,    -1,   281,
01631      738,   297,    -1,   764,    -1,   738,   766,    -1,   738,   765,
01632       -1,   738,   764,    -1,   738,   445,    -1,   551,    -1,   312,
01633       -1,   552,    -1,   536,    -1,   282,   765,   297,    -1,   283,
01634      748,   752,   743,   297,    -1,   470,    -1,   743,   690,    -1,
01635      743,   355,    -1,   743,   350,    -1,   743,   650,    -1,   743,
01636      737,    -1,   284,   745,   297,    -1,    -1,   745,   750,    -1,
01637      745,   744,    -1,   285,   747,   297,    -1,    -1,   747,   640,
01638       -1,   747,   625,    -1,   747,   462,    -1,   747,   458,    -1,
01639      747,   563,    -1,   747,   555,    -1,   747,   350,    -1,   747,
01640      737,    -1,   551,    -1,   552,    -1,   286,   749,   751,   297,
01641       -1,    -1,   339,    -1,   287,   753,   297,    -1,    32,    -1,
01642       41,    -1,    39,    -1,    51,    -1,    53,    -1,     8,    -1,
01643       28,    -1,    18,    -1,    24,    -1,    52,    -1,   288,   332,
01644      297,    -1,   289,   542,   297,    -1,   290,   516,   670,   528,
01645      297,    -1,   291,   517,   297,    -1,   292,   759,   297,    -1,
01646       -1,   759,   644,    -1,   759,   637,    -1,   759,   481,    -1,
01647      293,   761,   297,    -1,   726,    -1,   761,   305,    -1,   761,
01648      440,    -1,   761,   530,    -1,   761,   504,    -1,   761,   350,
01649       -1,   761,   737,    -1,   294,   763,   297,    -1,   715,    -1,
01650      763,   320,    -1,   763,   646,    -1,   763,   368,    -1,   763,
01651      650,    -1,   763,   350,    -1,   763,   737,    -1,     3,    -1,
01652        6,    -1,     4,    -1,     5,    -1
01653 };
01654 
01655 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
01656 static const yytype_uint16 yyrline[] =
01657 {
01658        0,   505,   505,   508,   511,   512,   513,   514,   515,   516,
01659      517,   520,   523,   526,   530,   533,   534,   537,   540,   541,
01660      542,   543,   544,   545,   548,   551,   552,   555,   558,   559,
01661      560,   561,   562,   565,   568,   571,   572,   575,   578,   581,
01662      582,   583,   584,   585,   588,   591,   594,   597,   600,   603,
01663      606,   607,   608,   611,   614,   615,   618,   619,   622,   625,
01664      626,   627,   628,   631,   634,   635,   638,   641,   642,   645,
01665      648,   651,   654,   657,   658,   659,   660,   661,   662,   663,
01666      666,   669,   672,   673,   676,   679,   682,   683,   684,   687,
01667      690,   691,   692,   695,   696,   697,   700,   703,   704,   707,
01668      710,   713,   714,   717,   720,   721,   722,   723,   724,   725,
01669      726,   727,   730,   733,   736,   737,   738,   739,   740,   741,
01670      742,   743,   744,   745,   746,   747,   748,   749,   750,   751,
01671      752,   753,   756,   759,   760,   763,   766,   767,   768,   771,
01672      774,   775,   778,   781,   784,   785,   786,   789,   792,   793,
01673      796,   799,   800,   803,   806,   807,   810,   813,   814,   817,
01674      820,   821,   824,   827,   828,   831,   834,   835,   838,   841,
01675      842,   845,   848,   849,   850,   853,   856,   857,   858,   859,
01676      860,   863,   866,   867,   870,   873,   876,   877,   878,   879,
01677      880,   881,   882,   883,   884,   885,   886,   887,   888,   889,
01678      890,   893,   896,   897,   898,   899,   902,   905,   906,   907,
01679      910,   913,   914,   917,   918,   921,   922,   925,   926,   929,
01680      932,   933,   936,   939,   940,   943,   946,   950,   951,   952,
01681      953,   956,   959,   960,   961,   964,   968,   969,   970,   973,
01682      974,   975,   976,   979,   980,   981,   984,   987,   988,   989,
01683      990,   991,   992,   993,   996,   999,  1002,  1003,  1004,  1005,
01684     1006,  1009,  1012,  1015,  1018,  1019,  1020,  1021,  1022,  1023,
01685     1024,  1025,  1026,  1027,  1028,  1029,  1030,  1031,  1034,  1037,
01686     1040,  1043,  1044,  1045,  1048,  1051,  1052,  1053,  1054,  1055,
01687     1056,  1057,  1058,  1059,  1060,  1061,  1062,  1063,  1066,  1069,
01688     1070,  1073,  1076,  1077,  1078,  1079,  1080,  1081,  1082,  1083,
01689     1084,  1085,  1086,  1089,  1092,  1093,  1094,  1095,  1098,  1099,
01690     1100,  1101,  1102,  1105,  1108,  1109,  1110,  1111,  1114,  1117,
01691     1118,  1119,  1120,  1123,  1126,  1129,  1130,  1133,  1134,  1135,
01692     1136,  1139,  1142,  1143,  1146,  1149,  1150,  1151,  1152,  1153,
01693     1156,  1159,  1162,  1165,  1168,  1171,  1172,  1175,  1178,  1181,
01694     1182,  1183,  1184,  1185,  1186,  1187,  1188,  1189,  1190,  1193,
01695     1196,  1197,  1198,  1201,  1204,  1205,  1206,  1207,  1208,  1211,
01696     1214,  1215,  1218,  1221,  1222,  1223,  1224,  1225,  1228,  1229,
01697     1232,  1233,  1236,  1239,  1240,  1243,  1246,  1247,  1248,  1249,
01698     1252,  1255,  1256,  1257,  1258,  1259,  1260,  1261,  1262,  1263,
01699     1264,  1265,  1266,  1267,  1268,  1269,  1270,  1271,  1274,  1278,
01700     1279,  1280,  1281,  1284,  1287,  1288,  1289,  1290,  1293,  1296,
01701     1297,  1298,  1299,  1302,  1305,  1306,  1309,  1312,  1315,  1316,
01702     1317,  1318,  1321,  1324,  1325,  1326,  1327,  1328,  1329,  1330,
01703     1331,  1332,  1335,  1338,  1339,  1342,  1345,  1348,  1349,  1352,
01704     1355,  1358,  1361,  1364,  1367,  1370,  1371,  1372,  1373,  1374,
01705     1377,  1380,  1383,  1384,  1387,  1390,  1391,  1392,  1395,  1398,
01706     1399,  1402,  1405,  1406,  1409,  1410,  1411,  1414,  1415,  1416,
01707     1419,  1422,  1423,  1424,  1425,  1428,  1431,  1432,  1433,  1434,
01708     1437,  1440,  1441,  1444,  1447,  1448,  1451,  1454,  1457,  1460,
01709     1461,  1462,  1465,  1468,  1469,  1470,  1471,  1474,  1477,  1478,
01710     1479,  1480,  1483,  1486,  1487,  1490,  1493,  1494,  1495,  1496,
01711     1497,  1498,  1499,  1500,  1501,  1502,  1503,  1504,  1505,  1506,
01712     1507,  1510,  1513,  1514,  1515,  1516,  1517,  1520,  1523,  1524,
01713     1527,  1528,  1529,  1532,  1535,  1536,  1537,  1540,  1541,  1542,
01714     1545,  1548,  1549,  1552,  1555,  1556,  1557,  1558,  1561,  1564,
01715     1565,  1568,  1569,  1572,  1575,  1576,  1577,  1580,  1583,  1584,
01716     1587,  1590,  1591,  1592,  1593,  1594,  1597,  1600,  1601,  1604,
01717     1605,  1606,  1609,  1610,  1613,  1616,  1617,  1618,  1619,  1620,
01718     1621,  1622,  1623,  1624,  1625,  1628,  1631,  1632,  1633,  1634,
01719     1635,  1638,  1641,  1642,  1643,  1644,  1645,  1646,  1649,  1652,
01720     1653,  1654,  1657,  1660,  1661,  1662,  1665,  1668,  1669,  1670,
01721     1671,  1672,  1675,  1676,  1680,  1681,  1684,  1687,  1688,  1689,
01722     1690,  1693,  1696,  1699,  1700,  1701,  1704,  1707,  1708,  1709,
01723     1712,  1715,  1716,  1717,  1718,  1721,  1724,  1725,  1726,  1727,
01724     1730,  1733,  1734,  1737,  1740,  1741,  1742,  1743,  1746,  1749,
01725     1750,  1751,  1752,  1753,  1756,  1759,  1762,  1763,  1766,  1769,
01726     1770,  1771,  1772,  1773,  1774,  1775,  1776,  1779,  1782,  1786,
01727     1787,  1788,  1789,  1792,  1796,  1797,  1798,  1799,  1802,  1805,
01728     1806,  1809,  1812,  1815,  1816,  1817,  1818,  1819,  1820,  1821,
01729     1822,  1823,  1824,  1827,  1830,  1833,  1834,  1837,  1840,  1841,
01730     1844,  1847,  1850,  1851,  1854,  1857,  1858,  1861,  1864,  1867,
01731     1868,  1869,  1870,  1873,  1876,  1877,  1880,  1883,  1884,  1885,
01732     1886,  1889,  1892,  1893,  1896,  1899,  1900,  1903,  1906,  1909,
01733     1910,  1913,  1916,  1917,  1918,  1919,  1920,  1921,  1922,  1923,
01734     1924,  1925,  1926,  1927,  1928,  1931,  1934,  1935,  1936,  1937,
01735     1938,  1939,  1940,  1941,  1942,  1943,  1946,  1949,  1950,  1951,
01736     1952,  1955,  1958,  1959,  1960,  1961,  1964,  1967,  1968,  1969,
01737     1972,  1975,  1976,  1977,  1978,  1979,  1980,  1981,  1982,  1983,
01738     1984,  1985,  1988,  1991,  1992,  1993,  1994,  1995,  1996,  1997,
01739     1998,  1999,  2000,  2001,  2002,  2003,  2006,  2009,  2010,  2011,
01740     2014,  2017,  2020,  2021,  2022,  2023,  2024,  2027,  2028,  2031,
01741     2032,  2035,  2050,  2051,  2052,  2053,  2056,  2059,  2060,  2063,
01742     2066,  2067,  2070,  2073,  2074,  2075,  2076,  2077,  2080,  2083,
01743     2086,  2089,  2090,  2091,  2092,  2093,  2094,  2095,  2096,  2097,
01744     2098,  2099,  2100,  2103,  2104,  2105,  2106,  2107,  2108,  2111,
01745     2114,  2115,  2116,  2119,  2122,  2123,  2126,  2129,  2130,  2131,
01746     2132,  2135,  2139,  2140,  2143,  2144,  2147,  2150,  2151,  2154,
01747     2157,  2160,  2161,  2164,  2167,  2170,  2173,  2174,  2175,  2176,
01748     2179,  2182,  2183,  2186,  2189,  2192,  2193,  2194,  2195,  2196,
01749     2197,  2200,  2203,  2204,  2205,  2206,  2209,  2212,  2213,  2216,
01750     2219,  2220,  2223,  2226,  2227,  2230,  2233,  2234,  2237,  2240,
01751     2241,  2242,  2243,  2246,  2249,  2250,  2251,  2254,  2255,  2256,
01752     2259,  2262,  2265,  2266,  2267,  2268,  2271,  2272,  2275,  2278,
01753     2281,  2282,  2283,  2284,  2285,  2286,  2287,  2288,  2289,  2290,
01754     2291,  2292,  2293,  2294,  2297,  2300,  2301,  2304,  2307,  2308,
01755     2309,  2312,  2315,  2316,  2317,  2318,  2321,  2322,  2323,  2326,
01756     2329,  2330,  2331,  2332,  2333,  2334,  2335,  2338,  2341,  2344,
01757     2345,  2348,  2349,  2350,  2353,  2357,  2360,  2361,  2362,  2363,
01758     2364,  2367,  2371,  2372,  2375,  2376,  2379,  2380,  2383,  2384,
01759     2387,  2388,  2391,  2394,  2395,  2396,  2399,  2402,  2403,  2404,
01760     2405,  2408,  2411,  2412,  2413,  2414,  2415,  2416,  2419,  2422,
01761     2425,  2428,  2429,  2430,  2431,  2434,  2437,  2438,  2439,  2440,
01762     2441,  2442,  2443,  2444,  2445,  2446,  2447,  2448,  2449,  2450,
01763     2451,  2452,  2455,  2458,  2461,  2462,  2463,  2464,  2465,  2468,
01764     2469,  2472,  2473,  2476,  2479,  2482,  2483,  2484,  2485,  2486,
01765     2487,  2490,  2493,  2494,  2495,  2498,  2501,  2502,  2503,  2504,
01766     2505,  2506,  2507,  2508,  2509,  2512,  2515,  2518,  2521,  2522,
01767     2525,  2528,  2529,  2530,  2531,  2532,  2533,  2534,  2535,  2536,
01768     2537,  2540,  2543,  2546,  2549,  2552,  2555,  2556,  2557,  2558,
01769     2561,  2564,  2565,  2566,  2567,  2568,  2569,  2570,  2573,  2576,
01770     2577,  2578,  2579,  2580,  2581,  2582,  2585,  2588,  2591,  2594
01771 };
01772 #endif
01773 
01774 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
01775 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
01776    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
01777 static const char *const yytname[] =
01778 {
01779   "$end", "error", "$undefined", "EDIF_TOK_IDENT", "EDIF_TOK_INT",
01780   "EDIF_TOK_KEYWORD", "EDIF_TOK_STR", "EDIF_TOK_ANGLE",
01781   "EDIF_TOK_BEHAVIOR", "EDIF_TOK_CALCULATED", "EDIF_TOK_CAPACITANCE",
01782   "EDIF_TOK_CENTERCENTER", "EDIF_TOK_CENTERLEFT", "EDIF_TOK_CENTERRIGHT",
01783   "EDIF_TOK_CHARGE", "EDIF_TOK_CONDUCTANCE", "EDIF_TOK_CURRENT",
01784   "EDIF_TOK_DISTANCE", "EDIF_TOK_DOCUMENT", "EDIF_TOK_ENERGY",
01785   "EDIF_TOK_EXTEND", "EDIF_TOK_FLUX", "EDIF_TOK_FREQUENCY",
01786   "EDIF_TOK_GENERIC", "EDIF_TOK_GRAPHIC", "EDIF_TOK_INDUCTANCE",
01787   "EDIF_TOK_INOUT", "EDIF_TOK_INPUT", "EDIF_TOK_LOGICMODEL",
01788   "EDIF_TOK_LOWERCENTER", "EDIF_TOK_LOWERLEFT", "EDIF_TOK_LOWERRIGHT",
01789   "EDIF_TOK_MASKLAYOUT", "EDIF_TOK_MASS", "EDIF_TOK_MEASURED",
01790   "EDIF_TOK_MX", "EDIF_TOK_MXR90", "EDIF_TOK_MY", "EDIF_TOK_MYR90",
01791   "EDIF_TOK_NETLIST", "EDIF_TOK_OUTPUT", "EDIF_TOK_PCBLAYOUT",
01792   "EDIF_TOK_POWER", "EDIF_TOK_R0", "EDIF_TOK_R180", "EDIF_TOK_R270",
01793   "EDIF_TOK_R90", "EDIF_TOK_REQUIRED", "EDIF_TOK_RESISTANCE",
01794   "EDIF_TOK_RIPPER", "EDIF_TOK_ROUND", "EDIF_TOK_SCHEMATIC",
01795   "EDIF_TOK_STRANGER", "EDIF_TOK_SYMBOLIC", "EDIF_TOK_TEMPERATURE",
01796   "EDIF_TOK_TIE", "EDIF_TOK_TIME", "EDIF_TOK_TRUNCATE",
01797   "EDIF_TOK_UPPERCENTER", "EDIF_TOK_UPPERLEFT", "EDIF_TOK_UPPERRIGHT",
01798   "EDIF_TOK_VOLTAGE", "EDIF_TOK_ACLOAD", "EDIF_TOK_AFTER",
01799   "EDIF_TOK_ANNOTATE", "EDIF_TOK_APPLY", "EDIF_TOK_ARC", "EDIF_TOK_ARRAY",
01800   "EDIF_TOK_ARRAYMACRO", "EDIF_TOK_ARRAYRELATEDINFO", "EDIF_TOK_ARRAYSITE",
01801   "EDIF_TOK_ATLEAST", "EDIF_TOK_ATMOST", "EDIF_TOK_AUTHOR",
01802   "EDIF_TOK_BASEARRAY", "EDIF_TOK_BECOMES", "EDIF_TOK_BETWEEN",
01803   "EDIF_TOK_BOOLEAN", "EDIF_TOK_BOOLEANDISPLAY", "EDIF_TOK_BOOLEANMAP",
01804   "EDIF_TOK_BORDERPATTERN", "EDIF_TOK_BORDERWIDTH", "EDIF_TOK_BOUNDINGBOX",
01805   "EDIF_TOK_CELL", "EDIF_TOK_CELLREF", "EDIF_TOK_CELLTYPE",
01806   "EDIF_TOK_CHANGE", "EDIF_TOK_CIRCLE", "EDIF_TOK_COLOR",
01807   "EDIF_TOK_COMMENT", "EDIF_TOK_COMMENTGRAPHICS", "EDIF_TOK_COMPOUND",
01808   "EDIF_TOK_CONNECTLOCATION", "EDIF_TOK_CONTENTS", "EDIF_TOK_CORNERTYPE",
01809   "EDIF_TOK_CRITICALITY", "EDIF_TOK_CURRENTMAP", "EDIF_TOK_CURVE",
01810   "EDIF_TOK_CYCLE", "EDIF_TOK_DATAORIGIN", "EDIF_TOK_DCFANINLOAD",
01811   "EDIF_TOK_DCFANOUTLOAD", "EDIF_TOK_DCMAXFANIN", "EDIF_TOK_DCMAXFANOUT",
01812   "EDIF_TOK_DELAY", "EDIF_TOK_DELTA", "EDIF_TOK_DERIVATION",
01813   "EDIF_TOK_DESIGN", "EDIF_TOK_DESIGNATOR", "EDIF_TOK_DIFFERENCE",
01814   "EDIF_TOK_DIRECTION", "EDIF_TOK_DISPLAY", "EDIF_TOK_DOMINATES",
01815   "EDIF_TOK_DOT", "EDIF_TOK_DURATION", "EDIF_TOK_E", "EDIF_TOK_EDIF",
01816   "EDIF_TOK_EDIFLEVEL", "EDIF_TOK_EDIFVERSION",
01817   "EDIF_TOK_ENCLOSUREDISTANCE", "EDIF_TOK_ENDTYPE", "EDIF_TOK_ENTRY",
01818   "EDIF_TOK_EVENT", "EDIF_TOK_EXACTLY", "EDIF_TOK_EXTERNAL",
01819   "EDIF_TOK_FABRICATE", "EDIF_TOK_FALSE", "EDIF_TOK_FIGURE",
01820   "EDIF_TOK_FIGUREAREA", "EDIF_TOK_FIGUREGROUP",
01821   "EDIF_TOK_FIGUREGROUPOBJECT", "EDIF_TOK_FIGUREGROUPOVERRIDE",
01822   "EDIF_TOK_FIGUREGROUPREF", "EDIF_TOK_FIGUREPERIMETER",
01823   "EDIF_TOK_FIGUREWIDTH", "EDIF_TOK_FILLPATTERN", "EDIF_TOK_FOLLOW",
01824   "EDIF_TOK_FORBIDDENEVENT", "EDIF_TOK_GLOBALPORTREF",
01825   "EDIF_TOK_GREATERTHAN", "EDIF_TOK_GRIDMAP", "EDIF_TOK_IGNORE",
01826   "EDIF_TOK_INCLUDEFIGUREGROUP", "EDIF_TOK_INITIAL", "EDIF_TOK_INSTANCE",
01827   "EDIF_TOK_INSTANCEBACKANNOTATE", "EDIF_TOK_INSTANCEGROUP",
01828   "EDIF_TOK_INSTANCEMAP", "EDIF_TOK_INSTANCEREF", "EDIF_TOK_INTEGER",
01829   "EDIF_TOK_INTEGERDISPLAY", "EDIF_TOK_INTERFACE",
01830   "EDIF_TOK_INTERFIGUREGROUPSPACING", "EDIF_TOK_INTERSECTION",
01831   "EDIF_TOK_INTRAFIGUREGROUPSPACING", "EDIF_TOK_INVERSE",
01832   "EDIF_TOK_ISOLATED", "EDIF_TOK_JOINED", "EDIF_TOK_JUSTIFY",
01833   "EDIF_TOK_KEYWORDDISPLAY", "EDIF_TOK_KEYWORDLEVEL",
01834   "EDIF_TOK_KEYWORDMAP", "EDIF_TOK_LESSTHAN", "EDIF_TOK_LIBRARY",
01835   "EDIF_TOK_LIBRARYREF", "EDIF_TOK_LISTOFNETS", "EDIF_TOK_LISTOFPORTS",
01836   "EDIF_TOK_LOADDELAY", "EDIF_TOK_LOGICASSIGN", "EDIF_TOK_LOGICINPUT",
01837   "EDIF_TOK_LOGICLIST", "EDIF_TOK_LOGICMAPINPUT",
01838   "EDIF_TOK_LOGICMAPOUTPUT", "EDIF_TOK_LOGICONEOF", "EDIF_TOK_LOGICOUTPUT",
01839   "EDIF_TOK_LOGICPORT", "EDIF_TOK_LOGICREF", "EDIF_TOK_LOGICVALUE",
01840   "EDIF_TOK_LOGICWAVEFORM", "EDIF_TOK_MAINTAIN", "EDIF_TOK_MATCH",
01841   "EDIF_TOK_MEMBER", "EDIF_TOK_MINOMAX", "EDIF_TOK_MINOMAXDISPLAY",
01842   "EDIF_TOK_MNM", "EDIF_TOK_MULTIPLEVALUESET", "EDIF_TOK_MUSTJOIN",
01843   "EDIF_TOK_NAME", "EDIF_TOK_NET", "EDIF_TOK_NETBACKANNOTATE",
01844   "EDIF_TOK_NETBUNDLE", "EDIF_TOK_NETDELAY", "EDIF_TOK_NETGROUP",
01845   "EDIF_TOK_NETMAP", "EDIF_TOK_NETREF", "EDIF_TOK_NOCHANGE",
01846   "EDIF_TOK_NONPERMUTABLE", "EDIF_TOK_NOTALLOWED", "EDIF_TOK_NOTCHSPACING",
01847   "EDIF_TOK_NUMBER", "EDIF_TOK_NUMBERDEFINITION", "EDIF_TOK_NUMBERDISPLAY",
01848   "EDIF_TOK_OFFPAGECONNECTOR", "EDIF_TOK_OFFSETEVENT",
01849   "EDIF_TOK_OPENSHAPE", "EDIF_TOK_ORIENTATION", "EDIF_TOK_ORIGIN",
01850   "EDIF_TOK_OVERHANGDISTANCE", "EDIF_TOK_OVERLAPDISTANCE",
01851   "EDIF_TOK_OVERSIZE", "EDIF_TOK_OWNER", "EDIF_TOK_PAGE",
01852   "EDIF_TOK_PAGESIZE", "EDIF_TOK_PARAMETER", "EDIF_TOK_PARAMETERASSIGN",
01853   "EDIF_TOK_PARAMETERDISPLAY", "EDIF_TOK_PATH", "EDIF_TOK_PATHDELAY",
01854   "EDIF_TOK_PATHWIDTH", "EDIF_TOK_PERMUTABLE",
01855   "EDIF_TOK_PHYSICALDESIGNRULE", "EDIF_TOK_PLUG", "EDIF_TOK_POINT",
01856   "EDIF_TOK_POINTDISPLAY", "EDIF_TOK_POINTLIST", "EDIF_TOK_POLYGON",
01857   "EDIF_TOK_PORT", "EDIF_TOK_PORTBACKANNOTATE", "EDIF_TOK_PORTBUNDLE",
01858   "EDIF_TOK_PORTDELAY", "EDIF_TOK_PORTGROUP",
01859   "EDIF_TOK_PORTIMPLEMENTATION", "EDIF_TOK_PORTINSTANCE",
01860   "EDIF_TOK_PORTLIST", "EDIF_TOK_PORTLISTALIAS", "EDIF_TOK_PORTMAP",
01861   "EDIF_TOK_PORTREF", "EDIF_TOK_PROGRAM", "EDIF_TOK_PROPERTY",
01862   "EDIF_TOK_PROPERTYDISPLAY", "EDIF_TOK_PROTECTIONFRAME", "EDIF_TOK_PT",
01863   "EDIF_TOK_RANGEVECTOR", "EDIF_TOK_RECTANGLE", "EDIF_TOK_RECTANGLESIZE",
01864   "EDIF_TOK_RENAME", "EDIF_TOK_RESOLVES", "EDIF_TOK_SCALE",
01865   "EDIF_TOK_SCALEX", "EDIF_TOK_SCALEY", "EDIF_TOK_SECTION",
01866   "EDIF_TOK_SHAPE", "EDIF_TOK_SIMULATE", "EDIF_TOK_SIMULATIONINFO",
01867   "EDIF_TOK_SINGLEVALUESET", "EDIF_TOK_SITE", "EDIF_TOK_SOCKET",
01868   "EDIF_TOK_SOCKETSET", "EDIF_TOK_STATUS", "EDIF_TOK_STEADY",
01869   "EDIF_TOK_STRING", "EDIF_TOK_STRINGDISPLAY", "EDIF_TOK_STRONG",
01870   "EDIF_TOK_SYMBOL", "EDIF_TOK_SYMMETRY", "EDIF_TOK_TABLE",
01871   "EDIF_TOK_TABLEDEFAULT", "EDIF_TOK_TECHNOLOGY", "EDIF_TOK_TEXTHEIGHT",
01872   "EDIF_TOK_TIMEINTERVAL", "EDIF_TOK_TIMESTAMP", "EDIF_TOK_TIMING",
01873   "EDIF_TOK_TRANSFORM", "EDIF_TOK_TRANSITION", "EDIF_TOK_TRIGGER",
01874   "EDIF_TOK_TRUE", "EDIF_TOK_UNCONSTRAINED", "EDIF_TOK_UNDEFINED",
01875   "EDIF_TOK_UNION", "EDIF_TOK_UNIT", "EDIF_TOK_UNUSED",
01876   "EDIF_TOK_USERDATA", "EDIF_TOK_VERSION", "EDIF_TOK_VIEW",
01877   "EDIF_TOK_VIEWLIST", "EDIF_TOK_VIEWMAP", "EDIF_TOK_VIEWREF",
01878   "EDIF_TOK_VIEWTYPE", "EDIF_TOK_VISIBLE", "EDIF_TOK_VOLTAGEMAP",
01879   "EDIF_TOK_WAVEVALUE", "EDIF_TOK_WEAK", "EDIF_TOK_WEAKJOINED",
01880   "EDIF_TOK_WHEN", "EDIF_TOK_WRITTEN", "')'", "$accept", "PopC", "Edif",
01881   "_Edif", "EdifFileName", "EdifLevel", "EdifVersion", "AcLoad", "_AcLoad",
01882   "After", "_After", "Annotate", "_Annotate", "Apply", "_Apply", "Arc",
01883   "Array", "_Array", "ArrayMacro", "ArrayRelInfo", "_ArrayRelInfo",
01884   "ArraySite", "AtLeast", "AtMost", "Author", "BaseArray", "Becomes",
01885   "_Becomes", "Between", "__Between", "_Between", "Boolean", "_Boolean",
01886   "BooleanDisp", "_BooleanDisp", "BooleanMap", "BooleanValue", "BorderPat",
01887   "BorderWidth", "BoundBox", "Cell", "_Cell", "CellNameDef", "CellRef",
01888   "_CellRef", "CellNameRef", "CellType", "_CellType", "Change", "__Change",
01889   "_Change", "Circle", "_Circle", "Color", "Comment", "_Comment",
01890   "CommGraph", "_CommGraph", "Compound", "Contents", "_Contents",
01891   "ConnectLoc", "_ConnectLoc", "CornerType", "_CornerType", "Criticality",
01892   "_Criticality", "CurrentMap", "Curve", "_Curve", "Cycle", "_Cycle",
01893   "DataOrigin", "_DataOrigin", "DcFanInLoad", "_DcFanInLoad",
01894   "DcFanOutLoad", "_DcFanOutLoad", "DcMaxFanIn", "_DcMaxFanIn",
01895   "DcMaxFanOut", "_DcMaxFanOut", "Delay", "_Delay", "Delta", "_Delta",
01896   "Derivation", "_Derivation", "Design", "_Design", "Designator",
01897   "_Designator", "DesignNameDef", "DesignRule", "_DesignRule",
01898   "Difference", "_Difference", "Direction", "_Direction", "Display",
01899   "_Display", "_DisplayJust", "_DisplayOrien", "_DisplayOrg", "Dominates",
01900   "_Dominates", "Dot", "_Dot", "Duration", "EncloseDist", "_EncloseDist",
01901   "EndType", "_EndType", "Entry", "___Entry", "__Entry", "_Entry", "Event",
01902   "_Event", "Exactly", "External", "_External", "Fabricate", "False",
01903   "FigGrp", "_FigGrp", "FigGrpNameDef", "FigGrpNameRef", "FigGrpObj",
01904   "_FigGrpObj", "FigGrpOver", "_FigGrpOver", "FigGrpRef", "_FigGrpRef",
01905   "Figure", "_Figure", "FigureArea", "_FigureArea", "FigureOp",
01906   "FigurePerim", "_FigurePerim", "FigureWidth", "_FigureWidth",
01907   "FillPattern", "Follow", "__Follow", "_Follow", "Forbidden",
01908   "_Forbidden", "Form", "_Form", "GlobPortRef", "GreaterThan", "GridMap",
01909   "Ignore", "IncFigGrp", "_IncFigGrp", "Initial", "Instance", "_Instance",
01910   "InstanceRef", "_InstanceRef", "InstBackAn", "_InstBackAn", "InstGroup",
01911   "_InstGroup", "InstMap", "_InstMap", "InstNameDef", "InstNameRef",
01912   "IntDisplay", "_IntDisplay", "Integer", "_Integer", "Interface",
01913   "_Interface", "InterFigGrp", "_InterFigGrp", "Intersection",
01914   "_Intersection", "IntraFigGrp", "_IntraFigGrp", "Inverse", "_Inverse",
01915   "Isolated", "Joined", "_Joined", "Justify", "_Justify", "KeywordDisp",
01916   "_KeywordDisp", "KeywordLevel", "KeywordMap", "_KeywordMap",
01917   "KeywordName", "LayerNameDef", "LessThan", "LibNameDef", "LibNameRef",
01918   "Library", "_Library", "LibraryRef", "ListOfNets", "_ListOfNets",
01919   "ListOfPorts", "_ListOfPorts", "LoadDelay", "_LoadDelay", "LogicAssn",
01920   "___LogicAssn", "__LogicAssn", "_LogicAssn", "LogicIn", "_LogicIn",
01921   "LogicList", "_LogicList", "LogicMapIn", "_LogicMapIn", "LogicMapOut",
01922   "_LogicMapOut", "LogicNameDef", "LogicNameRef", "LogicOneOf",
01923   "_LogicOneOf", "LogicOut", "_LogicOut", "LogicPort", "_LogicPort",
01924   "LogicRef", "_LogicRef", "LogicValue", "_LogicValue", "LogicWave",
01925   "_LogicWave", "Maintain", "__Maintain", "_Maintain", "Match", "__Match",
01926   "_Match", "Member", "_Member", "MiNoMa", "_MiNoMa", "MiNoMaDisp",
01927   "_MiNoMaDisp", "MiNoMaValue", "Mnm", "_Mnm", "MultValSet", "_MultValSet",
01928   "MustJoin", "_MustJoin", "Name", "_Name", "NameDef", "NameRef", "Net",
01929   "_Net", "NetBackAn", "_NetBackAn", "NetBundle", "_NetBundle", "NetDelay",
01930   "_NetDelay", "NetGroup", "_NetGroup", "NetMap", "_NetMap", "NetNameDef",
01931   "NetNameRef", "NetRef", "_NetRef", "NoChange", "NonPermut", "_NonPermut",
01932   "NotAllowed", "_NotAllowed", "NotchSpace", "_NotchSpace", "Number",
01933   "_Number", "NumbDisplay", "_NumbDisplay", "NumberDefn", "_NumberDefn",
01934   "OffPageConn", "_OffPageConn", "OffsetEvent", "OpenShape", "_OpenShape",
01935   "Orientation", "_Orientation", "Origin", "OverhngDist", "_OverhngDist",
01936   "OverlapDist", "_OverlapDist", "Oversize", "_Oversize", "Owner", "Page",
01937   "_Page", "PageSize", "ParamDisp", "_ParamDisp", "Parameter",
01938   "_Parameter", "ParamAssign", "Path", "_Path", "PathDelay", "_PathDelay",
01939   "PathWidth", "Permutable", "_Permutable", "Plug", "_Plug", "Point",
01940   "_Point", "PointDisp", "_PointDisp", "PointList", "_PointList",
01941   "PointValue", "Polygon", "_Polygon", "Port", "_Port", "PortBackAn",
01942   "_PortBackAn", "PortBundle", "_PortBundle", "PortDelay", "_PortDelay",
01943   "PortGroup", "_PortGroup", "PortImpl", "_PortImpl", "PortInst",
01944   "_PortInst", "PortList", "_PortList", "PortListAls", "PortMap",
01945   "_PortMap", "PortNameDef", "PortNameRef", "PortRef", "_PortRef",
01946   "Program", "_Program", "PropDisplay", "_PropDisplay", "Property",
01947   "_Property", "PropNameDef", "PropNameRef", "ProtectFrame",
01948   "_ProtectFrame", "Range", "RangeVector", "_RangeVector", "Rectangle",
01949   "_Rectangle", "RectSize", "_RectSize", "Rename", "__Rename", "_Rename",
01950   "Resolves", "_Resolves", "RuleNameDef", "Scale", "ScaledInt", "ScaleX",
01951   "ScaleY", "Section", "_Section", "Shape", "_Shape", "SimNameDef",
01952   "Simulate", "_Simulate", "SimulInfo", "_SimulInfo", "SingleValSet",
01953   "_SingleValSet", "Site", "_Site", "Socket", "_Socket", "SocketSet",
01954   "_SocketSet", "Status", "_Status", "Steady", "__Steady", "_Steady",
01955   "StrDisplay", "String", "_String", "_StrDisplay", "Strong", "Symbol",
01956   "_Symbol", "Symmetry", "_Symmetry", "Table", "_Table", "TableDeflt",
01957   "__TableDeflt", "_TableDeflt", "Technology", "_Technology", "TextHeight",
01958   "TimeIntval", "__TimeIntval", "_TimeIntval", "TimeStamp", "Timing",
01959   "_Timing", "Transform", "_TransX", "_TransY", "_TransDelta",
01960   "_TransOrien", "_TransOrg", "Transition", "_Transition", "Trigger",
01961   "_Trigger", "True", "TypedValue", "Unconstrained", "Undefined", "Union",
01962   "_Union", "Unit", "_Unit", "Unused", "UserData", "_UserData",
01963   "ValueNameDef", "ValueNameRef", "Version", "View", "_View", "ViewList",
01964   "_ViewList", "ViewMap", "_ViewMap", "ViewNameDef", "ViewNameRef",
01965   "ViewRef", "_ViewRef", "ViewType", "_ViewType", "Visible", "VoltageMap",
01966   "WaveValue", "Weak", "WeakJoined", "_WeakJoined", "When", "_When",
01967   "Written", "_Written", "Ident", "Str", "Int", "Keyword", 0
01968 };
01969 #endif
01970 
01971 # ifdef YYPRINT
01972 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
01973    token YYLEX-NUM.  */
01974 static const yytype_uint16 yytoknum[] =
01975 {
01976        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
01977      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
01978      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
01979      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
01980      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
01981      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
01982      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
01983      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
01984      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
01985      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
01986      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
01987      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
01988      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
01989      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
01990      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
01991      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
01992      415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
01993      425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
01994      435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
01995      445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
01996      455,   456,   457,   458,   459,   460,   461,   462,   463,   464,
01997      465,   466,   467,   468,   469,   470,   471,   472,   473,   474,
01998      475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
01999      485,   486,   487,   488,   489,   490,   491,   492,   493,   494,
02000      495,   496,   497,   498,   499,   500,   501,   502,   503,   504,
02001      505,   506,   507,   508,   509,   510,   511,   512,   513,   514,
02002      515,   516,   517,   518,   519,   520,   521,   522,   523,   524,
02003      525,   526,   527,   528,   529,   530,   531,   532,   533,   534,
02004      535,   536,   537,   538,   539,   540,   541,   542,   543,   544,
02005      545,   546,   547,   548,   549,    41
02006 };
02007 # endif
02008 
02009 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
02010 static const yytype_uint16 yyr1[] =
02011 {
02012        0,   296,   297,   298,   299,   299,   299,   299,   299,   299,
02013      299,   300,   301,   302,   303,   304,   304,   305,   306,   306,
02014      306,   306,   306,   306,   307,   308,   308,   309,   310,   310,
02015      310,   310,   310,   311,   312,   313,   313,   314,   315,   316,
02016      316,   316,   316,   316,   317,   318,   319,   320,   321,   322,
02017      323,   323,   323,   324,   325,   325,   326,   326,   327,   328,
02018      328,   328,   328,   329,   330,   330,   331,   332,   332,   333,
02019      334,   335,   336,   337,   337,   337,   337,   337,   337,   337,
02020      338,   339,   340,   340,   341,   342,   343,   343,   343,   344,
02021      345,   345,   345,   346,   346,   346,   347,   348,   348,   349,
02022      350,   351,   351,   352,   353,   353,   353,   353,   353,   353,
02023      353,   353,   354,   355,   356,   356,   356,   356,   356,   356,
02024      356,   356,   356,   356,   356,   356,   356,   356,   356,   356,
02025      356,   356,   357,   358,   358,   359,   360,   360,   360,   361,
02026      362,   362,   363,   364,   365,   365,   365,   366,   367,   367,
02027      368,   369,   369,   370,   371,   371,   372,   373,   373,   374,
02028      375,   375,   376,   377,   377,   378,   379,   379,   380,   381,
02029      381,   382,   383,   383,   383,   384,   385,   385,   385,   385,
02030      385,   386,   387,   387,   388,   389,   390,   390,   390,   390,
02031      390,   390,   390,   390,   390,   390,   390,   390,   390,   390,
02032      390,   391,   392,   392,   392,   392,   393,   394,   394,   394,
02033      395,   396,   396,   397,   397,   398,   398,   399,   399,   400,
02034      401,   401,   402,   403,   403,   404,   405,   406,   406,   406,
02035      406,   407,   408,   408,   408,   409,   410,   410,   410,   411,
02036      411,   411,   411,   412,   412,   412,   413,   414,   414,   414,
02037      414,   414,   414,   414,   415,   416,   417,   417,   417,   417,
02038      417,   418,   419,   420,   421,   421,   421,   421,   421,   421,
02039      421,   421,   421,   421,   421,   421,   421,   421,   422,   423,
02040      424,   425,   425,   425,   426,   427,   427,   427,   427,   427,
02041      427,   427,   427,   427,   427,   427,   427,   427,   428,   429,
02042      429,   430,   431,   431,   431,   431,   431,   431,   431,   431,
02043      431,   431,   431,   432,   433,   433,   433,   433,   434,   434,
02044      434,   434,   434,   435,   436,   436,   436,   436,   437,   438,
02045      438,   438,   438,   439,   440,   441,   441,   442,   442,   442,
02046      442,   443,   444,   444,   445,   446,   446,   446,   446,   446,
02047      447,   448,   449,   450,   451,   452,   452,   453,   454,   455,
02048      455,   455,   455,   455,   455,   455,   455,   455,   455,   456,
02049      457,   457,   457,   458,   459,   459,   459,   459,   459,   460,
02050      461,   461,   462,   463,   463,   463,   463,   463,   464,   464,
02051      465,   465,   466,   467,   467,   468,   469,   469,   469,   469,
02052      470,   471,   471,   471,   471,   471,   471,   471,   471,   471,
02053      471,   471,   471,   471,   471,   471,   471,   471,   472,   473,
02054      473,   473,   473,   474,   475,   475,   475,   475,   476,   477,
02055      477,   477,   477,   478,   479,   479,   480,   481,   482,   482,
02056      482,   482,   483,   484,   484,   484,   484,   484,   484,   484,
02057      484,   484,   485,   486,   486,   487,   488,   489,   489,   490,
02058      491,   492,   493,   494,   495,   496,   496,   496,   496,   496,
02059      497,   498,   499,   499,   500,   501,   501,   501,   502,   503,
02060      503,   504,   505,   505,   506,   506,   506,   507,   507,   507,
02061      508,   509,   509,   509,   509,   510,   511,   511,   511,   511,
02062      512,   513,   513,   514,   515,   515,   516,   517,   518,   519,
02063      519,   519,   520,   521,   521,   521,   521,   522,   523,   523,
02064      523,   523,   524,   525,   525,   526,   527,   527,   527,   527,
02065      527,   527,   527,   527,   527,   527,   527,   527,   527,   527,
02066      527,   528,   529,   529,   529,   529,   529,   530,   531,   531,
02067      532,   532,   532,   533,   534,   534,   534,   535,   535,   535,
02068      536,   537,   537,   538,   539,   539,   539,   539,   540,   541,
02069      541,   542,   542,   543,   544,   544,   544,   545,   546,   546,
02070      547,   548,   548,   548,   548,   548,   549,   550,   550,   551,
02071      551,   551,   552,   552,   553,   554,   554,   554,   554,   554,
02072      554,   554,   554,   554,   554,   555,   556,   556,   556,   556,
02073      556,   557,   558,   558,   558,   558,   558,   558,   559,   560,
02074      560,   560,   561,   562,   562,   562,   563,   564,   564,   564,
02075      564,   564,   565,   565,   566,   566,   567,   568,   568,   568,
02076      568,   569,   570,   571,   571,   571,   572,   573,   573,   573,
02077      574,   575,   575,   575,   575,   576,   577,   577,   577,   577,
02078      578,   579,   579,   580,   581,   581,   581,   581,   582,   583,
02079      583,   583,   583,   583,   584,   585,   586,   586,   587,   588,
02080      588,   588,   588,   588,   588,   588,   588,   589,   590,   591,
02081      591,   591,   591,   592,   593,   593,   593,   593,   594,   595,
02082      595,   596,   597,   598,   598,   598,   598,   598,   598,   598,
02083      598,   598,   598,   599,   600,   601,   601,   602,   603,   603,
02084      604,   605,   606,   606,   607,   608,   608,   609,   610,   611,
02085      611,   611,   611,   612,   613,   613,   614,   615,   615,   615,
02086      615,   616,   617,   617,   618,   619,   619,   620,   621,   622,
02087      622,   623,   624,   624,   624,   624,   624,   624,   624,   624,
02088      624,   624,   624,   624,   624,   625,   626,   626,   626,   626,
02089      626,   626,   626,   626,   626,   626,   627,   628,   628,   628,
02090      628,   629,   630,   630,   630,   630,   631,   632,   632,   632,
02091      633,   634,   634,   634,   634,   634,   634,   634,   634,   634,
02092      634,   634,   635,   636,   636,   636,   636,   636,   636,   636,
02093      636,   636,   636,   636,   636,   636,   637,   638,   638,   638,
02094      639,   640,   641,   641,   641,   641,   641,   642,   642,   643,
02095      643,   644,   645,   645,   645,   645,   646,   647,   647,   648,
02096      649,   649,   650,   651,   651,   651,   651,   651,   652,   653,
02097      654,   655,   655,   655,   655,   655,   655,   655,   655,   655,
02098      655,   655,   655,   656,   656,   656,   656,   656,   656,   657,
02099      658,   658,   658,   659,   660,   660,   661,   662,   662,   662,
02100      662,   663,   664,   664,   665,   665,   666,   667,   667,   668,
02101      669,   670,   670,   671,   672,   673,   674,   674,   674,   674,
02102      675,   676,   676,   677,   678,   679,   679,   679,   679,   679,
02103      679,   680,   681,   681,   681,   681,   682,   683,   683,   684,
02104      685,   685,   686,   687,   687,   688,   689,   689,   690,   691,
02105      691,   691,   691,   692,   693,   693,   693,   694,   694,   694,
02106      695,   696,   697,   697,   697,   697,   698,   698,   699,   700,
02107      701,   701,   701,   701,   701,   701,   701,   701,   701,   701,
02108      701,   701,   701,   701,   702,   703,   703,   704,   705,   705,
02109      705,   706,   707,   707,   707,   707,   708,   708,   708,   709,
02110      710,   710,   710,   710,   710,   710,   710,   711,   712,   713,
02111      713,   714,   714,   714,   715,   716,   717,   717,   717,   717,
02112      717,   718,   719,   719,   720,   720,   721,   721,   722,   722,
02113      723,   723,   724,   725,   725,   725,   726,   727,   727,   727,
02114      727,   728,   729,   729,   729,   729,   729,   729,   730,   731,
02115      732,   733,   733,   733,   733,   734,   735,   735,   735,   735,
02116      735,   735,   735,   735,   735,   735,   735,   735,   735,   735,
02117      735,   735,   736,   737,   738,   738,   738,   738,   738,   739,
02118      739,   740,   740,   741,   742,   743,   743,   743,   743,   743,
02119      743,   744,   745,   745,   745,   746,   747,   747,   747,   747,
02120      747,   747,   747,   747,   747,   748,   749,   750,   751,   751,
02121      752,   753,   753,   753,   753,   753,   753,   753,   753,   753,
02122      753,   754,   755,   756,   757,   758,   759,   759,   759,   759,
02123      760,   761,   761,   761,   761,   761,   761,   761,   762,   763,
02124      763,   763,   763,   763,   763,   763,   764,   765,   766,   767
02125 };
02126 
02127 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
02128 static const yytype_uint8 yyr2[] =
02129 {
02130        0,     2,     1,     7,     0,     2,     2,     2,     2,     2,
02131        2,     1,     3,     5,     3,     1,     1,     3,     1,     2,
02132        2,     2,     2,     2,     3,     1,     1,     3,     1,     2,
02133        2,     2,     2,     5,     5,     0,     1,     3,     3,     1,
02134        1,     1,     2,     2,     3,     3,     3,     3,     2,     3,
02135        1,     1,     1,     4,     1,     1,     1,     1,     3,     0,
02136        2,     2,     2,     3,     1,     2,     3,     1,     1,     5,
02137        3,     3,     4,     1,     2,     2,     2,     2,     2,     2,
02138        1,     4,     0,     1,     1,     3,     1,     1,     1,     4,
02139        1,     1,     1,     0,     1,     1,     5,     0,     2,     5,
02140        3,     0,     2,     3,     0,     2,     2,     2,     2,     2,
02141        2,     2,     3,     3,     0,     2,     2,     2,     2,     2,
02142        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
02143        2,     2,     3,     0,     1,     3,     1,     1,     1,     3,
02144        1,     1,     3,     3,     0,     2,     2,     4,     0,     1,
02145        4,     0,     1,     3,     1,     1,     3,     1,     1,     3,
02146        1,     1,     3,     1,     1,     3,     1,     1,     3,     0,
02147        2,     3,     1,     1,     1,     4,     1,     2,     2,     2,
02148        2,     3,     1,     1,     1,     3,     0,     2,     2,     2,
02149        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
02150        2,     3,     1,     1,     2,     2,     3,     1,     1,     1,
02151        6,     1,     1,     0,     1,     0,     1,     0,     1,     3,
02152        0,     2,     3,     1,     2,     3,     6,     1,     1,     2,
02153        2,     3,     1,     1,     1,     5,     1,     1,     1,     1,
02154        1,     1,     1,     0,     1,     1,     3,     1,     1,     1,
02155        1,     1,     2,     2,     3,     5,     1,     2,     2,     2,
02156        2,     4,     2,     3,     1,     2,     2,     2,     2,     2,
02157        2,     2,     2,     2,     2,     2,     2,     2,     1,     1,
02158        3,     1,     1,     1,     3,     1,     2,     2,     2,     2,
02159        2,     2,     2,     2,     2,     2,     2,     2,     4,     0,
02160        1,     3,     1,     1,     2,     2,     2,     2,     2,     2,
02161        2,     2,     2,     5,     1,     1,     2,     2,     1,     1,
02162        1,     1,     1,     5,     1,     1,     2,     2,     5,     1,
02163        1,     2,     2,     5,     4,     1,     1,     1,     1,     2,
02164        2,     3,     1,     2,     3,     0,     2,     2,     2,     2,
02165        3,     3,     4,     2,     3,     1,     1,     2,     4,     1,
02166        1,     2,     2,     2,     2,     2,     2,     2,     2,     4,
02167        0,     1,     1,     3,     1,     2,     2,     2,     2,     3,
02168        0,     2,     3,     0,     2,     2,     2,     2,     1,     1,
02169        1,     1,     3,     1,     2,     3,     0,     2,     2,     2,
02170        3,     0,     2,     2,     2,     2,     2,     2,     2,     2,
02171        2,     2,     2,     2,     2,     2,     2,     2,     6,     1,
02172        1,     2,     2,     3,     1,     1,     2,     2,     5,     1,
02173        1,     2,     2,     3,     1,     1,     2,     3,     0,     2,
02174        2,     2,     3,     1,     1,     1,     1,     1,     1,     1,
02175        1,     1,     3,     1,     2,     3,     3,     1,     2,     1,
02176        1,     3,     1,     1,     5,     1,     2,     2,     2,     2,
02177        3,     3,     0,     2,     3,     0,     2,     2,     4,     1,
02178        1,     5,     1,     1,     1,     1,     1,     0,     1,     1,
02179        3,     1,     1,     1,     2,     3,     0,     2,     2,     2,
02180        3,     0,     2,     3,     0,     2,     1,     1,     3,     0,
02181        2,     2,     3,     1,     1,     1,     2,     3,     1,     2,
02182        2,     2,     4,     0,     1,     3,     1,     2,     2,     2,
02183        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
02184        2,     3,     0,     2,     2,     2,     2,     4,     1,     1,
02185        0,     1,     1,     4,     1,     1,     1,     1,     1,     1,
02186        4,     1,     2,     3,     0,     2,     2,     2,     3,     1,
02187        2,     1,     1,     5,     1,     1,     1,     3,     0,     2,
02188        3,     0,     2,     2,     2,     2,     3,     1,     2,     1,
02189        1,     1,     1,     1,     4,     1,     2,     2,     2,     2,
02190        2,     2,     2,     2,     2,     3,     1,     2,     2,     2,
02191        2,     4,     1,     2,     2,     2,     2,     2,     4,     1,
02192        2,     2,     3,     0,     2,     2,     3,     0,     2,     2,
02193        2,     2,     1,     1,     1,     1,     4,     0,     1,     1,
02194        1,     2,     3,     0,     2,     2,     4,     1,     2,     2,
02195        5,     1,     1,     2,     2,     3,     0,     2,     2,     2,
02196        3,     1,     2,     3,     0,     2,     2,     2,     3,     1,
02197        2,     2,     2,     2,     4,     3,     1,     2,     3,     1,
02198        1,     1,     1,     1,     1,     1,     1,     3,     6,     1,
02199        1,     2,     2,     6,     1,     1,     2,     2,     5,     1,
02200        1,     3,     3,     1,     2,     2,     2,     2,     2,     2,
02201        2,     2,     2,     3,     3,     1,     2,     5,     0,     1,
02202        4,     3,     1,     2,     3,     1,     2,     3,     3,     0,
02203        2,     2,     2,     3,     0,     2,     3,     0,     2,     2,
02204        2,     3,     1,     2,     3,     0,     2,     4,     3,     1,
02205        2,     3,     1,     2,     2,     2,     2,     2,     2,     2,
02206        2,     2,     2,     2,     2,     3,     1,     2,     2,     2,
02207        2,     2,     2,     2,     2,     2,     4,     1,     2,     2,
02208        2,     4,     1,     1,     2,     2,     3,     0,     2,     2,
02209        3,     1,     1,     2,     2,     2,     2,     2,     2,     2,
02210        2,     2,     3,     1,     1,     2,     2,     2,     2,     2,
02211        2,     2,     2,     2,     2,     2,     3,     0,     2,     2,
02212        4,     3,     0,     2,     2,     2,     2,     1,     1,     1,
02213        1,     4,     0,     1,     1,     1,     4,     0,     1,     3,
02214        1,     2,     4,     1,     2,     2,     2,     2,     1,     1,
02215        3,     0,     2,     2,     2,     2,     2,     2,     2,     2,
02216        2,     2,     2,     1,     1,     1,     1,     1,     1,     3,
02217        0,     2,     2,     4,     1,     2,     5,     1,     1,     2,
02218        2,     4,     1,     1,     1,     1,     3,     0,     2,     1,
02219        5,     1,     4,     4,     4,     3,     1,     2,     2,     2,
02220        3,     1,     2,     1,     3,     1,     2,     2,     2,     2,
02221        2,     3,     0,     2,     2,     2,     3,     0,     1,     4,
02222        0,     1,     3,     0,     1,     3,     1,     2,     3,     0,
02223        2,     2,     2,     4,     1,     1,     1,     1,     2,     2,
02224        3,     3,     0,     2,     2,     2,     1,     2,     3,     3,
02225        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
02226        2,     2,     2,     2,     3,     0,     2,     3,     0,     2,
02227        2,     4,     1,     1,     1,     1,     0,     1,     1,     3,
02228        1,     2,     2,     2,     2,     2,     2,     3,     4,     1,
02229        1,     1,     1,     1,     8,     3,     1,     2,     2,     2,
02230        2,     7,     0,     1,     0,     1,     0,     1,     0,     1,
02231        0,     1,     4,     1,     1,     1,     3,     0,     2,     2,
02232        2,     2,     1,     1,     1,     1,     1,     1,     2,     2,
02233        3,     1,     1,     2,     2,     3,     1,     1,     1,     1,
02234        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
02235        1,     1,     2,     3,     1,     2,     2,     2,     2,     1,
02236        1,     1,     1,     3,     5,     1,     2,     2,     2,     2,
02237        2,     3,     0,     2,     2,     3,     0,     2,     2,     2,
02238        2,     2,     2,     2,     2,     1,     1,     4,     0,     1,
02239        3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
02240        1,     3,     3,     5,     3,     3,     0,     2,     2,     2,
02241        3,     1,     2,     2,     2,     2,     2,     2,     3,     1,
02242        2,     2,     2,     2,     2,     2,     1,     1,     1,     1
02243 };
02244 
02245 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
02246    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
02247    means the default is an error.  */
02248 static const yytype_uint16 yydefact[] =
02249 {
02250        0,     0,     0,  1126,     0,     0,     0,   590,    11,   591,
02251      589,     1,     0,   587,   883,     0,   882,     0,     0,     0,
02252        2,   586,   588,  1127,     0,     0,   885,   884,  1128,     0,
02253        0,     0,     0,   213,   211,   212,   593,   279,   592,     0,
02254      946,   881,     0,     0,     0,     4,   285,     0,     0,   215,
02255      214,   940,   947,     0,    12,     0,   457,     0,     0,     0,
02256        0,     0,   101,     0,     0,     0,     0,     0,     0,     0,
02257        0,   284,   292,   289,   290,   295,   286,   287,   291,   288,
02258      296,   293,   297,   294,   443,   444,   445,   446,   447,   448,
02259      449,   450,   451,     0,     0,   217,   216,    13,     0,   456,
02260      458,     0,     0,     0,   929,     3,     9,     8,     6,     7,
02261        5,    10,     0,     0,     0,     0,   891,     0,   136,   137,
02262      138,     0,   232,   233,   234,     0,     0,     0,   848,     0,
02263        0,     0,  1054,     0,     0,     0,    68,    67,   442,   683,
02264      686,   684,   685,   679,   681,   682,   680,     0,     0,     0,
02265      218,   455,     0,   184,     0,   462,     0,     0,     0,    70,
02266        0,     0,   100,   102,   135,   231,     0,   727,    59,   396,
02267      564,   656,   737,   942,  1022,  1023,  1024,  1025,  1026,     0,
02268     1027,   843,   987,  1129,  1053,  1058,  1057,  1056,  1055,   345,
02269      262,  1021,  1101,   678,     0,     0,   210,     0,   176,     0,
02270        0,     0,     0,   928,   931,   932,   930,     0,     0,     0,
02271        0,     0,     0,     0,     0,     0,     0,     0,     0,   842,
02272      847,   844,   846,   845,     0,     0,   687,    82,    84,   175,
02273      178,   179,   177,   180,     0,     0,   256,     0,   465,     0,
02274     1119,     0,    69,   892,    99,   333,     0,    58,    62,    61,
02275       60,     0,   395,   398,   399,   397,     0,     0,   563,   567,
02276      566,   565,   571,   572,     0,   655,   659,   658,   657,     0,
02277      736,   740,   739,   738,   941,   944,   945,   943,     0,  1051,
02278     1037,  1048,  1049,  1038,  1036,  1046,  1050,  1044,  1045,  1043,
02279     1047,  1039,  1040,  1041,  1042,     0,   344,   349,   348,   347,
02280      346,     0,     0,     0,    83,   664,   980,     0,     0,   255,
02281      258,   259,   257,   260,   464,   467,   468,   466,   469,     0,
02282        0,     0,     0,  1118,  1120,  1124,  1122,  1121,  1123,  1125,
02283        0,    64,     0,   393,     0,   569,     0,     0,     0,   574,
02284      576,   575,     0,   661,     0,   742,   701,  1035,   747,     0,
02285      463,    81,     0,     0,     0,   186,   912,   979,   985,   984,
02286      982,   981,   983,   986,     0,    80,     0,     0,   151,   837,
02287       63,    65,   392,   394,   568,   570,  1028,  1029,     0,   660,
02288      662,   741,   743,   470,     0,     0,   663,   667,   666,   665,
02289        0,   460,     0,   264,   278,     0,     0,     0,     0,    73,
02290        0,    47,     0,     0,   152,     0,   838,     0,     0,     0,
02291        0,     0,   263,   271,   268,   269,   274,   265,   266,   270,
02292      277,   267,   275,   272,   276,   273,     0,     0,     0,     0,
02293        0,     0,     0,     0,     0,     0,     0,   185,   199,   193,
02294      198,   188,   190,   187,   194,   195,   197,   196,   192,   191,
02295      189,   200,     0,   911,   914,   913,   915,    88,    87,    86,
02296        0,     0,  1076,    72,    77,    79,    74,    78,    76,    75,
02297        0,     0,   150,   836,   573,     0,     0,   261,     0,     0,
02298        0,     0,     0,     0,   320,   355,   356,     0,   318,   321,
02299      322,   319,   889,     0,     0,     0,     0,     0,     0,     0,
02300        0,     0,     0,     0,   526,     0,   506,    85,  1085,     0,
02301        0,     0,  1063,   352,     0,     0,   202,   203,   299,   424,
02302      425,     0,   434,   435,     0,     0,  1031,  1032,     0,   354,
02303        0,     0,     0,     0,     0,     0,     0,   647,     0,     0,
02304        0,     0,     0,     0,     0,     0,   220,     0,   501,   504,
02305      887,     0,     0,     0,   525,   529,   539,   530,   528,   533,
02306      536,   535,   534,   538,   537,   532,   540,   527,   531,     0,
02307        0,     0,   383,     0,   627,     0,   822,  1075,  1083,  1080,
02308     1079,  1082,  1081,  1078,  1077,  1084,     0,   890,   201,   204,
02309      205,     0,   300,   423,   426,   427,   433,   699,   700,     0,
02310     1030,  1033,  1034,   281,     0,   282,   283,     0,     0,     0,
02311        0,     0,     0,     0,   917,   866,   865,   868,   867,     0,
02312      864,   863,   314,   315,     0,   324,   325,     0,   329,   330,
02313        0,     0,   429,   430,   646,   648,   649,     0,   651,   652,
02314        0,     0,   578,   870,   878,   877,     0,     0,     0,   507,
02315        0,     0,   436,     0,     0,     0,     0,     0,     0,  1096,
02316     1098,  1099,  1097,  1091,  1093,  1092,  1094,  1100,  1095,     0,
02317      401,  1065,     0,     0,   374,     0,     0,     0,     0,   606,
02318        0,     0,     0,   766,     0,   994,   298,     0,   280,     0,
02319      227,   228,     0,     0,    54,     0,    55,     0,     0,     0,
02320      918,     0,   313,   316,   317,   323,   326,   327,   328,   331,
02321      332,     0,   419,   420,   428,   431,   432,   650,   653,   654,
02322        0,   689,   690,     0,   694,   695,     0,     0,   876,   879,
02323      880,    66,   112,   142,   219,   221,   500,   502,   503,   505,
02324      886,   888,   948,  1102,  1104,  1090,     0,   114,  1064,  1068,
02325     1067,  1069,  1066,  1070,     0,   370,   391,   390,     0,     0,
02326      373,   378,   375,   377,   376,   380,   382,   386,   384,   385,
02327      387,   635,   634,   637,     0,     0,   605,   610,   608,   607,
02328      609,   623,   626,   630,   629,   628,   631,   830,   829,   832,
02329        0,     0,     0,     0,     0,     0,   765,   773,   775,   769,
02330      770,   771,   772,   767,   768,   774,   787,   821,   825,   824,
02331      823,   826,   698,   226,   229,   230,    45,    46,    56,     0,
02332       57,   254,   351,   461,   916,   418,   421,   422,   688,   691,
02333      692,   693,   696,   697,   577,   579,   869,   871,   872,     0,
02334      438,   581,     0,   729,     0,     0,   851,     0,   950,  1106,
02335      400,   406,   416,   414,   408,   409,   407,   411,   402,   403,
02336      415,   405,   413,   404,   412,   417,   410,     0,     0,     0,
02337      371,     0,   372,     0,   183,   182,     0,   996,     0,     0,
02338      639,   638,     0,   640,     0,   141,   140,     0,     0,   834,
02339      833,     0,   835,     0,    16,    15,     0,   155,   154,     0,
02340      158,   157,     0,   161,   160,     0,   164,   163,     0,     0,
02341       53,     0,     0,     0,    41,     0,    40,    39,     0,     0,
02342        0,  1060,  1059,     0,     0,   828,   827,     0,   752,     0,
02343        0,   903,   905,     0,     0,     0,     0,   104,     0,     0,
02344        0,     0,     0,     0,     0,     0,     0,     0,     0,   113,
02345      129,   130,   122,   117,   127,   115,   128,   119,   120,   116,
02346      121,   123,   118,   125,   124,   131,   126,     0,   561,  1086,
02347     1088,   369,   181,   172,   173,   174,     0,     0,     0,   995,
02348      999,   998,   997,  1000,   379,   381,   636,   139,     0,   619,
02349        0,   622,   624,   625,   831,    14,   153,   156,   159,   162,
02350        0,   782,   783,     0,   786,   788,   789,   734,     0,   923,
02351        0,    48,    38,    42,    43,     0,   817,   437,   441,   440,
02352      439,   580,   585,   583,   582,   584,     0,   718,   643,   728,
02353      732,   731,   730,     0,     0,   751,   761,   763,   757,   758,
02354      759,   760,   756,   753,   755,   762,   754,   764,   475,   777,
02355        0,     0,     0,     0,   850,   856,   861,   855,   853,   854,
02356      858,   859,   852,   857,   860,   862,     0,     0,     0,   904,
02357      908,   909,   906,   910,   907,     0,     0,   949,   955,   957,
02358      962,   954,   952,   953,   959,   956,   960,   951,   958,   961,
02359      963,  1105,  1109,  1108,  1107,     0,     0,     0,   302,   303,
02360        0,     0,   335,   336,   389,     0,   388,     0,   518,   633,
02361      632,     0,     0,     0,   669,   703,     0,     0,   792,   791,
02362        0,   896,  1017,  1111,     0,   560,   562,  1089,     0,   171,
02363        0,     0,   342,   725,     0,     0,   167,   166,     0,     0,
02364      618,   621,   620,     0,   480,   479,   781,   785,   784,     0,
02365       37,   965,     0,   924,    44,     0,     0,    35,     0,   719,
02366        0,   207,   208,   209,     0,  1052,     0,   776,   779,   778,
02367      780,     0,   453,   459,  1062,  1061,     0,   715,   849,     0,
02368      840,     0,     0,    28,     0,     0,     0,    26,    25,     0,
02369        0,    71,   103,   105,   108,   110,   106,   107,   109,   111,
02370        0,     0,     0,     0,     0,     0,   301,   304,   311,   305,
02371      306,   307,   308,   309,   310,   312,   968,     0,   337,   338,
02372     1072,     0,   360,   359,   517,   520,   519,   521,   595,     0,
02373      472,   612,     0,   668,   672,   671,   670,   673,   702,   710,
02374      711,   707,   704,   705,   706,   709,   708,   712,   133,   790,
02375      801,   796,   793,   794,   795,   798,   797,   799,   800,   895,
02376      899,   897,   898,     0,     0,     0,     0,  1110,  1112,  1116,
02377     1113,  1115,  1114,  1117,  1087,     0,     0,   989,   990,     0,
02378      341,   343,   724,   726,   165,   496,   509,     0,    51,    50,
02379       52,  1014,  1013,  1015,     0,     0,     0,   733,   735,     0,
02380      922,   350,   816,   819,   818,     0,    36,   717,   642,   645,
02381      644,   206,   474,   476,   477,   452,   454,   714,   716,   839,
02382      841,   148,     0,     0,    27,    31,    29,    30,    32,     0,
02383        0,    24,   713,   874,     0,     0,     0,   223,   144,   676,
02384        0,   745,     0,   722,   749,     0,   901,     0,     0,   334,
02385      339,   340,     0,     0,     0,  1002,   358,   367,   365,   362,
02386      363,   366,   364,   361,   368,   594,   603,   601,   596,   598,
02387      600,   599,   597,   602,   604,     0,   611,   616,   614,   613,
02388      615,   617,     0,   134,     0,     0,     0,  1016,  1018,  1020,
02389     1019,     0,    18,     0,   482,   483,   550,   548,   549,     0,
02390      251,   250,   249,   248,   247,     0,     0,   993,   991,   992,
02391        0,     0,     0,    49,     0,   478,     0,   926,   964,   966,
02392       34,     0,   149,     0,   491,   493,   492,     0,   513,   515,
02393      514,   820,   542,     0,   873,   875,    97,   222,   224,     0,
02394      675,   677,     0,   721,   723,   748,   750,   900,   902,     0,
02395        0,   967,   969,   970,  1071,  1074,  1073,     0,     0,   804,
02396      803,     0,  1003,  1004,   471,   473,   132,    93,    92,    90,
02397       91,   357,   936,   934,   935,     0,    17,    22,    19,    21,
02398       20,    23,     0,   487,   485,   484,   486,   551,   552,     0,
02399      246,   253,   252,     0,     0,   988,     0,   495,   499,   497,
02400      498,   508,   511,   510,  1012,     0,   925,   927,   147,   490,
02401      494,   512,   516,     0,  1103,     0,     0,   143,   145,   146,
02402      744,   746,     0,   237,     0,   236,   238,     0,   972,   974,
02403      973,   975,   976,     0,   802,   812,   814,   808,   809,   810,
02404      811,   807,   806,   813,   805,   815,     0,     0,  1005,  1006,
02405       94,     0,    95,   937,     0,   523,   488,   489,     0,   547,
02406      674,   225,   353,   920,   541,   546,   544,   543,   545,    96,
02407       98,     0,     0,   556,   554,   555,   243,   239,   241,   240,
02408      242,   641,   977,   978,     0,   720,     0,     0,   169,  1007,
02409     1008,    89,   933,   939,   938,   524,     0,   481,     0,   921,
02410        0,   558,   557,   559,     0,   244,     0,   245,   971,   893,
02411        0,     0,  1009,  1010,   522,   919,     0,   553,   235,   894,
02412      168,   170,  1011,     0,    33,  1001
02413 };
02414 
02415 /* YYDEFGOTO[NTERM-NUM].  */
02416 static const yytype_int16 yydefgoto[] =
02417 {
02418       -1,    21,     2,    58,     6,    31,    18,   797,   893,  1268,
02419     1391,  1078,  1186,  1070,  1182,  1518,   925,  1305,   914,   851,
02420      915,   916,   615,   616,   324,   917,  1141,  1287,   617,   695,
02421      819,   174,   211,   249,   330,   555,   135,    72,    73,   950,
02422      310,   398,   364,   198,   303,   227,   399,   460,  1388,  1467,
02423     1551,  1207,  1515,    74,    75,   117,   952,  1097,   557,   750,
02424      867,  1252,  1382,    76,   121,   778,   884,   558,  1339,  1439,
02425     1183,  1421,   326,   403,   799,   896,   800,   899,   801,   902,
02426      802,   905,   989,  1135,  1589,  1611,   877,   976,   107,   199,
02427      762,   873,   152,   359,   395,   484,   515,  1043,  1164,    22,
02428       33,    49,    95,   149,   559,   651,  1209,  1336,  1407,   439,
02429      689,    77,   125,  1452,  1524,  1576,  1606,  1277,  1399,   618,
02430      108,   235,   360,   136,   361,   392,   393,    34,   531,   604,
02431       35,    47,   485,   591,   953,  1100,   441,   619,   486,   442,
02432      624,   443,   627,    78,   954,  1101,  1217,   981,  1131,   185,
02433      224,  1018,   620,   388,  1498,   420,   487,  1389,   955,  1221,
02434      674,   871,   579,   675,   769,   879,   580,   676,  1105,   755,
02435      253,   332,   175,   212,   671,   746,   444,   711,   488,   521,
02436      445,   631,   489,   524,   560,   854,   918,    50,    93,  1060,
02437     1171,    56,    45,    57,  1172,   390,   621,   154,   349,   109,
02438      237,   304,  1231,  1375,  1049,  1166,  1002,  1143,  1271,  1393,
02439     1483,  1558,  1326,  1423,  1291,  1411,   561,   653,   562,   654,
02440      504,  1292,  1293,  1412,  1327,  1427,   956,  1107,  1484,  1596,
02441      455,   505,  1433,  1513,  1272,  1396,  1489,  1525,  1572,  1604,
02442      787,   967,   176,   213,  1144,   334,  1145,   262,   338,   644,
02443      726,   855,   919,    36,    12,   492,   649,   957,  1229,   581,
02444      678,   958,  1232,   779,   990,   784,   888,   582,   680,  1111,
02445      773,   679,   882,  1529,  1030,  1160,   446,   538,   447,   637,
02446      177,   214,   267,   342,   306,   352,   959,  1113,  1278,  1210,
02447     1340,    96,   147,   150,   448,   720,   449,   723,   490,   599,
02448      221,   960,  1116,  1085,  1061,  1176,   856,  1158,  1359,  1211,
02449     1342,   982,  1134,    79,   857,   924,  1008,  1149,   178,   215,
02450      272,   344,  1343,  1442,   195,  1212,  1345,   858,   927,   583,
02451      682,   859,  1050,   804,  1003,   809,   909,   961,  1117,  1360,
02452     1458,  1019,  1156,  1072,   584,   684,   928,   789,   683,   891,
02453      327,   405,  1063,  1179,    80,   179,   129,  1180,   861,   930,
02454      622,   645,   727,  1096,  1334,   450,   646,     9,    15,    25,
02455      564,   655,   493,   389,   263,  1462,  1548,   962,  1120,  1214,
02456     1347,   932,   862,   933,   362,   396,   623,   701,  1507,  1598,
02457     1010,  1152,  1298,  1416,   110,   157,  1390,  1475,  1554,    26,
02458      180,   216,    39,   565,   863,   934,  1153,  1299,  1219,  1348,
02459     1453,  1532,  1584,   236,   307,    81,  1132,  1279,  1410,   240,
02460      764,   878,  1363,  1463,  1549,  1590,  1613,  1623,  1142,  1294,
02461     1123,  1263,   137,   181,   340,   341,   491,   528,   223,   295,
02462     1046,    82,   131,   923,  1177,   404,   468,   672,  1222,  1352,
02463      469,   510,   509,   970,   872,  1128,   570,   669,    83,   567,
02464     1074,   568,   866,   935,   966,  1124,   206,   241,    38,    27,
02465      116,   189
02466 };
02467 
02468 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
02469    STATE-NUM.  */
02470 #define YYPACT_NINF -1333
02471 static const yytype_int16 yypact[] =
02472 {
02473       41,   152,   149, -1333,   176,    81,   305, -1333, -1333, -1333,
02474    -1333, -1333,    33, -1333, -1333,    59, -1333,   148,   317,   101,
02475    -1333, -1333, -1333, -1333,   437,   150, -1333, -1333, -1333,   148,
02476      148,   304,    81,   312, -1333, -1333, -1333, -1333, -1333,    33,
02477    -1333, -1333,   148,   150,   316, -1333, -1333,  1508,  1780,   272,
02478    -1333, -1333, -1333,   150, -1333,   148, -1333,   122,   715,   148,
02479      148,   111, -1333,   997,  1020,   148,   148,   152,   148,   176,
02480      300, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02481    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02482    -1333, -1333, -1333,   150,  1588,   280, -1333, -1333,   150, -1333,
02483    -1333,   152,   152,   152, -1333, -1333, -1333, -1333, -1333, -1333,
02484    -1333, -1333,   148,   150,   148,   111, -1333,    36, -1333, -1333,
02485    -1333,   150, -1333, -1333, -1333,   150,   148,   150, -1333,  1023,
02486      150,    66, -1333,   150,   150,   150, -1333, -1333, -1333, -1333,
02487    -1333, -1333, -1333, -1333, -1333, -1333, -1333,   150,   260,   150,
02488    -1333, -1333,   424, -1333,   317, -1333,   317,   273,   439, -1333,
02489      148,   111, -1333, -1333, -1333, -1333,   439, -1333, -1333, -1333,
02490    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   310,
02491    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02492    -1333, -1333, -1333, -1333,   148,   150, -1333,    81, -1333,   441,
02493      254,   254,   266, -1333, -1333, -1333, -1333,   150,   150,   150,
02494      150,   416,    49,   115,    91,   801,    77,   437,  2006, -1333,
02495    -1333, -1333, -1333, -1333,    71,   148, -1333,   376, -1333, -1333,
02496    -1333, -1333, -1333, -1333,   343,   445, -1333,   445, -1333,   148,
02497    -1333,   158, -1333, -1333, -1333, -1333,   300, -1333, -1333, -1333,
02498    -1333,   148, -1333, -1333, -1333, -1333,   276,   144, -1333, -1333,
02499    -1333, -1333, -1333, -1333,   111, -1333, -1333, -1333, -1333,   260,
02500    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   150, -1333,
02501    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02502    -1333, -1333, -1333, -1333, -1333,   150, -1333, -1333, -1333, -1333,
02503    -1333,   150,    81,   150, -1333, -1333, -1333,   546,   152, -1333,
02504    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   148,
02505      437,   437,   437, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02506       33, -1333,    33, -1333,    33, -1333,   150,   150,   144, -1333,
02507    -1333, -1333,    33, -1333,    33, -1333, -1333, -1333, -1333,   150,
02508    -1333, -1333,   132,   152,   152, -1333, -1333, -1333, -1333, -1333,
02509    -1333, -1333, -1333, -1333,   468, -1333,   148,   150,   306,   306,
02510    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   144, -1333,
02511    -1333, -1333, -1333, -1333,   111,   111, -1333, -1333, -1333, -1333,
02512       81, -1333,  1442, -1333, -1333,  1794,   519,   832,   940, -1333,
02513      148, -1333,   437,   150, -1333,   150, -1333,   150,   111,   111,
02514      150,  1196, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02515    -1333, -1333, -1333, -1333, -1333, -1333,   152,   152,   152,   152,
02516      152,   152,   152,   152,   152,   152,   152, -1333, -1333, -1333,
02517    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02518    -1333, -1333,   152, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02519      150,   152, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02520      148,   150, -1333, -1333, -1333,   150,   321, -1333,  1196,    81,
02521     1196,  1196,   148,  1196, -1333, -1333, -1333,   150, -1333, -1333,
02522    -1333, -1333, -1333,   461,   461,   461,   461,   461,   461,   461,
02523      461,   461,   461,   461, -1333,  1198, -1333, -1333, -1333,   322,
02524      867,   148, -1333, -1333,   150,  1263, -1333, -1333,   376, -1333,
02525    -1333,  1263, -1333, -1333,   150,  1196, -1333, -1333,  1263, -1333,
02526      342,   461,  1545,  1545,  1545,   461,  1545, -1333,   130,  1545,
02527      461,   461,   -29,   300,    81,   276, -1333,   150, -1333, -1333,
02528    -1333,    81,   276,    81, -1333, -1333, -1333, -1333, -1333, -1333,
02529    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,  1879,
02530      444,   466, -1333,   425, -1333,   382, -1333, -1333, -1333, -1333,
02531    -1333, -1333, -1333, -1333, -1333, -1333,   150, -1333, -1333, -1333,
02532    -1333,   150, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   540,
02533    -1333, -1333, -1333, -1333,   150, -1333, -1333,  1545,   111,   111,
02534       42,   111,   111,   111,  1276, -1333, -1333, -1333, -1333,   130,
02535    -1333, -1333, -1333, -1333,   130, -1333, -1333,   130, -1333, -1333,
02536     1545,   130, -1333, -1333, -1333, -1333, -1333,   130, -1333, -1333,
02537     1545,  1545, -1333, -1333, -1333, -1333,   130,   150,   150, -1333,
02538      150,    63, -1333,    63,    63,    63,   150,   150,   150, -1333,
02539    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   150,
02540    -1333, -1333,   186,   529, -1333,   653,   833,   529,   605, -1333,
02541      171,   529,   581, -1333,   783, -1333, -1333,   150, -1333,   130,
02542    -1333, -1333,   150,   150, -1333,    53, -1333,   150,   150,   150,
02543    -1333,   150, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02544    -1333,   130, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02545      130, -1333, -1333,   130, -1333, -1333,   -75,   361, -1333, -1333,
02546    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02547    -1333, -1333, -1333, -1333, -1333, -1333,   990, -1333, -1333, -1333,
02548    -1333, -1333, -1333, -1333,    81,   -34, -1333, -1333,    59,   548,
02549    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02550    -1333, -1333, -1333,   442,   460,   548, -1333, -1333, -1333, -1333,
02551    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   539,
02552      523,    93,    93,    93,    93,   548, -1333, -1333, -1333, -1333,
02553    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02554    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   150,
02555    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02556    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   543,
02557    -1333, -1333,   108, -1333,   108,   108, -1333,   152, -1333, -1333,
02558    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02559    -1333, -1333, -1333, -1333, -1333, -1333, -1333,  1584,   148,    81,
02560    -1333,   150, -1333,   150, -1333, -1333,   894, -1333,   708,   252,
02561    -1333, -1333,   150, -1333,   150, -1333, -1333,   561,    46, -1333,
02562    -1333,   150, -1333,   150, -1333, -1333,   150, -1333, -1333,   150,
02563    -1333, -1333,   150, -1333, -1333,   150, -1333, -1333,    26,    86,
02564    -1333,   431,   421,   150, -1333,   130, -1333, -1333,   531,   281,
02565      152, -1333, -1333,  1023,   -73, -1333, -1333,   631, -1333,   512,
02566      762, -1333, -1333,   481,   365,   588,   454, -1333,    76,   104,
02567      108,   108,   108,   108,   108,   108,   104,   437,   418, -1333,
02568    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02569    -1333, -1333, -1333, -1333, -1333, -1333, -1333,    51, -1333, -1333,
02570      424, -1333, -1333, -1333, -1333, -1333,   150,   436,   561, -1333,
02571    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   523, -1333,
02572      -31, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02573      523, -1333, -1333,   -31, -1333, -1333, -1333, -1333,   150,   453,
02574      150, -1333, -1333, -1333, -1333,   529, -1333, -1333, -1333, -1333,
02575    -1333, -1333, -1333, -1333, -1333, -1333,   148,   321, -1333, -1333,
02576    -1333, -1333, -1333,   711,   150, -1333, -1333, -1333, -1333, -1333,
02577    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02578      726,   176,   529,    81, -1333, -1333, -1333, -1333, -1333, -1333,
02579    -1333, -1333, -1333, -1333, -1333, -1333,   620,   108,   152, -1333,
02580    -1333, -1333, -1333, -1333, -1333,    59,   454, -1333, -1333, -1333,
02581    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02582    -1333, -1333, -1333, -1333, -1333,   260,   150,   691, -1333, -1333,
02583      751,   -85, -1333, -1333, -1333,  -115, -1333,   726, -1333, -1333,
02584    -1333,   568,   562,   635, -1333, -1333,   449,  1253, -1333, -1333,
02585       97, -1333, -1333, -1333,   448, -1333, -1333, -1333,   150, -1333,
02586      384,   -24, -1333, -1333,   -24,   150, -1333, -1333,   950,   950,
02587    -1333, -1333, -1333,   523, -1333, -1333, -1333, -1333, -1333,  -122,
02588    -1333, -1333,   150, -1333, -1333,   150,    86,   148,   150, -1333,
02589      -77, -1333, -1333, -1333,   150, -1333,   -90, -1333, -1333, -1333,
02590    -1333,    33, -1333, -1333, -1333, -1333,    33, -1333, -1333,    33,
02591    -1333,   148,   409, -1333,   530,   111,   150, -1333, -1333,   150,
02592      260, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02593      260,   260,   675,   553,   553,   675, -1333, -1333, -1333, -1333,
02594    -1333, -1333, -1333, -1333, -1333, -1333, -1333,    99, -1333, -1333,
02595    -1333,   812, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   679,
02596    -1333, -1333,   946, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02597    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   651, -1333,
02598    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02599    -1333, -1333, -1333,    34,   276,   104,   104, -1333, -1333, -1333,
02600    -1333, -1333, -1333, -1333, -1333,  1014,   671, -1333, -1333,   634,
02601    -1333, -1333, -1333, -1333, -1333, -1333, -1333,   150, -1333, -1333,
02602    -1333, -1333, -1333, -1333,   950,   150,   453, -1333, -1333,  -119,
02603    -1333, -1333, -1333, -1333, -1333,   150, -1333, -1333, -1333, -1333,
02604    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02605    -1333,   684,   255,   255, -1333, -1333, -1333, -1333, -1333,   150,
02606      624, -1333, -1333, -1333,  -117,   260,  -117, -1333, -1333, -1333,
02607     -117, -1333,  -117, -1333, -1333,  -117, -1333,  -117,   269, -1333,
02608    -1333, -1333,   428,   529,   104,   560, -1333, -1333, -1333, -1333,
02609    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02610    -1333, -1333, -1333, -1333, -1333,   -98, -1333, -1333, -1333, -1333,
02611    -1333, -1333,   150, -1333,   255,   150,   255, -1333, -1333, -1333,
02612    -1333,   739, -1333,   -64, -1333, -1333,    26, -1333, -1333,   -31,
02613    -1333, -1333, -1333, -1333, -1333,   111,   111, -1333, -1333, -1333,
02614      150,   114,    64, -1333,   150, -1333,  -127, -1333, -1333, -1333,
02615    -1333,   150, -1333,   -52, -1333, -1333, -1333,   -52, -1333, -1333,
02616    -1333, -1333, -1333,   150, -1333, -1333, -1333, -1333, -1333,    28,
02617    -1333, -1333,   -46, -1333, -1333, -1333, -1333, -1333, -1333,   383,
02618      890, -1333, -1333, -1333, -1333, -1333, -1333,  1023,   657, -1333,
02619    -1333,   148, -1333,   564, -1333, -1333, -1333,    11, -1333, -1333,
02620    -1333, -1333, -1333, -1333, -1333,   684, -1333, -1333, -1333, -1333,
02621    -1333, -1333,    81,    26, -1333, -1333, -1333, -1333, -1333,   150,
02622    -1333, -1333, -1333,   150,   150, -1333,   150, -1333, -1333, -1333,
02623    -1333, -1333, -1333, -1333, -1333,   534, -1333, -1333, -1333, -1333,
02624    -1333, -1333, -1333,   113, -1333,  -117,   260, -1333, -1333, -1333,
02625    -1333, -1333,   255, -1333,   890, -1333, -1333,   150, -1333, -1333,
02626    -1333, -1333,    26,   150, -1333, -1333, -1333, -1333, -1333, -1333,
02627    -1333, -1333, -1333, -1333, -1333, -1333,   148,   148, -1333,   725,
02628    -1333,   150, -1333, -1333,   -31,   376, -1333, -1333,   150, -1333,
02629    -1333, -1333, -1333,   577, -1333, -1333, -1333, -1333, -1333, -1333,
02630    -1333,   260,   950, -1333, -1333, -1333,    26, -1333, -1333, -1333,
02631    -1333, -1333, -1333, -1333,   150, -1333,   150,   148, -1333, -1333,
02632      272, -1333, -1333, -1333, -1333, -1333,   150, -1333,   150, -1333,
02633      260, -1333, -1333, -1333,   150, -1333,   150, -1333, -1333, -1333,
02634      150,   -46, -1333,   280, -1333, -1333,   150, -1333, -1333, -1333,
02635    -1333, -1333, -1333,   150, -1333, -1333
02636 };
02637 
02638 /* YYPGOTO[NTERM-NUM].  */
02639 static const yytype_int16 yypgoto[] =
02640 {
02641    -1333,   -25, -1333, -1333, -1333,     8, -1333,  -906, -1333, -1333,
02642    -1333,  -265, -1333, -1333, -1333, -1333,   173, -1333, -1333, -1333,
02643    -1333, -1333,   223,   139, -1333, -1333,  -996, -1333, -1333, -1333,
02644    -1333,   645, -1333, -1333, -1333, -1333,  -168,   470,   473,  -285,
02645      599, -1333, -1333,   -91, -1333, -1333, -1333, -1333,  -557, -1333,
02646    -1333, -1333, -1333,   504,  1011, -1333,  -878, -1333, -1333, -1333,
02647    -1333, -1333, -1333,  -310, -1333,  -316, -1333, -1333,  -291, -1333,
02648    -1333, -1333, -1333, -1333,  -902, -1333,  -901, -1333,  -896, -1333,
02649     -893, -1333,  -891, -1333, -1333, -1333,  -630, -1333, -1333, -1333,
02650     -666, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   -26,
02651    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,  -890, -1333,
02652    -1333,   527, -1333, -1333, -1333, -1333, -1333,  -284, -1333, -1333,
02653    -1333, -1333, -1333, -1333,   528, -1333,   -11,     3,  1663, -1333,
02654       -7, -1333,  1085, -1333,  -880, -1333, -1333, -1333,  1301, -1333,
02655    -1333, -1333, -1333,   544, -1043, -1333, -1333, -1333, -1333,   716,
02656    -1333, -1333,   329, -1333,  -570, -1333, -1333, -1333,  -872, -1333,
02657      308, -1333, -1333, -1333, -1333, -1333, -1333, -1333,     4, -1333,
02658      180, -1333,   745, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
02659    -1333, -1333, -1333, -1333, -1333,  -834, -1333, -1333, -1333,  -871,
02660    -1333, -1333, -1333, -1333, -1333, -1333,   263,   858, -1333, -1333,
02661    -1333,  -517, -1333, -1333, -1333, -1333, -1202,  -181,  -428, -1333,
02662    -1333, -1333, -1333, -1333, -1109, -1333, -1333, -1333, -1333, -1333,
02663      -99,  -514, -1097, -1333, -1333, -1333, -1333, -1333, -1332, -1333,
02664    -1333, -1333, -1227, -1333,  -420, -1333, -1333, -1333, -1333, -1333,
02665     -665, -1333,   769, -1333,  -193, -1333,  -209, -1333,    90, -1333,
02666    -1333, -1333, -1333,   355, -1333,   903,   128, -1025, -1333, -1333,
02667    -1333,  -141, -1333,  -242, -1333,  -287, -1333, -1333, -1333,    55,
02668      123,  -674, -1333,  -502, -1333, -1333, -1333, -1333, -1333, -1333,
02669      813, -1333,   472, -1333, -1333, -1333, -1333, -1333,  -251, -1333,
02670    -1333,  -560, -1333,  -582, -1333, -1333, -1333, -1333, -1333, -1333,
02671    -1333, -1333, -1333,   -83,   105, -1333, -1333, -1333, -1333, -1333,
02672    -1333, -1333, -1333,   656,  -864, -1333, -1333, -1333,   830, -1333,
02673    -1333, -1333,  -155, -1333,  -210, -1333, -1333,  -113, -1333, -1333,
02674    -1333,  -105, -1333,  -889, -1333,  -213, -1333,  -803, -1333, -1333,
02675    -1333,  -874, -1333, -1333, -1333, -1333,  -679,  -882,   502, -1333,
02676    -1333, -1333,  -699, -1333,   767, -1333, -1333, -1333, -1333, -1333,
02677      845,   339, -1333,  -942, -1333, -1333, -1333, -1333, -1333, -1333,
02678    -1333, -1333,   902, -1333,   141, -1333, -1333,   -44, -1333, -1333,
02679    -1333, -1333,   213, -1333, -1333, -1333,   411, -1333, -1333, -1333,
02680    -1333, -1333, -1333, -1333,  -189, -1333,  -363, -1333, -1333,  -214,
02681      873, -1333, -1333, -1333, -1333, -1333,  -195, -1333, -1300, -1333,
02682    -1333, -1333, -1333,   904, -1333,   712, -1333, -1333, -1333, -1333,
02683     -706, -1333, -1248, -1333, -1333, -1333, -1333, -1333,  -980,  -186,
02684    -1333, -1333, -1333,  -912, -1333, -1333, -1333, -1333,  -467, -1333,
02685    -1089,  1032, -1333, -1333,  -241,   742, -1333, -1333,  -235, -1333,
02686    -1333, -1333, -1333, -1333,  -770, -1333, -1333, -1333,   727, -1333,
02687    -1333, -1333,   203, -1333, -1333, -1333, -1333, -1333,  1551,    12,
02688      347, -1333
02689 };
02690 
02691 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
02692    positive, shift that token.  If negative, reduce the rule which
02693    number is the opposite.  If zero, do what YYDEFACT says.
02694    If YYTABLE_NINF, syntax error.  */
02695 #define YYTABLE_NINF -1
02696 static const yytype_uint16 yytable[] =
02697 {
02698       41,   592,   275,   883,   261,   273,   785,  1147,   756,   514,
02699      232,  1027,   771,    52,    51,  1351,   803,  1001,    54,   892,
02700      260,  1036,    71,  1148,  1236,  1038,  1039,  1005,    97,  1288,
02701      648,  1040,    99,   105,  1041,    46,    40,   656,  1044,   658,
02702      864,  1290,    23,   250,  1138,  1023,   312,   335,   317,     3,
02703     1058,  1419,  1057,    28,  1082,    28,  1081,  1102,  1059,   345,
02704     1031,  1093,  1083,  1084,  1118,    23,     3,     3,   138,     3,
02705       28,   183,    23,   151,     3,    28,   183,    23,   331,     3,
02706      853,  1270,   417,    23,     3,  1022,  1138,  1133,   159,     3,
02707      942,  1243,   162,  1486,  1516,    28,   164,    28,  1275,   881,
02708      165,  1092,   167,    23,     3,   182,   184,     3,   190,   191,
02709      192,     3,  1482,   608,   673,    28,     3,     3,  1528,    28,
02710     1384,    67,   193,  1028,   196,   609,  1432,  1062,  1505,   163,
02711      988,  1087,   203,  1155,  1189,  1296,   844,   735,   845,   737,
02712      739,   741,   843,   187,    19,   887,   843,    37,    28,    11,
02713     1531,   681,    28,  1355,   219,     3,   642,     1,  1213,   681,
02714       37,   964,   200,   681,   201,   908,   929,   643,    20,  1220,
02715      226,   869,   681,    20,   229,   920,    20,  1385,    20,     3,
02716     1216,   612,   242,   243,   244,   245,   247,   252,   258,   265,
02717      270,   274,  1577,  1000,  1488,   194,  1510,    20,   169,   251,
02718     1512,  1216,   115,   988,  1371,    20,   114,    32,   114,   466,
02719      309,    62,   314,   643,   993,   613,   323,  1196,    20,    62,
02720       20,    62,    20,   771,  1580,  1197,   114,   754,   277,   278,
02721      114,   320,    32,     4,  1285,  1088,   299,  1253,  1241,  1251,
02722      677,   940,  1139,    20,  1242,  1254,  1255,    62,  1260,    20,
02723        4,     4,   869,   346,  1496,  1496,   161,   321,     3,   114,
02724       62,  1042,  1108,     4,    20,  1114,  1000,   754,     4,   194,
02725      347,    20,   384,     4,  1303,    62,   348,  1228,   351,   747,
02726       28,  1557,   357,  1285,  1139,   754,  1286,  1286,     4,   687,
02727      171,     4,   264,  1386,   264,     4,  1309,   170,   256,   257,
02728        4,     4,   209,  1502,   371,   370,   373,   372,   375,   374,
02729     1329,   376,   377,  1246,  1500,  1599,   380,   379,   382,   381,
02730       24,     5,   681,    20,   383,   228,  1350,   386,    20,    20,
02731     1583,    20,   367,   368,   369,  1223,   650,   173,    24,     4,
02732      681,    20,   401,   657,    20,     3,    20,   947,  1478,  1369,
02733     1465,  1367,  1379,     5,  1378,   268,     7,  1370,    20,    20,
02734       14,    20,    62,   781,    29,   677,   296,   412,  1383,  1544,
02735      437,   453,    20,   463,  1607,   647,    42,    43,   472,   385,
02736      473,    20,   474,  1394,  1397,   477,    20,  1174,  1184,    53,
02737     1449,   114,    20,   410,    20,   322,    67,     5,   339,    62,
02738      673,  1403,    98,  1491,  1566,   343,   112,   113,    20,    20,
02739       20,    69,   126,   127,   471,   130,  1568,    20,  1256,  1492,
02740      336,   337,     7,    17,    67,    20,   133,    20,   378,  1075,
02741      350,  1422,   608,   609,    30,   507,   754,   610,   840,    69,
02742     1425,  1429,     4,    23,   104,    20,   512,   936,  1424,  1428,
02743      513,   478,    69,    20,    62,   937,     7,     7,     7,   158,
02744      257,   160,   529,  1601,    28,    44,    20,    69,   407,  1384,
02745       48,  1550,  1459,   166,   479,  1603,    55,    94,   188,   339,
02746      554,    20,   518,   752,   611,   577,   148,  1552,  1016,   587,
02747      588,   681,   938,   168,   246,   480,   593,   481,    62,   596,
02748      612,   194,  1469,   600,  1473,  1487,  1275,   208,   197,   940,
02749     1468,  1264,  1472,   634,  1016,  1362,   168,   681,    37,   339,
02750      217,   234,   652,   613,  1051,   408,   409,    28,   308,     4,
02751       62,   936,     3,   603,    62,  1450,   239,    62,    62,   937,
02752      302,   225,   133,   305,   874,  1533,  1066,    20,    67,   475,
02753      476,   482,  1535,   397,    69,  1358,  1537,  1538,  1593,   255,
02754     1159,   685,  1539,  1522,    20,  1540,   686,   202,    20,  1542,
02755       62,   300,   301,   849,  1594,   134,    20,  1076,  1322,   688,
02756     1052,   895,  1456,  1323,   939,  1553,   319,  1276,   402,   218,
02757      673,   530,  1556,   940,   702,   670,   946,   894,   333,   705,
02758      218,  1401,   708,    67,  1053,    20,   714,    37,    62,   569,
02759      251,   911,   717,   912,   673,   614,  1265,   913,   681,   677,
02760      483,   728,   731,   732,  1289,   733,   734,  1266,   736,   738,
02761      740,   742,   743,   744,    63,    62,   677,   942,   114,   943,
02762     1574,  1582,  1386,   790,   745,  1055,    69,   748,  1573,  1079,
02763      760,   766,  1007,   776,   876,   782,    20,   796,    37,   807,
02764       20,  1076,   812,     7,   813,   988,   366,   816,   817,  1015,
02765       62,   353,   821,   822,   823,   354,   824,  1009,  1048,    67,
02766      946,   791,   792,   793,   794,  1605,   825,   673,  1174,   758,
02767       69,   134,  1122,   790,    62,   828,   452,  1095,   831,   104,
02768      774,   834,   836,   104,    20,  1130,   256,   257,     7,     7,
02769      754,    20,  1220,   400,   869,  1067,     4,  1151,  1181,   790,
02770       62,   850,    69,    20,    62,   840,    69,  1230,   869,    69,
02771       69,   791,   792,   793,   794,  1563,    20,  1161,  1162,   758,
02772       20,  1033,    62,    20,    20,   840,    62,   470,  1406,   692,
02773      693,  1163,   697,   698,   699,  1075,  1275,   791,   792,   793,
02774      794,   758,    69,  1016,  1016,   758,   355,   681,    62,   937,
02775      875,  1068,  1338,   936,   774,   681,    20,  1341,   938,  1137,
02776       62,     7,     7,     7,     7,     7,     7,     7,     7,     7,
02777        7,     7,  1541,  1275,   910,  1136,   775,    62,  1406,   356,
02778       69,   757,  1432,   207,    62,   772,   938,     7,  1461,   788,
02779      795,   210,  1194,  1547,    20,    62,     7,   511,   938,    67,
02780      869,  1016,   101,   940,   681,   869,    20,    69,    62,   525,
02781     1588,  1239,  1193,   694,   818,   940,   315,  1276,  1200,   102,
02782       62,    20,   949,    67,   936,   977,   971,  1281,   972,  1355,
02783     1283,    62,   937,   979,   984,   457,   248,   986,   586,   987,
02784      795,  1187,   413,   991,  1201,   414,   994,   942,   995,    67,
02785      775,   996,    62,    67,   997,   939,    20,   998,   103,  1127,
02786      999,   458,   868,    20,  1004,  1190,   795,   459,  1011,   938,
02787     1012,    67,  1523,  1017,  1021,    67,   415,  1499,  1503,  1029,
02788       20,    62,  1035,   973,     8,  1054,   940,  1265,  1069,  1077,
02789     1091,  1034,    69,  1368,  1346,  1034,    69,    67,  1266,   418,
02790      758,  1051,    62,   440,   759,   978,    20,  1098,   974,    67,
02791       20,  1099,   898,   901,   904,   907,   419,  1034,    69,   696,
02792      297,   975,  1125,  1565,   626,   629,   222,   633,    20,  1115,
02793      639,  1129,    20,     3,   885,  1202,    62,   254,   820,  1121,
02794       69,   156,  1295,  1479,    67,  1140,   231,  1203,  1555,  1185,
02795      128,  1480,    69,   104,    20,  1244,  1204,  1052,  1146,   765,
02796     1333,   673,   259,  1150,   768,  1154,    20,  1372,  1400,    69,
02797     1335,  1337,  1405,   946,  1095,  1408,    69,   969,  1112,  1567,
02798       67,  1053,  1205,    20,   153,   155,   155,    69,   328,  1165,
02799       20,   992,   571,   806,   572,   921,   772,   118,   691,   681,
02800       69,    20,  1578,   172,   269,  1167,  1353,   266,  1409,    62,
02801     1612,  1622,    69,  1245,    20,    62,   937,   788,  1595,  1086,
02802      122,   713,   194,    69,  1354,   271,    20,   119,   421,  1344,
02803       67,   722,   725,  1313,   120,  1392,   573,    20,  1602,   839,
02804      574,  1314,  1402,   870,    69,   835,  1482,   788,   100,   106,
02805      123,  1191,  1192,   938,   788,  1206,  1261,   124,    20,    62,
02806      963,   880,  1224,   759,  1355,  1527,  1526,  1188,  1233,   276,
02807      111,  1238,  1249,    69,   575,  1259,    20,   889,   758,  1267,
02808      168,  1417,   576,  1274,   423,   238,  1280,    20,  1414,  1282,
02809     1284,   406,  1457,  1104,    69,  1109,  1109,  1455,  1104,   425,
02810     1285,   886,  1025,  1286,  1297,  1436,   681,  1300,    20,     0,
02811     1301,  1302,  1262,  1307,     0,  1308,     0,     4,   838,  1311,
02812        0,  1312,     0,   788,     0,  1316,  1315,   840,    69,     0,
02813     1318,  1317,     0,  1320,  1319,  1216,     0,  1324,     0,   422,
02814        0,  1331,    20,     0,  1332,   465,     0,     0,   204,     0,
02815        0,     0,   169,     0,     0,     0,   841,     0,    67,     0,
02816     1175,  1178,     0,     0,    67,     0,   810,   985,     0,   205,
02817      220,     0,  1349,     0,     0,     0,  1356,     7,   104,     7,
02818        7,     0,     7,   842,  1365,   170,   781,  1376,   677,   843,
02819      230,   365,     0,     0,     0,   968,   844,     0,   845,     0,
02820        0,    69,   171,   461,     0,   462,     0,    69,    67,  1519,
02821      846,   233,  1521,     0,     0,    20,     0,     0,  1387,     0,
02822        0,    20,   847,     0,   806,   172,   311,  1016,   316,     0,
02823      681,     0,   325,   848,     0,     0,   391,   394,     0,     0,
02824        0,   759,  1413,   897,   900,   903,   906,   313,     0,   318,
02825     1415,    69,   563,   329,  1418,     7,     0,   543,     0,     0,
02826     1420,     0,   849,   173,   788,    20,     0,    62,     0,   544,
02827        0,   890,     0,     7,   545,     7,     7,     7,     7,     7,
02828        7,     0,     0,     0,  1431,   478,  1571,     0,     0,  1434,
02829      546,  1437,     0,     0,  1126,  1440,     0,  1443,   358,     0,
02830     1445,     0,  1447,  1451,     0,     0,  1330,  1454,   479,   494,
02831      495,   496,   497,   498,   499,   500,   501,   502,   503,   363,
02832        0,     0,    62,   937,     0,  1248,     0,   608,   609,   480,
02833     1464,   481,   610,     0,   547,   506,     0,  1466,     0,     0,
02834     1471,  1600,     0,   387,   508,     0,  1476,     0,     0,   548,
02835      549,     0,   478,  1157,  1490,     0,     0,     0,   625,   628,
02836      938,   632,     0,     0,   638,  1495,  1497,  1501,     0,  1504,
02837     1616,  1506,     0,   788,   788,   479,  1508,   940,  1509,   611,
02838        0,  1621,  1511,   416,     0,   482,   438,   454,  1514,   464,
02839        0,  1006,  1051,     0,  1517,   612,   480,  1520,   481,     0,
02840     1020,  1024,     7,     7,   424,     0,  1032,   451,   456,     0,
02841      467,     0,     0,  1534,     0,     0,    67,  1094,   613,   751,
02842        0,  1103,   763,     0,   550,   780,     0,     0,  1119,   805,
02843      788,   788,   690,     0,     0,     0,     0,     0,     0,   700,
02844      551,     0,     0,     0,  1559,     0,     0,     0,  1560,  1561,
02845        0,  1562,   482,     0,   483,   712,     0,     0,     0,    69,
02846        0,  1175,   788,     0,     0,   721,   724,   552,  1564,   553,
02847     1569,    67,  1053,    20,     0,     0,     0,     0,     0,     0,
02848        0,     0,  1581,     0,  1306,     0,     0,     0,  1585,     0,
02849        0,     0,   788,   860,   788,     0,   556,     0,     0,     0,
02850        0,   578,    59,    60,     0,     0,  1591,     0,  1321,  1592,
02851       61,    62,     0,  1597,    69,     0,    63,   566,     0,     0,
02852        0,   483,   585,     0,     0,     0,  1493,  1494,    20,   635,
02853        0,     0,    10,     0,     0,    13,    16,     0,    20,  1608,
02854        0,  1609,    64,   516,     0,   519,   522,     0,   526,     0,
02855      636,  1614,   837,  1615,     0,     0,     0,    65,     0,  1617,
02856        0,  1618,     0,     0,   411,  1619,  1620,     0,    59,    60,
02857        0,  1624,     0,     0,     0,     0,    61,    62,  1625,     0,
02858      589,     0,    63,  1218,     0,     0,   594,     0,     0,     0,
02859      597,     0,     0,   601,     0,   605,   608,   609,    10,     0,
02860      132,   610,     0,   139,   140,   141,   142,     0,    64,     0,
02861      703,   143,   144,   145,   146,   706,     0,     0,   709,     0,
02862        0,     0,   715,    65,     0,     0,     0,     0,   718,     0,
02863      788,   704,    10,    10,    10,     0,   707,   729,  1304,   710,
02864       66,     0,  1310,   716,     0,     0,   936,     0,   611,   719,
02865        0,     0,     0,    62,   937,     0,     0,     0,   730,     0,
02866       67,     0,   186,   749,   612,     0,   761,   767,     0,   777,
02867        0,   783,     0,   798,  1045,   808,     0,  1064,     0,     0,
02868      814,  1089,     0,     0,   753,     0,     0,   613,   770,     0,
02869       68,   938,   786,     0,     0,     0,   811,     0,     0,     0,
02870      939,   815,   826,    69,     0,     0,    66,     0,   940,     0,
02871       70,   829,     0,     0,   832,     0,     0,    20,     0,     0,
02872        0,     0,     0,   827,     0,   922,    67,   926,   926,     0,
02873      931,     0,   830,     0,     0,   833,     0,   852,     0,   941,
02874        0,     0,     0,     0,     0,     0,     0,  1395,  1398,     0,
02875        0,     0,   942,     0,   943,   298,    68,  1404,   865,   517,
02876        0,   520,   523,     0,   527,     0,   944,     0,     0,    69,
02877        0,    84,    85,    86,     0,   945,    70,     0,     0,   614,
02878        0,     0,     0,    20,     0,     0,     0,     0,  1546,    87,
02879       88,    89,     0,     0,     0,   946,   590,  1169,     0,     0,
02880        0,     0,   595,  1026,  1426,  1430,   598,     0,     0,   602,
02881        0,   606,     0,     0,   947,     0,   847,     0,    90,    91,
02882       92,   394,     0,  1106,   926,  1110,  1110,   926,  1106,     0,
02883        0,     0,     0,     0,     0,   759,  1460,     0,     0,    10,
02884        0,     0,     0,     0,  1198,    69,     0,     0,     0,     0,
02885        0,     0,     0,     0,  1226,     0,     0,   948,   951,    20,
02886     1235,     0,     0,    62,  1257,     0,  1470,   659,  1474,   980,
02887        0,     0,     0,  1586,  1587,  1485,     0,   660,     0,   965,
02888        0,     0,     0,   661,    10,    10,     0,   662,     0,     0,
02889      983,   663,     0,   426,     0,     0,     0,     0,   664,     0,
02890      665,     0,   427,   354,     0,     0,  1013,   428,   429,     0,
02891      666,   667,   668,     0,  1610,     0,     0,     0,  1037,     0,
02892        0,  1056,     0,     0,  1071,  1080,   430,  1014,   431,     0,
02893        0,     0,  1530,     0,     0,     0,     0,     0,     0,  1047,
02894        0,     0,  1065,     0,     0,  1073,  1090,     0,     0,     0,
02895      926,   506,     0,     0,     0,     0,     0,    10,    10,    10,
02896       10,    10,    10,    10,    10,    10,    10,    10,  1361,     0,
02897        0,   432,   433,     0,     0,     0,  1373,     0,     0,  1380,
02898        0,   434,   435,    10,     0,     0,     0,     0,     0,     0,
02899        0,     0,    10,   279,     0,     0,   280,     0,     0,     0,
02900      281,   282,   283,   284,  1575,   285,  1579,   286,   287,     0,
02901        0,   288,     0,     0,     0,     0,     0,     0,   436,   289,
02902        0,     0,     0,     0,     0,     0,     0,     0,   290,     0,
02903        0,     0,     0,     0,   291,     0,     0,     0,     0,     0,
02904      292,  1168,   293,     0,     0,     0,     0,   294,     0,     0,
02905        0,     0,     0,     0,     0,    69,     0,     0,     0,     0,
02906        0,     0,  1170,     0,     0,     0,     0,     0,     0,    20,
02907        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02908        0,  1435,     0,  1438,     0,     0,     0,  1441,  1195,  1444,
02909        0,  1208,  1446,     0,  1448,     0,     0,     0,  1225,     0,
02910        0,     0,     0,     0,  1234,     0,     0,  1240,  1250,  1199,
02911        0,     0,  1215,     0,     0,  1269,     0,     0,     0,  1227,
02912        0,     0,     0,     0,     0,  1237,     0,     0,  1247,  1258,
02913        0,     0,     0,     0,     0,     0,  1273,   532,   533,   534,
02914      535,   536,   537,   539,   540,   541,   542,     0,     0,     0,
02915        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02916        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02917        0,     0,     0,  1325,   607,     0,     0,     0,   630,     0,
02918        0,     0,     0,   640,   641,     0,     0,     0,     0,     0,
02919        0,     0,     0,     0,  1328,     0,     0,     0,     0,     0,
02920        0,     0,     0,     0,     0,  1543,     0,     0,     0,     0,
02921        0,     0,  1357,     0,     0,     0,     0,     0,     0,     0,
02922     1366,     0,     0,  1377,     0,     0,     0,     0,     0,     0,
02923        0,     0,     0,  1364,     0,     0,     0,     0,     0,     0,
02924        0,  1374,     0,     0,  1381,     0,     0,     0,     0,     0,
02925        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02926        0,     0,  1570,     0,     0,     0,     0,     0,     0,     0,
02927        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02928        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02929        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02930        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02931        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02932        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02933        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02934        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02935        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02936        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02937        0,     0,     0,    10,     0,    10,    10,     0,    10,     0,
02938        0,     0,  1477,     0,     0,     0,     0,     0,     0,     0,
02939        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02940        0,     0,     0,  1481,     0,     0,     0,     0,     0,     0,
02941        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02942        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02943        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02944        0,     0,     0,     0,     0,     0,     0,     0,     0,  1536,
02945        0,    10,     0,     0,     0,     0,     0,     0,     0,     0,
02946        0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
02947     1545,    10,    10,    10,    10,    10,    10,     0,     0,     0,
02948        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02949        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02950        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02951        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02952        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02953        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02954        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02955        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02956        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02957        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02958        0,     0,  1173,     0,     0,     0,     0,     0,     0,     0,
02959        0,     0,     0,     0,     0,     0,     0,     0,    10,    10
02960 };
02961 
02962 static const yytype_int16 yycheck[] =
02963 {
02964       25,   518,   216,   773,   213,   215,   680,  1003,   673,   476,
02965      199,   923,   677,    39,    39,  1217,   682,   908,    43,   789,
02966      213,   927,    47,  1003,  1113,   927,   927,   909,    53,  1138,
02967      544,   927,    57,    58,   927,    32,    24,   551,   927,   553,
02968      746,  1138,     6,   211,    75,   919,   235,   256,   237,     3,
02969      930,  1299,   930,     4,   934,     4,   934,   939,   930,   269,
02970      924,   935,   934,   934,   946,     6,     3,     3,    93,     3,
02971        4,     5,     6,    98,     3,     4,     5,     6,   246,     3,
02972      746,  1124,   392,     6,     3,   919,    75,   978,   113,     3,
02973      188,  1116,   117,  1393,    66,     4,   121,     4,   122,   773,
02974      125,   935,   127,     6,     3,   130,   131,     3,   133,   134,
02975      135,     3,   176,    71,   148,     4,     3,     3,  1450,     4,
02976       86,   238,   147,   196,   149,    72,   178,   930,   255,   117,
02977      104,   934,   157,  1015,  1076,   257,   226,   651,   228,   653,
02978      654,   655,   219,   131,   111,   775,   219,    19,     4,     0,
02979     1450,   236,     4,   272,   179,     3,   185,   116,  1100,   236,
02980       32,   867,   154,   236,   156,   795,   845,   242,   295,   284,
02981      195,   286,   236,   295,   199,    67,   295,   143,   295,     3,
02982      265,   139,   207,   208,   209,   210,   211,   212,   213,   214,
02983      215,   216,  1524,   167,  1396,   241,  1423,   295,   149,   150,
02984     1427,   265,    61,   104,  1229,   295,   115,   131,   115,   398,
02985      235,    89,   237,   242,   888,   162,   241,  1097,   295,    89,
02986      295,    89,   295,   888,  1524,  1097,   115,   181,   216,   217,
02987      115,    73,   131,   187,   170,   934,   224,  1117,  1116,  1117,
02988      194,   144,   273,   295,  1116,  1117,  1117,    89,  1120,   295,
02989      187,   187,   286,   278,   141,   141,   115,    99,     3,   115,
02990       89,   927,   941,   187,   295,   944,   167,   181,   187,   241,
02991      295,   295,   140,   187,  1156,    89,   301,  1111,   303,    93,
02992        4,  1483,   307,   170,   273,   181,   173,   173,   187,   599,
02993      199,   187,   201,   259,   201,   187,  1160,   182,   183,   184,
02994      187,   187,   161,  1412,   330,   330,   332,   332,   334,   334,
02995     1184,   336,   337,  1116,  1411,  1563,   342,   342,   344,   344,
02996      261,   245,   236,   295,   349,   197,  1217,   352,   295,   295,
02997     1532,   295,   320,   321,   322,  1105,   545,   260,   261,   187,
02998      236,   295,   367,   552,   295,     3,   295,   250,  1391,  1229,
02999     1375,  1229,  1232,   245,  1232,   214,     1,  1229,   295,   295,
03000        5,   295,    89,   192,    17,   194,   295,   392,  1248,  1458,
03001      395,   396,   295,   398,  1576,   543,    29,    30,   403,   247,
03002      405,   295,   407,  1265,  1266,   410,   295,  1052,  1067,    42,
03003      121,   115,   295,   390,   295,   237,   238,   245,   257,    89,
03004      148,  1275,    55,  1399,  1513,   264,    59,    60,   295,   295,
03005      295,   281,    65,    66,   402,    68,  1513,   295,  1117,  1399,
03006      276,   277,    67,   118,   238,   295,   126,   295,   338,    64,
03007      302,  1321,    71,    72,   117,   460,   181,    76,   157,   281,
03008     1322,  1323,   187,     6,   258,   295,   471,    82,  1322,  1323,
03009      475,   109,   281,   295,    89,    90,   101,   102,   103,   112,
03010      184,   114,   487,  1572,     4,   161,   295,   281,   378,    86,
03011      158,  1467,  1354,   126,   132,  1572,   160,   205,   131,   338,
03012      505,   295,   479,   672,   123,   510,   206,  1467,   233,   514,
03013      515,   236,   127,    77,    78,   153,   521,   155,    89,   524,
03014      139,   241,  1384,   528,  1386,  1396,   122,   160,    84,   144,
03015     1384,    63,  1386,   538,   233,  1221,    77,   236,   390,   378,
03016      210,   267,   547,   162,   159,   384,   385,     4,    83,   187,
03017       89,    82,     3,   530,    89,   266,   270,    89,    89,    90,
03018      164,   194,   126,   200,   758,  1457,    65,   295,   238,   408,
03019      409,   209,  1458,    85,   281,  1221,  1458,  1458,  1554,   212,
03020     1027,   586,  1458,   180,   295,  1458,   591,   294,   295,  1458,
03021       89,   224,   225,   292,  1554,   275,   295,   212,   169,   604,
03022      215,   790,  1352,   174,   136,  1475,   239,   203,   282,   279,
03023      148,   130,  1483,   144,   619,   151,   231,   790,   251,   624,
03024      279,  1275,   627,   238,   239,   295,   631,   479,    89,   287,
03025      150,    68,   637,    70,   148,   254,   168,    74,   236,   194,
03026      278,   646,   647,   648,  1138,   650,   651,   179,   653,   654,
03027      655,   656,   657,   658,    94,    89,   194,   188,   115,   190,
03028     1522,  1532,   259,    62,   669,   930,   281,   672,  1522,   934,
03029      675,   676,   221,   678,   106,   680,   295,   682,   530,   684,
03030      295,   212,   687,   308,   689,   104,   319,   692,   693,   138,
03031       89,   125,   697,   698,   699,   129,   701,   256,   166,   238,
03032      231,   100,   101,   102,   103,  1576,   711,   148,  1353,   108,
03033      281,   275,   274,    62,    89,   720,   177,   243,   723,   258,
03034       95,   726,   727,   258,   295,   269,   183,   184,   353,   354,
03035      181,   295,   284,   366,   286,   234,   187,   264,    98,    62,
03036       89,   746,   281,   295,    89,   157,   281,   165,   286,   281,
03037      281,   100,   101,   102,   103,  1505,   295,    26,    27,   108,
03038      295,   110,    89,   295,   295,   157,    89,   400,   114,   608,
03039      609,    40,   611,   612,   613,    64,   122,   100,   101,   102,
03040      103,   108,   281,   233,   233,   108,   220,   236,    89,    90,
03041      758,   290,    97,    82,    95,   236,   295,   224,   127,   988,
03042       89,   426,   427,   428,   429,   430,   431,   432,   433,   434,
03043      435,   436,  1458,   122,   819,   988,   191,    89,   114,   253,
03044      281,   673,   178,   158,    89,   677,   127,   452,   248,   681,
03045      229,   166,  1097,   249,   295,    89,   461,   470,   127,   238,
03046      286,   233,   107,   144,   236,   286,   295,   281,    89,   482,
03047      105,  1116,  1097,   610,   695,   144,   237,   203,    87,   124,
03048       89,   295,   867,   238,    82,   137,   871,  1131,   873,   272,
03049     1134,    89,    90,   878,   879,    23,   211,   882,   511,   884,
03050      229,  1075,   392,   888,   113,   392,   891,   188,   893,   238,
03051      191,   896,    89,   238,   899,   136,   295,   902,   163,   970,
03052      905,    49,   754,   295,   909,  1095,   229,    55,   913,   127,
03053      915,   238,  1449,   918,   919,   238,   392,  1411,  1412,   924,
03054      295,    89,   927,     9,     1,   930,   144,   168,   933,   934,
03055      935,   280,   281,  1229,  1205,   280,   281,   238,   179,   392,
03056      108,   159,    89,   395,   271,   217,   295,   938,    34,   238,
03057      295,   938,   791,   792,   793,   794,   392,   280,   281,   610,
03058      224,    47,   967,  1513,   533,   534,   179,   536,   295,   945,
03059      539,   976,   295,     3,   774,   204,    89,   212,   695,   947,
03060      281,   103,  1143,  1391,   238,   990,   199,   216,  1482,  1068,
03061       67,  1391,   281,   258,   295,  1116,   225,   215,  1003,   146,
03062     1190,   148,   213,  1008,   676,  1010,   295,  1229,  1275,   281,
03063     1200,  1201,  1276,   231,   243,  1279,   281,   869,   943,  1513,
03064      238,   239,   251,   295,   101,   102,   103,   281,   241,  1034,
03065      295,   888,   145,   230,   147,   842,   888,    20,   607,   236,
03066      281,   295,  1524,   222,   223,  1050,   214,   214,  1279,    89,
03067     1590,  1613,   281,  1116,   295,    89,    90,   909,  1555,   934,
03068       20,   630,   241,   281,   232,   215,   295,    50,   392,  1204,
03069      238,   640,   641,  1166,    57,  1264,   189,   295,  1572,    69,
03070      193,  1166,  1275,   755,   281,   726,   176,   939,    57,    58,
03071       50,  1096,  1097,   127,   946,  1100,  1120,    57,   295,    89,
03072      867,   773,  1107,   271,   272,   195,  1449,  1075,  1113,   216,
03073       58,  1116,  1117,   281,   227,  1120,   295,   789,   108,  1124,
03074       77,  1296,   235,  1128,   392,   201,  1131,   295,  1294,  1134,
03075     1135,   369,  1353,   940,   281,   942,   943,  1352,   945,   392,
03076      170,   774,   919,   173,  1149,  1335,   236,  1152,   295,    -1,
03077     1155,  1156,  1120,  1158,    -1,  1160,    -1,   187,   727,  1164,
03078       -1,  1166,    -1,  1015,    -1,  1171,  1171,   157,   281,    -1,
03079     1176,  1176,    -1,  1179,  1179,   265,    -1,  1182,    -1,   392,
03080       -1,  1186,   295,    -1,  1189,   398,    -1,    -1,   157,    -1,
03081       -1,    -1,   149,    -1,    -1,    -1,   186,    -1,   238,    -1,
03082     1052,  1053,    -1,    -1,   238,    -1,   684,   879,    -1,   157,
03083      179,    -1,  1217,    -1,    -1,    -1,  1221,   842,   258,   844,
03084      845,    -1,   847,   213,  1229,   182,   192,  1232,   194,   219,
03085      199,   308,    -1,    -1,    -1,   868,   226,    -1,   228,    -1,
03086       -1,   281,   199,   283,    -1,   285,    -1,   281,   238,  1439,
03087      240,   199,  1442,    -1,    -1,   295,    -1,    -1,  1263,    -1,
03088       -1,   295,   252,    -1,   230,   222,   235,   233,   237,    -1,
03089      236,    -1,   241,   263,    -1,    -1,   353,   354,    -1,    -1,
03090       -1,   271,  1287,   791,   792,   793,   794,   235,    -1,   237,
03091     1295,   281,   505,   241,  1299,   920,    -1,    79,    -1,    -1,
03092     1305,    -1,   292,   260,  1156,   295,    -1,    89,    -1,    91,
03093       -1,   789,    -1,   938,    96,   940,   941,   942,   943,   944,
03094      945,    -1,    -1,    -1,  1329,   109,  1516,    -1,    -1,  1334,
03095      112,  1336,    -1,    -1,   967,  1340,    -1,  1342,   307,    -1,
03096     1345,    -1,  1347,  1348,    -1,    -1,  1185,  1352,   132,   427,
03097      428,   429,   430,   431,   432,   433,   434,   435,   436,   307,
03098       -1,    -1,    89,    90,    -1,    92,    -1,    71,    72,   153,
03099     1375,   155,    76,    -1,   156,   452,    -1,  1382,    -1,    -1,
03100     1385,  1571,    -1,   352,   461,    -1,  1391,    -1,    -1,   171,
03101      172,    -1,   109,  1026,  1399,    -1,    -1,    -1,   533,   534,
03102      127,   536,    -1,    -1,   539,  1410,  1411,  1412,    -1,  1414,
03103     1600,  1416,    -1,  1265,  1266,   132,  1421,   144,  1423,   123,
03104       -1,  1611,  1427,   392,    -1,   209,   395,   396,  1433,   398,
03105       -1,   909,   159,    -1,  1439,   139,   153,  1442,   155,    -1,
03106      918,   919,  1067,  1068,   392,    -1,   924,   395,   396,    -1,
03107      398,    -1,    -1,  1458,    -1,    -1,   238,   935,   162,   672,
03108       -1,   939,   675,    -1,   246,   678,    -1,    -1,   946,   682,
03109     1322,  1323,   607,    -1,    -1,    -1,    -1,    -1,    -1,   614,
03110      262,    -1,    -1,    -1,  1489,    -1,    -1,    -1,  1493,  1494,
03111       -1,  1496,   209,    -1,   278,   630,    -1,    -1,    -1,   281,
03112       -1,  1353,  1354,    -1,    -1,   640,   641,   289,  1513,   291,
03113     1515,   238,   239,   295,    -1,    -1,    -1,    -1,    -1,    -1,
03114       -1,    -1,  1527,    -1,  1157,    -1,    -1,    -1,  1533,    -1,
03115       -1,    -1,  1384,   746,  1386,    -1,   505,    -1,    -1,    -1,
03116       -1,   510,    80,    81,    -1,    -1,  1551,    -1,  1181,  1554,
03117       88,    89,    -1,  1558,   281,    -1,    94,   505,    -1,    -1,
03118       -1,   278,   510,    -1,    -1,    -1,  1405,  1406,   295,   538,
03119       -1,    -1,     1,    -1,    -1,     4,     5,    -1,   295,  1584,
03120       -1,  1586,   120,   478,    -1,   480,   481,    -1,   483,    -1,
03121      538,  1596,   727,  1598,    -1,    -1,    -1,   135,    -1,  1604,
03122       -1,  1606,    -1,    -1,   142,  1610,  1611,    -1,    80,    81,
03123       -1,  1616,    -1,    -1,    -1,    -1,    88,    89,  1623,    -1,
03124      515,    -1,    94,  1101,    -1,    -1,   521,    -1,    -1,    -1,
03125      525,    -1,    -1,   528,    -1,   530,    71,    72,    67,    -1,
03126       69,    76,    -1,    35,    36,    37,    38,    -1,   120,    -1,
03127      619,    43,    44,    45,    46,   624,    -1,    -1,   627,    -1,
03128       -1,    -1,   631,   135,    -1,    -1,    -1,    -1,   637,    -1,
03129     1522,   619,   101,   102,   103,    -1,   624,   646,  1156,   627,
03130      218,    -1,  1160,   631,    -1,    -1,    82,    -1,   123,   637,
03131       -1,    -1,    -1,    89,    90,    -1,    -1,    -1,   646,    -1,
03132      238,    -1,   131,   672,   139,    -1,   675,   676,    -1,   678,
03133       -1,   680,    -1,   682,   927,   684,    -1,   930,    -1,    -1,
03134      689,   934,    -1,    -1,   672,    -1,    -1,   162,   676,    -1,
03135      268,   127,   680,    -1,    -1,    -1,   684,    -1,    -1,    -1,
03136      136,   689,   711,   281,    -1,    -1,   218,    -1,   144,    -1,
03137      288,   720,    -1,    -1,   723,    -1,    -1,   295,    -1,    -1,
03138       -1,    -1,    -1,   711,    -1,   842,   238,   844,   845,    -1,
03139      847,    -1,   720,    -1,    -1,   723,    -1,   746,    -1,   175,
03140       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1265,  1266,    -1,
03141       -1,    -1,   188,    -1,   190,   224,   268,  1275,   746,   478,
03142       -1,   480,   481,    -1,   483,    -1,   202,    -1,    -1,   281,
03143       -1,    11,    12,    13,    -1,   211,   288,    -1,    -1,   254,
03144       -1,    -1,    -1,   295,    -1,    -1,    -1,    -1,  1461,    29,
03145       30,    31,    -1,    -1,    -1,   231,   515,  1050,    -1,    -1,
03146       -1,    -1,   521,   920,  1322,  1323,   525,    -1,    -1,   528,
03147       -1,   530,    -1,    -1,   250,    -1,   252,    -1,    58,    59,
03148       60,   938,    -1,   940,   941,   942,   943,   944,   945,    -1,
03149       -1,    -1,    -1,    -1,    -1,   271,  1354,    -1,    -1,   308,
03150       -1,    -1,    -1,    -1,  1097,   281,    -1,    -1,    -1,    -1,
03151       -1,    -1,    -1,    -1,  1107,    -1,    -1,   293,   867,   295,
03152     1113,    -1,    -1,    89,  1117,    -1,  1384,     8,  1386,   878,
03153       -1,    -1,    -1,  1546,  1547,  1393,    -1,    18,    -1,   867,
03154       -1,    -1,    -1,    24,   353,   354,    -1,    28,    -1,    -1,
03155      878,    32,    -1,   119,    -1,    -1,    -1,    -1,    39,    -1,
03156       41,    -1,   128,   129,    -1,    -1,   915,   133,   134,    -1,
03157       51,    52,    53,    -1,  1587,    -1,    -1,    -1,   927,    -1,
03158       -1,   930,    -1,    -1,   933,   934,   152,   915,   154,    -1,
03159       -1,    -1,  1450,    -1,    -1,    -1,    -1,    -1,    -1,   927,
03160       -1,    -1,   930,    -1,    -1,   933,   934,    -1,    -1,    -1,
03161     1067,  1068,    -1,    -1,    -1,    -1,    -1,   426,   427,   428,
03162      429,   430,   431,   432,   433,   434,   435,   436,  1221,    -1,
03163       -1,   197,   198,    -1,    -1,    -1,  1229,    -1,    -1,  1232,
03164       -1,   207,   208,   452,    -1,    -1,    -1,    -1,    -1,    -1,
03165       -1,    -1,   461,     7,    -1,    -1,    10,    -1,    -1,    -1,
03166       14,    15,    16,    17,  1522,    19,  1524,    21,    22,    -1,
03167       -1,    25,    -1,    -1,    -1,    -1,    -1,    -1,   244,    33,
03168       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,
03169       -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,
03170       54,  1050,    56,    -1,    -1,    -1,    -1,    61,    -1,    -1,
03171       -1,    -1,    -1,    -1,    -1,   281,    -1,    -1,    -1,    -1,
03172       -1,    -1,  1050,    -1,    -1,    -1,    -1,    -1,    -1,   295,
03173       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03174       -1,  1334,    -1,  1336,    -1,    -1,    -1,  1340,  1097,  1342,
03175       -1,  1100,  1345,    -1,  1347,    -1,    -1,    -1,  1107,    -1,
03176       -1,    -1,    -1,    -1,  1113,    -1,    -1,  1116,  1117,  1097,
03177       -1,    -1,  1100,    -1,    -1,  1124,    -1,    -1,    -1,  1107,
03178       -1,    -1,    -1,    -1,    -1,  1113,    -1,    -1,  1116,  1117,
03179       -1,    -1,    -1,    -1,    -1,    -1,  1124,   494,   495,   496,
03180      497,   498,   499,   500,   501,   502,   503,    -1,    -1,    -1,
03181       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03182       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03183       -1,    -1,    -1,  1182,   531,    -1,    -1,    -1,   535,    -1,
03184       -1,    -1,    -1,   540,   541,    -1,    -1,    -1,    -1,    -1,
03185       -1,    -1,    -1,    -1,  1182,    -1,    -1,    -1,    -1,    -1,
03186       -1,    -1,    -1,    -1,    -1,  1458,    -1,    -1,    -1,    -1,
03187       -1,    -1,  1221,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03188     1229,    -1,    -1,  1232,    -1,    -1,    -1,    -1,    -1,    -1,
03189       -1,    -1,    -1,  1221,    -1,    -1,    -1,    -1,    -1,    -1,
03190       -1,  1229,    -1,    -1,  1232,    -1,    -1,    -1,    -1,    -1,
03191       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03192       -1,    -1,  1515,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03193       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03194       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03195       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03196       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03197       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03198       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03199       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03200       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03201       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03202       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03203       -1,    -1,    -1,   842,    -1,   844,   845,    -1,   847,    -1,
03204       -1,    -1,  1391,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03205       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03206       -1,    -1,    -1,  1391,    -1,    -1,    -1,    -1,    -1,    -1,
03207       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03208       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03209       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03210       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1458,
03211       -1,   920,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03212       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   938,
03213     1458,   940,   941,   942,   943,   944,   945,    -1,    -1,    -1,
03214       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03215       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03216       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03217       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03218       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03219       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03220       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03221       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03222       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03223       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03224       -1,    -1,  1051,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03225       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1067,  1068
03226 };
03227 
03228 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
03229    symbol of state STATE-NUM.  */
03230 static const yytype_uint16 yystos[] =
03231 {
03232        0,   116,   298,     3,   187,   245,   300,   549,   551,   663,
03233      764,     0,   550,   764,   549,   664,   764,   118,   302,   111,
03234      295,   297,   395,     6,   261,   665,   695,   765,     4,   766,
03235      117,   301,   131,   396,   423,   426,   549,   552,   764,   698,
03236      765,   297,   766,   766,   161,   488,   423,   427,   158,   397,
03237      483,   297,   395,   766,   297,   160,   487,   489,   299,    80,
03238       81,    88,    89,    94,   120,   135,   218,   238,   268,   281,
03239      288,   297,   333,   334,   349,   350,   359,   407,   439,   609,
03240      650,   711,   737,   754,    11,    12,    13,    29,    30,    31,
03241       58,    59,    60,   484,   205,   398,   587,   297,   766,   297,
03242      350,   107,   124,   163,   258,   297,   350,   384,   416,   495,
03243      690,   737,   766,   766,   115,   670,   766,   351,    20,    50,
03244       57,   360,    20,    50,    57,   408,   766,   766,   551,   652,
03245      766,   738,   764,   126,   275,   332,   419,   728,   297,    35,
03246       36,    37,    38,    43,    44,    45,    46,   588,   206,   399,
03247      589,   297,   388,   551,   493,   551,   493,   691,   766,   297,
03248      766,   670,   297,   765,   297,   297,   766,   297,    77,   149,
03249      182,   199,   222,   260,   327,   468,   538,   576,   614,   651,
03250      696,   729,   297,     5,   297,   445,   764,   765,   766,   767,
03251      297,   297,   297,   297,   241,   620,   297,    84,   339,   385,
03252      301,   301,   294,   297,   350,   737,   762,   327,   766,   670,
03253      327,   328,   469,   539,   577,   615,   697,   210,   279,   297,
03254      350,   596,   650,   734,   446,   766,   297,   341,   552,   297,
03255      350,   650,   690,   737,   267,   417,   709,   496,   709,   270,
03256      715,   763,   297,   297,   297,   297,    78,   297,   327,   329,
03257      332,   150,   297,   466,   468,   766,   183,   184,   297,   538,
03258      540,   542,   543,   670,   201,   297,   576,   578,   670,   223,
03259      297,   614,   616,   620,   297,   695,   696,   765,   765,     7,
03260       10,    14,    15,    16,    17,    19,    21,    22,    25,    33,
03261       42,    48,    54,    56,    61,   735,   295,   445,   764,   765,
03262      766,   766,   164,   340,   497,   200,   580,   710,    83,   297,
03263      336,   350,   690,   737,   297,   336,   350,   690,   737,   766,
03264       73,    99,   237,   297,   320,   350,   368,   646,   650,   737,
03265      330,   332,   467,   766,   541,   542,   276,   277,   544,   670,
03266      730,   731,   579,   670,   617,   620,   297,   297,   297,   494,
03267      552,   297,   581,   125,   129,   220,   253,   297,   350,   389,
03268      418,   420,   680,   737,   338,   551,   766,   765,   765,   765,
03269      297,   395,   297,   395,   297,   395,   297,   297,   544,   297,
03270      395,   297,   395,   297,   140,   247,   297,   350,   449,   669,
03271      491,   551,   421,   422,   551,   390,   681,    85,   337,   342,
03272      766,   297,   282,   369,   741,   647,   741,   544,   670,   670,
03273      423,   142,   297,   333,   334,   349,   350,   359,   407,   439,
03274      451,   609,   650,   711,   737,   754,   119,   128,   133,   134,
03275      152,   154,   197,   198,   207,   208,   244,   297,   350,   405,
03276      420,   432,   435,   437,   472,   476,   572,   574,   590,   592,
03277      661,   737,   177,   297,   350,   526,   737,    23,    49,    55,
03278      343,   283,   285,   297,   350,   650,   690,   737,   742,   746,
03279      766,   765,   297,   297,   297,   670,   670,   297,   109,   132,
03280      153,   155,   209,   278,   391,   428,   434,   452,   474,   478,
03281      594,   732,   551,   668,   668,   668,   668,   668,   668,   668,
03282      668,   668,   668,   668,   516,   527,   551,   297,   551,   748,
03283      747,   766,   297,   297,   734,   392,   428,   434,   423,   428,
03284      434,   475,   428,   434,   479,   766,   428,   434,   733,   297,
03285      130,   424,   424,   424,   424,   424,   424,   424,   573,   424,
03286      424,   424,   424,    79,    91,    96,   112,   156,   171,   172,
03287      246,   262,   289,   291,   297,   331,   350,   354,   363,   400,
03288      480,   512,   514,   650,   666,   699,   737,   755,   757,   287,
03289      752,   145,   147,   189,   193,   227,   235,   297,   350,   458,
03290      462,   555,   563,   625,   640,   737,   766,   297,   297,   428,
03291      434,   429,   497,   297,   428,   434,   297,   428,   434,   595,
03292      297,   428,   434,   423,   425,   428,   434,   424,    71,    72,
03293       76,   123,   139,   162,   254,   318,   319,   324,   415,   433,
03294      448,   492,   656,   682,   436,   656,   682,   438,   656,   682,
03295      424,   477,   656,   682,   297,   350,   737,   575,   656,   682,
03296      424,   424,   185,   242,   545,   657,   662,   332,   517,   552,
03297      542,   401,   297,   513,   515,   667,   517,   542,   517,     8,
03298       18,    24,    28,    32,    39,    41,    51,    52,    53,   753,
03299      151,   470,   743,   148,   456,   459,   463,   194,   556,   567,
03300      564,   236,   626,   644,   641,   297,   297,   359,   297,   406,
03301      656,   682,   670,   670,   318,   325,   448,   670,   670,   670,
03302      656,   683,   297,   350,   737,   297,   350,   737,   297,   350,
03303      737,   473,   656,   682,   297,   350,   737,   297,   350,   737,
03304      591,   656,   682,   593,   656,   682,   546,   658,   297,   350,
03305      737,   297,   297,   297,   297,   517,   297,   517,   297,   517,
03306      297,   517,   297,   297,   297,   297,   471,    93,   297,   350,
03307      355,   650,   690,   737,   181,   465,   536,   552,   108,   271,
03308      297,   350,   386,   650,   716,   146,   297,   350,   456,   460,
03309      737,   536,   552,   566,    95,   191,   297,   350,   361,   559,
03310      650,   192,   297,   350,   561,   567,   737,   536,   552,   643,
03311       62,   100,   101,   102,   103,   229,   297,   303,   350,   370,
03312      372,   374,   376,   386,   629,   650,   230,   297,   350,   631,
03313      644,   737,   297,   297,   350,   737,   297,   297,   319,   326,
03314      492,   297,   297,   297,   297,   297,   350,   737,   297,   350,
03315      737,   297,   350,   737,   297,   657,   297,   656,   682,    69,
03316      157,   186,   213,   219,   226,   228,   240,   252,   263,   292,
03317      297,   315,   350,   386,   481,   547,   602,   610,   623,   627,
03318      650,   654,   678,   700,   716,   737,   758,   356,   552,   286,
03319      456,   457,   750,   387,   695,   765,   106,   382,   717,   461,
03320      456,   567,   568,   750,   362,   466,   766,   382,   562,   456,
03321      644,   645,   750,   304,   540,   542,   371,   578,   670,   373,
03322      578,   670,   375,   578,   670,   377,   578,   670,   382,   632,
03323      297,    68,    70,    74,   314,   316,   317,   321,   482,   548,
03324       67,   312,   551,   739,   611,   312,   551,   624,   642,   642,
03325      655,   551,   677,   679,   701,   759,    82,    90,   127,   136,
03326      144,   175,   188,   190,   202,   211,   231,   250,   293,   297,
03327      335,   350,   352,   430,   440,   454,   522,   553,   557,   582,
03328      597,   633,   673,   678,   716,   737,   760,   537,   766,   552,
03329      749,   297,   297,     9,    34,    47,   383,   137,   217,   297,
03330      350,   443,   607,   737,   297,   456,   297,   297,   104,   378,
03331      560,   297,   566,   567,   297,   297,   297,   297,   297,   297,
03332      167,   378,   502,   630,   297,   643,   644,   221,   612,   256,
03333      686,   297,   297,   350,   737,   138,   233,   297,   447,   637,
03334      644,   297,   481,   637,   644,   758,   551,   729,   196,   297,
03335      570,   610,   644,   110,   280,   297,   303,   350,   370,   372,
03336      374,   376,   386,   393,   629,   650,   736,   737,   166,   500,
03337      628,   159,   215,   239,   297,   335,   350,   352,   430,   454,
03338      485,   600,   633,   648,   650,   737,    65,   234,   290,   297,
03339      309,   350,   639,   737,   756,    64,   212,   297,   307,   335,
03340      350,   352,   430,   454,   485,   599,   600,   633,   648,   650,
03341      737,   297,   481,   637,   644,   243,   659,   353,   422,   426,
03342      431,   441,   643,   644,   312,   464,   551,   523,   642,   312,
03343      551,   565,   565,   583,   642,   464,   598,   634,   643,   644,
03344      674,   765,   274,   726,   761,   297,   766,   339,   751,   297,
03345      269,   444,   712,   378,   608,   379,   540,   542,    75,   273,
03346      297,   322,   724,   503,   540,   542,   297,   322,   724,   613,
03347      297,   264,   687,   702,   297,   643,   638,   766,   603,   734,
03348      571,    26,    27,    40,   394,   297,   501,   297,   350,   650,
03349      737,   486,   490,   764,   536,   552,   601,   740,   552,   649,
03350      653,    98,   310,   366,   642,   516,   308,   695,   765,   659,
03351      620,   297,   297,   307,   335,   350,   430,   454,   650,   737,
03352       87,   113,   204,   216,   225,   251,   297,   347,   350,   402,
03353      585,   605,   621,   659,   675,   737,   265,   442,   644,   704,
03354      284,   455,   744,   750,   297,   350,   650,   737,   481,   554,
03355      165,   498,   558,   297,   350,   650,   736,   737,   297,   335,
03356      350,   352,   454,   553,   557,   599,   633,   737,    92,   297,
03357      350,   352,   357,   430,   454,   485,   648,   650,   737,   297,
03358      454,   673,   765,   727,    63,   168,   179,   297,   305,   350,
03359      440,   504,   530,   737,   297,   122,   203,   413,   584,   713,
03360      297,   413,   297,   413,   297,   170,   173,   323,   510,   517,
03361      518,   510,   517,   518,   725,   503,   257,   297,   688,   703,
03362      297,   297,   297,   643,   644,   313,   766,   297,   297,   610,
03363      644,   297,   297,   623,   627,   297,   395,   297,   395,   297,
03364      395,   766,   169,   174,   297,   350,   508,   520,   737,   637,
03365      670,   297,   297,   620,   660,   620,   403,   620,    97,   364,
03366      586,   224,   606,   618,   618,   622,   364,   676,   705,   297,
03367      378,   502,   745,   214,   232,   272,   297,   350,   386,   604,
03368      635,   650,   716,   718,   737,   297,   350,   352,   361,   430,
03369      454,   553,   559,   650,   737,   499,   297,   350,   352,   430,
03370      650,   737,   358,   430,    86,   143,   259,   297,   344,   453,
03371      692,   306,   542,   505,   643,   644,   531,   643,   644,   414,
03372      561,   567,   631,   637,   644,   413,   114,   404,   413,   584,
03373      714,   511,   519,   297,   725,   297,   689,   702,   297,   718,
03374      297,   367,   404,   509,   637,   643,   644,   521,   637,   643,
03375      644,   297,   178,   528,   297,   650,   620,   297,   650,   365,
03376      297,   650,   619,   297,   650,   297,   650,   297,   650,   121,
03377      266,   297,   409,   706,   297,   744,   750,   740,   636,   643,
03378      644,   248,   671,   719,   297,   553,   297,   345,   637,   643,
03379      644,   297,   637,   643,   644,   693,   297,   350,   440,   504,
03380      530,   737,   176,   506,   524,   644,   704,   378,   502,   532,
03381      297,   322,   724,   670,   670,   297,   141,   297,   450,   517,
03382      518,   297,   510,   517,   297,   255,   297,   684,   297,   297,
03383      528,   297,   528,   529,   297,   348,    66,   297,   311,   620,
03384      297,   620,   180,   344,   410,   533,   692,   195,   524,   569,
03385      644,   704,   707,   729,   297,   303,   350,   370,   372,   374,
03386      376,   386,   629,   650,   736,   737,   766,   249,   672,   720,
03387      322,   346,   724,   404,   694,   517,   378,   502,   507,   297,
03388      297,   297,   297,   750,   297,   450,   510,   517,   518,   297,
03389      650,   620,   534,   637,   643,   644,   411,   524,   569,   644,
03390      704,   297,   378,   502,   708,   297,   766,   766,   105,   380,
03391      721,   297,   297,   322,   724,   497,   525,   297,   685,   718,
03392      620,   510,   517,   518,   535,   378,   412,   502,   297,   297,
03393      766,   381,   587,   722,   297,   297,   620,   297,   297,   297,
03394      297,   620,   589,   723,   297,   297
03395 };
03396 
03397 #define yyerrok         (yyerrstatus = 0)
03398 #define yyclearin       (yychar = YYEMPTY)
03399 #define YYEMPTY         (-2)
03400 #define YYEOF           0
03401 
03402 #define YYACCEPT        goto yyacceptlab
03403 #define YYABORT         goto yyabortlab
03404 #define YYERROR         goto yyerrorlab
03405 
03406 
03407 /* Like YYERROR except do call yyerror.  This remains here temporarily
03408    to ease the transition to the new meaning of YYERROR, for GCC.
03409    Once GCC version 2 has supplanted version 1, this can go.  */
03410 
03411 #define YYFAIL          goto yyerrlab
03412 
03413 #define YYRECOVERING()  (!!yyerrstatus)
03414 
03415 #define YYBACKUP(Token, Value)                                  \
03416 do                                                              \
03417   if (yychar == YYEMPTY && yylen == 1)                          \
03418     {                                                           \
03419       yychar = (Token);                                         \
03420       yylval = (Value);                                         \
03421       yytoken = YYTRANSLATE (yychar);                           \
03422       YYPOPSTACK (1);                                           \
03423       goto yybackup;                                            \
03424     }                                                           \
03425   else                                                          \
03426     {                                                           \
03427       yyerror (YY_("syntax error: cannot back up")); \
03428       YYERROR;                                                  \
03429     }                                                           \
03430 while (YYID (0))
03431 
03432 
03433 #define YYTERROR        1
03434 #define YYERRCODE       256
03435 
03436 
03437 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
03438    If N is 0, then set CURRENT to the empty location which ends
03439    the previous symbol: RHS[0] (always defined).  */
03440 
03441 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
03442 #ifndef YYLLOC_DEFAULT
03443 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
03444     do                                                                  \
03445       if (YYID (N))                                                    \
03446         {                                                               \
03447           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
03448           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
03449           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
03450           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
03451         }                                                               \
03452       else                                                              \
03453         {                                                               \
03454           (Current).first_line   = (Current).last_line   =              \
03455             YYRHSLOC (Rhs, 0).last_line;                                \
03456           (Current).first_column = (Current).last_column =              \
03457             YYRHSLOC (Rhs, 0).last_column;                              \
03458         }                                                               \
03459     while (YYID (0))
03460 #endif
03461 
03462 
03463 /* YY_LOCATION_PRINT -- Print the location on the stream.
03464    This macro was not mandated originally: define only if we know
03465    we won't break user code: when these are the locations we know.  */
03466 
03467 #ifndef YY_LOCATION_PRINT
03468 # if YYLTYPE_IS_TRIVIAL
03469 #  define YY_LOCATION_PRINT(File, Loc)                  \
03470      fprintf (File, "%d.%d-%d.%d",                      \
03471               (Loc).first_line, (Loc).first_column,     \
03472               (Loc).last_line,  (Loc).last_column)
03473 # else
03474 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
03475 # endif
03476 #endif
03477 
03478 
03479 /* YYLEX -- calling `yylex' with the right arguments.  */
03480 
03481 #ifdef YYLEX_PARAM
03482 # define YYLEX yylex (YYLEX_PARAM)
03483 #else
03484 # define YYLEX yylex ()
03485 #endif
03486 
03487 /* Enable debugging if requested.  */
03488 #if YYDEBUG
03489 
03490 # ifndef YYFPRINTF
03491 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
03492 #  define YYFPRINTF fprintf
03493 # endif
03494 
03495 # define YYDPRINTF(Args)                        \
03496 do {                                            \
03497   if (yydebug)                                  \
03498     YYFPRINTF Args;                             \
03499 } while (YYID (0))
03500 
03501 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
03502 do {                                                                      \
03503   if (yydebug)                                                            \
03504     {                                                                     \
03505       YYFPRINTF (stderr, "%s ", Title);                                   \
03506       yy_symbol_print (stderr,                                            \
03507                   Type, Value); \
03508       YYFPRINTF (stderr, "\n");                                           \
03509     }                                                                     \
03510 } while (YYID (0))
03511 
03512 
03513 /*--------------------------------.
03514 | Print this symbol on YYOUTPUT.  |
03515 `--------------------------------*/
03516 
03517 /*ARGSUSED*/
03518 #if (defined __STDC__ || defined __C99__FUNC__ \
03519      || defined __cplusplus || defined _MSC_VER)
03520 static void
03521 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
03522 #else
03523 static void
03524 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
03525     FILE *yyoutput;
03526     int yytype;
03527     YYSTYPE const * const yyvaluep;
03528 #endif
03529 {
03530   if (!yyvaluep)
03531     return;
03532 # ifdef YYPRINT
03533   if (yytype < YYNTOKENS)
03534     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
03535 # else
03536   YYUSE (yyoutput);
03537 # endif
03538   switch (yytype)
03539     {
03540       default:
03541         break;
03542     }
03543 }
03544 
03545 
03546 /*--------------------------------.
03547 | Print this symbol on YYOUTPUT.  |
03548 `--------------------------------*/
03549 
03550 #if (defined __STDC__ || defined __C99__FUNC__ \
03551      || defined __cplusplus || defined _MSC_VER)
03552 static void
03553 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
03554 #else
03555 static void
03556 yy_symbol_print (yyoutput, yytype, yyvaluep)
03557     FILE *yyoutput;
03558     int yytype;
03559     YYSTYPE const * const yyvaluep;
03560 #endif
03561 {
03562   if (yytype < YYNTOKENS)
03563     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
03564   else
03565     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
03566 
03567   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
03568   YYFPRINTF (yyoutput, ")");
03569 }
03570 
03571 /*------------------------------------------------------------------.
03572 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
03573 | TOP (included).                                                   |
03574 `------------------------------------------------------------------*/
03575 
03576 #if (defined __STDC__ || defined __C99__FUNC__ \
03577      || defined __cplusplus || defined _MSC_VER)
03578 static void
03579 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
03580 #else
03581 static void
03582 yy_stack_print (yybottom, yytop)
03583     yytype_int16 *yybottom;
03584     yytype_int16 *yytop;
03585 #endif
03586 {
03587   YYFPRINTF (stderr, "Stack now");
03588   for (; yybottom <= yytop; yybottom++)
03589     {
03590       int yybot = *yybottom;
03591       YYFPRINTF (stderr, " %d", yybot);
03592     }
03593   YYFPRINTF (stderr, "\n");
03594 }
03595 
03596 # define YY_STACK_PRINT(Bottom, Top)                            \
03597 do {                                                            \
03598   if (yydebug)                                                  \
03599     yy_stack_print ((Bottom), (Top));                           \
03600 } while (YYID (0))
03601 
03602 
03603 /*------------------------------------------------.
03604 | Report that the YYRULE is going to be reduced.  |
03605 `------------------------------------------------*/
03606 
03607 #if (defined __STDC__ || defined __C99__FUNC__ \
03608      || defined __cplusplus || defined _MSC_VER)
03609 static void
03610 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
03611 #else
03612 static void
03613 yy_reduce_print (yyvsp, yyrule)
03614     YYSTYPE *yyvsp;
03615     int yyrule;
03616 #endif
03617 {
03618   int yynrhs = yyr2[yyrule];
03619   int yyi;
03620   unsigned long int yylno = yyrline[yyrule];
03621   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
03622              yyrule - 1, yylno);
03623   /* The symbols being reduced.  */
03624   for (yyi = 0; yyi < yynrhs; yyi++)
03625     {
03626       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
03627       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
03628                        &(yyvsp[(yyi + 1) - (yynrhs)])
03629                                        );
03630       YYFPRINTF (stderr, "\n");
03631     }
03632 }
03633 
03634 # define YY_REDUCE_PRINT(Rule)          \
03635 do {                                    \
03636   if (yydebug)                          \
03637     yy_reduce_print (yyvsp, Rule); \
03638 } while (YYID (0))
03639 
03640 /* Nonzero means print parse trace.  It is left uninitialized so that
03641    multiple parsers can coexist.  */
03642 int yydebug;
03643 #else /* !YYDEBUG */
03644 # define YYDPRINTF(Args)
03645 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
03646 # define YY_STACK_PRINT(Bottom, Top)
03647 # define YY_REDUCE_PRINT(Rule)
03648 #endif /* !YYDEBUG */
03649 
03650 
03651 /* YYINITDEPTH -- initial size of the parser's stacks.  */
03652 #ifndef YYINITDEPTH
03653 # define YYINITDEPTH 200
03654 #endif
03655 
03656 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
03657    if the built-in stack extension method is used).
03658 
03659    Do not make this value too large; the results are undefined if
03660    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
03661    evaluated with infinite-precision integer arithmetic.  */
03662 
03663 #ifndef YYMAXDEPTH
03664 # define YYMAXDEPTH 10000
03665 #endif
03666 
03667 
03668 
03669 #if YYERROR_VERBOSE
03670 
03671 # ifndef yystrlen
03672 #  if defined __GLIBC__ && defined _STRING_H
03673 #   define yystrlen strlen
03674 #  else
03675 /* Return the length of YYSTR.  */
03676 #if (defined __STDC__ || defined __C99__FUNC__ \
03677      || defined __cplusplus || defined _MSC_VER)
03678 static YYSIZE_T
03679 yystrlen (const char *yystr)
03680 #else
03681 static YYSIZE_T
03682 yystrlen (yystr)
03683     const char *yystr;
03684 #endif
03685 {
03686   YYSIZE_T yylen;
03687   for (yylen = 0; yystr[yylen]; yylen++)
03688     continue;
03689   return yylen;
03690 }
03691 #  endif
03692 # endif
03693 
03694 # ifndef yystpcpy
03695 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
03696 #   define yystpcpy stpcpy
03697 #  else
03698 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
03699    YYDEST.  */
03700 #if (defined __STDC__ || defined __C99__FUNC__ \
03701      || defined __cplusplus || defined _MSC_VER)
03702 static char *
03703 yystpcpy (char *yydest, const char *yysrc)
03704 #else
03705 static char *
03706 yystpcpy (yydest, yysrc)
03707     char *yydest;
03708     const char *yysrc;
03709 #endif
03710 {
03711   char *yyd = yydest;
03712   const char *yys = yysrc;
03713 
03714   while ((*yyd++ = *yys++) != '\0')
03715     continue;
03716 
03717   return yyd - 1;
03718 }
03719 #  endif
03720 # endif
03721 
03722 # ifndef yytnamerr
03723 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
03724    quotes and backslashes, so that it's suitable for yyerror.  The
03725    heuristic is that double-quoting is unnecessary unless the string
03726    contains an apostrophe, a comma, or backslash (other than
03727    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
03728    null, do not copy; instead, return the length of what the result
03729    would have been.  */
03730 static YYSIZE_T
03731 yytnamerr (char *yyres, const char *yystr)
03732 {
03733   if (*yystr == '"')
03734     {
03735       YYSIZE_T yyn = 0;
03736       char const *yyp = yystr;
03737 
03738       for (;;)
03739         switch (*++yyp)
03740           {
03741           case '\'':
03742           case ',':
03743             goto do_not_strip_quotes;
03744 
03745           case '\\':
03746             if (*++yyp != '\\')
03747               goto do_not_strip_quotes;
03748             /* Fall through.  */
03749           default:
03750             if (yyres)
03751               yyres[yyn] = *yyp;
03752             yyn++;
03753             break;
03754 
03755           case '"':
03756             if (yyres)
03757               yyres[yyn] = '\0';
03758             return yyn;
03759           }
03760     do_not_strip_quotes: ;
03761     }
03762 
03763   if (! yyres)
03764     return yystrlen (yystr);
03765 
03766   return yystpcpy (yyres, yystr) - yyres;
03767 }
03768 # endif
03769 
03770 /* Copy into YYRESULT an error message about the unexpected token
03771    YYCHAR while in state YYSTATE.  Return the number of bytes copied,
03772    including the terminating null byte.  If YYRESULT is null, do not
03773    copy anything; just return the number of bytes that would be
03774    copied.  As a special case, return 0 if an ordinary "syntax error"
03775    message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
03776    size calculation.  */
03777 static YYSIZE_T
03778 yysyntax_error (char *yyresult, int yystate, int yychar)
03779 {
03780   int yyn = yypact[yystate];
03781 
03782   if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
03783     return 0;
03784   else
03785     {
03786       int yytype = YYTRANSLATE (yychar);
03787       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
03788       YYSIZE_T yysize = yysize0;
03789       YYSIZE_T yysize1;
03790       int yysize_overflow = 0;
03791       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
03792       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
03793       int yyx;
03794 
03795 # if 0
03796       /* This is so xgettext sees the translatable formats that are
03797          constructed on the fly.  */
03798       YY_("syntax error, unexpected %s");
03799       YY_("syntax error, unexpected %s, expecting %s");
03800       YY_("syntax error, unexpected %s, expecting %s or %s");
03801       YY_("syntax error, unexpected %s, expecting %s or %s or %s");
03802       YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
03803 # endif
03804       char *yyfmt;
03805       char const *yyf;
03806       static char const yyunexpected[] = "syntax error, unexpected %s";
03807       static char const yyexpecting[] = ", expecting %s";
03808       static char const yyor[] = " or %s";
03809       char yyformat[sizeof yyunexpected
03810                     + sizeof yyexpecting - 1
03811                     + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
03812                        * (sizeof yyor - 1))];
03813       char const *yyprefix = yyexpecting;
03814 
03815       /* Start YYX at -YYN if negative to avoid negative indexes in
03816          YYCHECK.  */
03817       int yyxbegin = yyn < 0 ? -yyn : 0;
03818 
03819       /* Stay within bounds of both yycheck and yytname.  */
03820       int yychecklim = YYLAST - yyn + 1;
03821       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
03822       int yycount = 1;
03823 
03824       yyarg[0] = yytname[yytype];
03825       yyfmt = yystpcpy (yyformat, yyunexpected);
03826 
03827       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
03828         if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
03829           {
03830             if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
03831               {
03832                 yycount = 1;
03833                 yysize = yysize0;
03834                 yyformat[sizeof yyunexpected - 1] = '\0';
03835                 break;
03836               }
03837             yyarg[yycount++] = yytname[yyx];
03838             yysize1 = yysize + yytnamerr (0, yytname[yyx]);
03839             yysize_overflow |= (yysize1 < yysize);
03840             yysize = yysize1;
03841             yyfmt = yystpcpy (yyfmt, yyprefix);
03842             yyprefix = yyor;
03843           }
03844 
03845       yyf = YY_(yyformat);
03846       yysize1 = yysize + yystrlen (yyf);
03847       yysize_overflow |= (yysize1 < yysize);
03848       yysize = yysize1;
03849 
03850       if (yysize_overflow)
03851         return YYSIZE_MAXIMUM;
03852 
03853       if (yyresult)
03854         {
03855           /* Avoid sprintf, as that infringes on the user's name space.
03856              Don't have undefined behavior even if the translation
03857              produced a string with the wrong number of "%s"s.  */
03858           char *yyp = yyresult;
03859           int yyi = 0;
03860           while ((*yyp = *yyf) != '\0')
03861             {
03862               if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
03863                 {
03864                   yyp += yytnamerr (yyp, yyarg[yyi++]);
03865                   yyf += 2;
03866                 }
03867               else
03868                 {
03869                   yyp++;
03870                   yyf++;
03871                 }
03872             }
03873         }
03874       return yysize;
03875     }
03876 }
03877 #endif /* YYERROR_VERBOSE */
03878 
03879 
03880 /*-----------------------------------------------.
03881 | Release the memory associated to this symbol.  |
03882 `-----------------------------------------------*/
03883 
03884 /*ARGSUSED*/
03885 #if (defined __STDC__ || defined __C99__FUNC__ \
03886      || defined __cplusplus || defined _MSC_VER)
03887 static void
03888 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
03889 #else
03890 static void
03891 yydestruct (yymsg, yytype, yyvaluep)
03892     const char *yymsg;
03893     int yytype;
03894     YYSTYPE *yyvaluep;
03895 #endif
03896 {
03897   YYUSE (yyvaluep);
03898 
03899   if (!yymsg)
03900     yymsg = "Deleting";
03901   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
03902 
03903   switch (yytype)
03904     {
03905 
03906       default:
03907         break;
03908     }
03909 }
03910 
03911 /* Prevent warnings from -Wmissing-prototypes.  */
03912 #ifdef YYPARSE_PARAM
03913 #if defined __STDC__ || defined __cplusplus
03914 int yyparse (void *YYPARSE_PARAM);
03915 #else
03916 int yyparse ();
03917 #endif
03918 #else /* ! YYPARSE_PARAM */
03919 #if defined __STDC__ || defined __cplusplus
03920 int yyparse (void);
03921 #else
03922 int yyparse ();
03923 #endif
03924 #endif /* ! YYPARSE_PARAM */
03925 
03926 
03927 /* The lookahead symbol.  */
03928 int yychar;
03929 
03930 /* The semantic value of the lookahead symbol.  */
03931 YYSTYPE yylval;
03932 
03933 /* Number of syntax errors so far.  */
03934 int yynerrs;
03935 
03936 
03937 
03938 /*-------------------------.
03939 | yyparse or yypush_parse.  |
03940 `-------------------------*/
03941 
03942 #ifdef YYPARSE_PARAM
03943 #if (defined __STDC__ || defined __C99__FUNC__ \
03944      || defined __cplusplus || defined _MSC_VER)
03945 int
03946 yyparse (void *YYPARSE_PARAM)
03947 #else
03948 int
03949 yyparse (YYPARSE_PARAM)
03950     void *YYPARSE_PARAM;
03951 #endif
03952 #else /* ! YYPARSE_PARAM */
03953 #if (defined __STDC__ || defined __C99__FUNC__ \
03954      || defined __cplusplus || defined _MSC_VER)
03955 int
03956 yyparse (void)
03957 #else
03958 int
03959 yyparse ()
03960 
03961 #endif
03962 #endif
03963 {
03964 
03965 
03966     int yystate;
03967     /* Number of tokens to shift before error messages enabled.  */
03968     int yyerrstatus;
03969 
03970     /* The stacks and their tools:
03971        `yyss': related to states.
03972        `yyvs': related to semantic values.
03973 
03974        Refer to the stacks thru separate pointers, to allow yyoverflow
03975        to reallocate them elsewhere.  */
03976 
03977     /* The state stack.  */
03978     yytype_int16 yyssa[YYINITDEPTH];
03979     yytype_int16 *yyss;
03980     yytype_int16 *yyssp;
03981 
03982     /* The semantic value stack.  */
03983     YYSTYPE yyvsa[YYINITDEPTH];
03984     YYSTYPE *yyvs;
03985     YYSTYPE *yyvsp;
03986 
03987     YYSIZE_T yystacksize;
03988 
03989   int yyn;
03990   int yyresult;
03991   /* Lookahead token as an internal (translated) token number.  */
03992   int yytoken;
03993   /* The variables used to return semantic value and location from the
03994      action routines.  */
03995   YYSTYPE yyval;
03996 
03997 #if YYERROR_VERBOSE
03998   /* Buffer for error messages, and its allocated size.  */
03999   char yymsgbuf[128];
04000   char *yymsg = yymsgbuf;
04001   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
04002 #endif
04003 
04004 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
04005 
04006   /* The number of symbols on the RHS of the reduced rule.
04007      Keep to zero when no symbol should be popped.  */
04008   int yylen = 0;
04009 
04010   yytoken = 0;
04011   yyss = yyssa;
04012   yyvs = yyvsa;
04013   yystacksize = YYINITDEPTH;
04014 
04015   YYDPRINTF ((stderr, "Starting parse\n"));
04016 
04017   yystate = 0;
04018   yyerrstatus = 0;
04019   yynerrs = 0;
04020   yychar = YYEMPTY; /* Cause a token to be read.  */
04021 
04022   /* Initialize stack pointers.
04023      Waste one element of value and location stack
04024      so that they stay on the same level as the state stack.
04025      The wasted elements are never initialized.  */
04026   yyssp = yyss;
04027   yyvsp = yyvs;
04028 
04029   goto yysetstate;
04030 
04031 /*------------------------------------------------------------.
04032 | yynewstate -- Push a new state, which is found in yystate.  |
04033 `------------------------------------------------------------*/
04034  yynewstate:
04035   /* In all cases, when you get here, the value and location stacks
04036      have just been pushed.  So pushing a state here evens the stacks.  */
04037   yyssp++;
04038 
04039  yysetstate:
04040   *yyssp = yystate;
04041 
04042   if (yyss + yystacksize - 1 <= yyssp)
04043     {
04044       /* Get the current used size of the three stacks, in elements.  */
04045       YYSIZE_T yysize = yyssp - yyss + 1;
04046 
04047 #ifdef yyoverflow
04048       {
04049         /* Give user a chance to reallocate the stack.  Use copies of
04050            these so that the &'s don't force the real ones into
04051            memory.  */
04052         YYSTYPE *yyvs1 = yyvs;
04053         yytype_int16 *yyss1 = yyss;
04054 
04055         /* Each stack pointer address is followed by the size of the
04056            data in use in that stack, in bytes.  This used to be a
04057            conditional around just the two extra args, but that might
04058            be undefined if yyoverflow is a macro.  */
04059         yyoverflow (YY_("memory exhausted"),
04060                     &yyss1, yysize * sizeof (*yyssp),
04061                     &yyvs1, yysize * sizeof (*yyvsp),
04062                     &yystacksize);
04063 
04064         yyss = yyss1;
04065         yyvs = yyvs1;
04066       }
04067 #else /* no yyoverflow */
04068 # ifndef YYSTACK_RELOCATE
04069       goto yyexhaustedlab;
04070 # else
04071       /* Extend the stack our own way.  */
04072       if (YYMAXDEPTH <= yystacksize)
04073         goto yyexhaustedlab;
04074       yystacksize *= 2;
04075       if (YYMAXDEPTH < yystacksize)
04076         yystacksize = YYMAXDEPTH;
04077 
04078       {
04079         yytype_int16 *yyss1 = yyss;
04080         union yyalloc *yyptr =
04081           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
04082         if (! yyptr)
04083           goto yyexhaustedlab;
04084         YYSTACK_RELOCATE (yyss_alloc, yyss);
04085         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
04086 #  undef YYSTACK_RELOCATE
04087         if (yyss1 != yyssa)
04088           YYSTACK_FREE (yyss1);
04089       }
04090 # endif
04091 #endif /* no yyoverflow */
04092 
04093       yyssp = yyss + yysize - 1;
04094       yyvsp = yyvs + yysize - 1;
04095 
04096       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
04097                   (unsigned long int) yystacksize));
04098 
04099       if (yyss + yystacksize - 1 <= yyssp)
04100         YYABORT;
04101     }
04102 
04103   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
04104 
04105   if (yystate == YYFINAL)
04106     YYACCEPT;
04107 
04108   goto yybackup;
04109 
04110 /*-----------.
04111 | yybackup.  |
04112 `-----------*/
04113 yybackup:
04114 
04115   /* Do appropriate processing given the current state.  Read a
04116      lookahead token if we need one and don't already have one.  */
04117 
04118   /* First try to decide what to do without reference to lookahead token.  */
04119   yyn = yypact[yystate];
04120   if (yyn == YYPACT_NINF)
04121     goto yydefault;
04122 
04123   /* Not known => get a lookahead token if don't already have one.  */
04124 
04125   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
04126   if (yychar == YYEMPTY)
04127     {
04128       YYDPRINTF ((stderr, "Reading a token: "));
04129       yychar = YYLEX;
04130     }
04131 
04132   if (yychar <= YYEOF)
04133     {
04134       yychar = yytoken = YYEOF;
04135       YYDPRINTF ((stderr, "Now at end of input.\n"));
04136     }
04137   else
04138     {
04139       yytoken = YYTRANSLATE (yychar);
04140       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
04141     }
04142 
04143   /* If the proper action on seeing token YYTOKEN is to reduce or to
04144      detect an error, take that action.  */
04145   yyn += yytoken;
04146   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
04147     goto yydefault;
04148   yyn = yytable[yyn];
04149   if (yyn <= 0)
04150     {
04151       if (yyn == 0 || yyn == YYTABLE_NINF)
04152         goto yyerrlab;
04153       yyn = -yyn;
04154       goto yyreduce;
04155     }
04156 
04157   /* Count tokens shifted since error; after three, turn off error
04158      status.  */
04159   if (yyerrstatus)
04160     yyerrstatus--;
04161 
04162   /* Shift the lookahead token.  */
04163   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
04164 
04165   /* Discard the shifted token.  */
04166   yychar = YYEMPTY;
04167 
04168   yystate = yyn;
04169   *++yyvsp = yylval;
04170 
04171   goto yynewstate;
04172 
04173 
04174 /*-----------------------------------------------------------.
04175 | yydefault -- do the default action for the current state.  |
04176 `-----------------------------------------------------------*/
04177 yydefault:
04178   yyn = yydefact[yystate];
04179   if (yyn == 0)
04180     goto yyerrlab;
04181   goto yyreduce;
04182 
04183 
04184 /*-----------------------------.
04185 | yyreduce -- Do a reduction.  |
04186 `-----------------------------*/
04187 yyreduce:
04188   /* yyn is the number of a rule to reduce with.  */
04189   yylen = yyr2[yyn];
04190 
04191   /* If YYLEN is nonzero, implement the default value of the action:
04192      `$$ = $1'.
04193 
04194      Otherwise, the following line sets YYVAL to garbage.
04195      This behavior is undocumented and Bison
04196      users should not rely upon it.  Assigning to YYVAL
04197      unconditionally makes the parser a bit smaller, and it avoids a
04198      GCC warning that YYVAL may be used uninitialized.  */
04199   yyval = yyvsp[1-yylen];
04200 
04201 
04202   YY_REDUCE_PRINT (yyn);
04203   switch (yyn)
04204     {
04205         case 2:
04206 
04207 /* Line 1455 of yacc.c  */
04208 #line 505 "edif.y"
04209     { PopC(); }
04210     break;
04211 
04212   case 11:
04213 
04214 /* Line 1455 of yacc.c  */
04215 #line 520 "edif.y"
04216     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04217     break;
04218 
04219   case 12:
04220 
04221 /* Line 1455 of yacc.c  */
04222 #line 523 "edif.y"
04223     { free((yyvsp[(2) - (3)].s)); }
04224     break;
04225 
04226   case 13:
04227 
04228 /* Line 1455 of yacc.c  */
04229 #line 527 "edif.y"
04230     { free((yyvsp[(2) - (5)].s)); free((yyvsp[(3) - (5)].s)); free((yyvsp[(4) - (5)].s)); }
04231     break;
04232 
04233   case 25:
04234 
04235 /* Line 1455 of yacc.c  */
04236 #line 551 "edif.y"
04237     { free((yyvsp[(1) - (1)].s)); }
04238     break;
04239 
04240   case 34:
04241 
04242 /* Line 1455 of yacc.c  */
04243 #line 568 "edif.y"
04244     { str_pair_free((yyvsp[(2) - (5)].ps)); free((yyvsp[(3) - (5)].s)); }
04245     break;
04246 
04247   case 36:
04248 
04249 /* Line 1455 of yacc.c  */
04250 #line 572 "edif.y"
04251     { free((yyvsp[(1) - (1)].s)); }
04252     break;
04253 
04254   case 47:
04255 
04256 /* Line 1455 of yacc.c  */
04257 #line 597 "edif.y"
04258     { free((yyvsp[(2) - (3)].s)); }
04259     break;
04260 
04261   case 69:
04262 
04263 /* Line 1455 of yacc.c  */
04264 #line 645 "edif.y"
04265     { free((yyvsp[(2) - (5)].s)); free((yyvsp[(3) - (5)].s)); }
04266     break;
04267 
04268   case 70:
04269 
04270 /* Line 1455 of yacc.c  */
04271 #line 648 "edif.y"
04272     { free((yyvsp[(2) - (3)].s)); }
04273     break;
04274 
04275   case 80:
04276 
04277 /* Line 1455 of yacc.c  */
04278 #line 666 "edif.y"
04279     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04280     break;
04281 
04282   case 84:
04283 
04284 /* Line 1455 of yacc.c  */
04285 #line 676 "edif.y"
04286     { free((yyvsp[(1) - (1)].s)); }
04287     break;
04288 
04289   case 91:
04290 
04291 /* Line 1455 of yacc.c  */
04292 #line 691 "edif.y"
04293     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04294     break;
04295 
04296   case 102:
04297 
04298 /* Line 1455 of yacc.c  */
04299 #line 714 "edif.y"
04300     { free((yyvsp[(2) - (2)].s)); }
04301     break;
04302 
04303   case 140:
04304 
04305 /* Line 1455 of yacc.c  */
04306 #line 774 "edif.y"
04307     { free((yyvsp[(1) - (1)].s)); }
04308     break;
04309 
04310   case 147:
04311 
04312 /* Line 1455 of yacc.c  */
04313 #line 789 "edif.y"
04314     { free((yyvsp[(2) - (4)].s)); }
04315     break;
04316 
04317   case 150:
04318 
04319 /* Line 1455 of yacc.c  */
04320 #line 796 "edif.y"
04321     { free((yyvsp[(2) - (4)].s)); }
04322     break;
04323 
04324   case 182:
04325 
04326 /* Line 1455 of yacc.c  */
04327 #line 866 "edif.y"
04328     { free((yyvsp[(1) - (1)].s)); }
04329     break;
04330 
04331   case 184:
04332 
04333 /* Line 1455 of yacc.c  */
04334 #line 870 "edif.y"
04335     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04336     break;
04337 
04338   case 240:
04339 
04340 /* Line 1455 of yacc.c  */
04341 #line 974 "edif.y"
04342     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04343     break;
04344 
04345   case 247:
04346 
04347 /* Line 1455 of yacc.c  */
04348 #line 987 "edif.y"
04349     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04350     break;
04351 
04352   case 278:
04353 
04354 /* Line 1455 of yacc.c  */
04355 #line 1034 "edif.y"
04356     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04357     break;
04358 
04359   case 279:
04360 
04361 /* Line 1455 of yacc.c  */
04362 #line 1037 "edif.y"
04363     { free((yyvsp[(1) - (1)].s)); }
04364     break;
04365 
04366   case 333:
04367 
04368 /* Line 1455 of yacc.c  */
04369 #line 1123 "edif.y"
04370     { free((yyvsp[(2) - (5)].s)); free((yyvsp[(3) - (5)].s)); }
04371     break;
04372 
04373   case 336:
04374 
04375 /* Line 1455 of yacc.c  */
04376 #line 1130 "edif.y"
04377     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04378     break;
04379 
04380   case 337:
04381 
04382 /* Line 1455 of yacc.c  */
04383 #line 1133 "edif.y"
04384     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04385     break;
04386 
04387   case 344:
04388 
04389 /* Line 1455 of yacc.c  */
04390 #line 1146 "edif.y"
04391     { free((yyvsp[(1) - (3)].s)); }
04392     break;
04393 
04394   case 346:
04395 
04396 /* Line 1455 of yacc.c  */
04397 #line 1150 "edif.y"
04398     { free((yyvsp[(2) - (2)].s)); }
04399     break;
04400 
04401   case 347:
04402 
04403 /* Line 1455 of yacc.c  */
04404 #line 1151 "edif.y"
04405     { free((yyvsp[(2) - (2)].s)); }
04406     break;
04407 
04408   case 348:
04409 
04410 /* Line 1455 of yacc.c  */
04411 #line 1152 "edif.y"
04412     { free((yyvsp[(2) - (2)].s)); }
04413     break;
04414 
04415   case 369:
04416 
04417 /* Line 1455 of yacc.c  */
04418 #line 1193 "edif.y"
04419     { (yyval.s)=(yyvsp[(2) - (4)].s); }
04420     break;
04421 
04422   case 371:
04423 
04424 /* Line 1455 of yacc.c  */
04425 #line 1197 "edif.y"
04426     { free((yyvsp[(1) - (1)].s)); }
04427     break;
04428 
04429   case 374:
04430 
04431 /* Line 1455 of yacc.c  */
04432 #line 1204 "edif.y"
04433     { free((yyvsp[(1) - (1)].s)); }
04434     break;
04435 
04436   case 381:
04437 
04438 /* Line 1455 of yacc.c  */
04439 #line 1215 "edif.y"
04440     { free((yyvsp[(2) - (2)].s)); }
04441     break;
04442 
04443   case 384:
04444 
04445 /* Line 1455 of yacc.c  */
04446 #line 1222 "edif.y"
04447     { free((yyvsp[(2) - (2)].s)); }
04448     break;
04449 
04450   case 388:
04451 
04452 /* Line 1455 of yacc.c  */
04453 #line 1228 "edif.y"
04454     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04455     break;
04456 
04457   case 390:
04458 
04459 /* Line 1455 of yacc.c  */
04460 #line 1232 "edif.y"
04461     { (yyval.s)=(yyvsp[(1) - (1)].s); }
04462     break;
04463 
04464   case 393:
04465 
04466 /* Line 1455 of yacc.c  */
04467 #line 1239 "edif.y"
04468     { free((yyvsp[(1) - (1)].s)); }
04469     break;
04470 
04471   case 397:
04472 
04473 /* Line 1455 of yacc.c  */
04474 #line 1247 "edif.y"
04475     { free((yyvsp[(2) - (2)].s)); }
04476     break;
04477 
04478   case 408:
04479 
04480 /* Line 1455 of yacc.c  */
04481 #line 1262 "edif.y"
04482     { pair_list_free((yyvsp[(2) - (2)].pl)); }
04483     break;
04484 
04485   case 437:
04486 
04487 /* Line 1455 of yacc.c  */
04488 #line 1312 "edif.y"
04489     { (yyval.pl) = new_pair_list((yyvsp[(2) - (3)].ps)); }
04490     break;
04491 
04492   case 438:
04493 
04494 /* Line 1455 of yacc.c  */
04495 #line 1315 "edif.y"
04496     { (yyval.ps)=NULL; }
04497     break;
04498 
04499   case 439:
04500 
04501 /* Line 1455 of yacc.c  */
04502 #line 1316 "edif.y"
04503     { (yyvsp[(2) - (2)].ps)->next = (yyvsp[(1) - (2)].ps); (yyval.ps) = (yyvsp[(2) - (2)].ps); }
04504     break;
04505 
04506   case 455:
04507 
04508 /* Line 1455 of yacc.c  */
04509 #line 1342 "edif.y"
04510     { free((yyvsp[(2) - (3)].s)); }
04511     break;
04512 
04513   case 459:
04514 
04515 /* Line 1455 of yacc.c  */
04516 #line 1352 "edif.y"
04517     { free((yyvsp[(1) - (1)].s)); }
04518     break;
04519 
04520   case 460:
04521 
04522 /* Line 1455 of yacc.c  */
04523 #line 1355 "edif.y"
04524     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04525     break;
04526 
04527   case 462:
04528 
04529 /* Line 1455 of yacc.c  */
04530 #line 1361 "edif.y"
04531     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04532     break;
04533 
04534   case 463:
04535 
04536 /* Line 1455 of yacc.c  */
04537 #line 1364 "edif.y"
04538     { free((yyvsp[(1) - (1)].s)); }
04539     break;
04540 
04541   case 483:
04542 
04543 /* Line 1455 of yacc.c  */
04544 #line 1406 "edif.y"
04545     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04546     break;
04547 
04548   case 484:
04549 
04550 /* Line 1455 of yacc.c  */
04551 #line 1409 "edif.y"
04552     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04553     break;
04554 
04555   case 492:
04556 
04557 /* Line 1455 of yacc.c  */
04558 #line 1423 "edif.y"
04559     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04560     break;
04561 
04562   case 506:
04563 
04564 /* Line 1455 of yacc.c  */
04565 #line 1451 "edif.y"
04566     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04567     break;
04568 
04569   case 507:
04570 
04571 /* Line 1455 of yacc.c  */
04572 #line 1454 "edif.y"
04573     { free((yyvsp[(1) - (1)].s)); }
04574     break;
04575 
04576   case 514:
04577 
04578 /* Line 1455 of yacc.c  */
04579 #line 1469 "edif.y"
04580     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04581     break;
04582 
04583   case 549:
04584 
04585 /* Line 1455 of yacc.c  */
04586 #line 1524 "edif.y"
04587     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04588     break;
04589 
04590   case 555:
04591 
04592 /* Line 1455 of yacc.c  */
04593 #line 1536 "edif.y"
04594     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04595     break;
04596 
04597   case 560:
04598 
04599 /* Line 1455 of yacc.c  */
04600 #line 1545 "edif.y"
04601     { free((yyvsp[(2) - (4)].s)); }
04602     break;
04603 
04604   case 561:
04605 
04606 /* Line 1455 of yacc.c  */
04607 #line 1548 "edif.y"
04608     { free((yyvsp[(1) - (1)].s)); }
04609     break;
04610 
04611   case 562:
04612 
04613 /* Line 1455 of yacc.c  */
04614 #line 1549 "edif.y"
04615     { free((yyvsp[(2) - (2)].s)); }
04616     break;
04617 
04618   case 582:
04619 
04620 /* Line 1455 of yacc.c  */
04621 #line 1591 "edif.y"
04622     { str_pair_free((yyvsp[(2) - (2)].ps)); }
04623     break;
04624 
04625   case 585:
04626 
04627 /* Line 1455 of yacc.c  */
04628 #line 1594 "edif.y"
04629     { pair_list_free((yyvsp[(2) - (2)].pl)); }
04630     break;
04631 
04632   case 586:
04633 
04634 /* Line 1455 of yacc.c  */
04635 #line 1597 "edif.y"
04636     { (yyval.s)=(yyvsp[(2) - (3)].s); }
04637     break;
04638 
04639   case 587:
04640 
04641 /* Line 1455 of yacc.c  */
04642 #line 1600 "edif.y"
04643     { (yyval.s)=(yyvsp[(1) - (1)].s); }
04644     break;
04645 
04646   case 589:
04647 
04648 /* Line 1455 of yacc.c  */
04649 #line 1604 "edif.y"
04650     { (yyval.ps) = new_str_pair((yyvsp[(1) - (1)].s),NULL); }
04651     break;
04652 
04653   case 590:
04654 
04655 /* Line 1455 of yacc.c  */
04656 #line 1605 "edif.y"
04657     { (yyval.ps) = new_str_pair((yyvsp[(1) - (1)].s),NULL); }
04658     break;
04659 
04660   case 591:
04661 
04662 /* Line 1455 of yacc.c  */
04663 #line 1606 "edif.y"
04664     { (yyval.ps)=(yyvsp[(1) - (1)].ps); }
04665     break;
04666 
04667   case 592:
04668 
04669 /* Line 1455 of yacc.c  */
04670 #line 1609 "edif.y"
04671     { (yyval.s)=(yyvsp[(1) - (1)].s); }
04672     break;
04673 
04674   case 593:
04675 
04676 /* Line 1455 of yacc.c  */
04677 #line 1610 "edif.y"
04678     { (yyval.s)=(yyvsp[(1) - (1)].s); }
04679     break;
04680 
04681   case 594:
04682 
04683 /* Line 1455 of yacc.c  */
04684 #line 1613 "edif.y"
04685     { define_pcb_net((yyvsp[(2) - (4)].ps), (yyvsp[(3) - (4)].pl)); }
04686     break;
04687 
04688   case 595:
04689 
04690 /* Line 1455 of yacc.c  */
04691 #line 1616 "edif.y"
04692     { (yyval.pl)=(yyvsp[(1) - (1)].pl); }
04693     break;
04694 
04695   case 611:
04696 
04697 /* Line 1455 of yacc.c  */
04698 #line 1638 "edif.y"
04699     { str_pair_free((yyvsp[(2) - (4)].ps)); }
04700     break;
04701 
04702   case 632:
04703 
04704 /* Line 1455 of yacc.c  */
04705 #line 1675 "edif.y"
04706     { (yyval.ps)=(yyvsp[(1) - (1)].ps); }
04707     break;
04708 
04709   case 633:
04710 
04711 /* Line 1455 of yacc.c  */
04712 #line 1676 "edif.y"
04713     { (yyval.ps)=NULL; }
04714     break;
04715 
04716   case 634:
04717 
04718 /* Line 1455 of yacc.c  */
04719 #line 1680 "edif.y"
04720     { free((yyvsp[(1) - (1)].s)); }
04721     break;
04722 
04723   case 639:
04724 
04725 /* Line 1455 of yacc.c  */
04726 #line 1689 "edif.y"
04727     { free((yyvsp[(1) - (1)].s)); }
04728     break;
04729 
04730   case 644:
04731 
04732 /* Line 1455 of yacc.c  */
04733 #line 1700 "edif.y"
04734     { str_pair_free((yyvsp[(2) - (2)].ps)); }
04735     break;
04736 
04737   case 698:
04738 
04739 /* Line 1455 of yacc.c  */
04740 #line 1802 "edif.y"
04741     { free((yyvsp[(2) - (5)].s)); }
04742     break;
04743 
04744   case 701:
04745 
04746 /* Line 1455 of yacc.c  */
04747 #line 1809 "edif.y"
04748     { free((yyvsp[(2) - (3)].s)); }
04749     break;
04750 
04751   case 727:
04752 
04753 /* Line 1455 of yacc.c  */
04754 #line 1861 "edif.y"
04755     { free((yyvsp[(2) - (3)].s)); }
04756     break;
04757 
04758   case 730:
04759 
04760 /* Line 1455 of yacc.c  */
04761 #line 1868 "edif.y"
04762     { str_pair_free((yyvsp[(2) - (2)].ps)); }
04763     break;
04764 
04765   case 747:
04766 
04767 /* Line 1455 of yacc.c  */
04768 #line 1903 "edif.y"
04769     { free((yyvsp[(2) - (4)].s)); free((yyvsp[(3) - (4)].s)); }
04770     break;
04771 
04772   case 766:
04773 
04774 /* Line 1455 of yacc.c  */
04775 #line 1934 "edif.y"
04776     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04777     break;
04778 
04779   case 789:
04780 
04781 /* Line 1455 of yacc.c  */
04782 #line 1969 "edif.y"
04783     { str_pair_free((yyvsp[(2) - (2)].ps)); }
04784     break;
04785 
04786   case 791:
04787 
04788 /* Line 1455 of yacc.c  */
04789 #line 1975 "edif.y"
04790     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04791     break;
04792 
04793   case 803:
04794 
04795 /* Line 1455 of yacc.c  */
04796 #line 1991 "edif.y"
04797     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04798     break;
04799 
04800   case 818:
04801 
04802 /* Line 1455 of yacc.c  */
04803 #line 2010 "edif.y"
04804     { str_pair_free((yyvsp[(2) - (2)].ps)); }
04805     break;
04806 
04807   case 823:
04808 
04809 /* Line 1455 of yacc.c  */
04810 #line 2021 "edif.y"
04811     { str_pair_free((yyvsp[(2) - (2)].ps)); }
04812     break;
04813 
04814   case 827:
04815 
04816 /* Line 1455 of yacc.c  */
04817 #line 2027 "edif.y"
04818     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04819     break;
04820 
04821   case 829:
04822 
04823 /* Line 1455 of yacc.c  */
04824 #line 2031 "edif.y"
04825     { (yyval.s)=(yyvsp[(1) - (1)].s); }
04826     break;
04827 
04828   case 831:
04829 
04830 /* Line 1455 of yacc.c  */
04831 #line 2036 "edif.y"
04832     { 
04833     if ((yyvsp[(3) - (4)].ps))
04834     {
04835         (yyval.ps) = new_str_pair((yyvsp[(3) - (4)].ps)->str1,(yyvsp[(2) - (4)].s));
04836         free((yyvsp[(3) - (4)].ps));
04837     }
04838     else 
04839     {
04840         /* handle port with no instance by passing up the chain */
04841         (yyval.ps) = new_str_pair(NULL,(yyvsp[(2) - (4)].s));
04842     }
04843 }
04844     break;
04845 
04846   case 832:
04847 
04848 /* Line 1455 of yacc.c  */
04849 #line 2050 "edif.y"
04850     { (yyval.ps)=NULL; }
04851     break;
04852 
04853   case 833:
04854 
04855 /* Line 1455 of yacc.c  */
04856 #line 2051 "edif.y"
04857     { (yyval.ps)=(yyvsp[(1) - (1)].ps); }
04858     break;
04859 
04860   case 834:
04861 
04862 /* Line 1455 of yacc.c  */
04863 #line 2052 "edif.y"
04864     { (yyval.ps) = new_str_pair((yyvsp[(1) - (1)].s),NULL); }
04865     break;
04866 
04867   case 835:
04868 
04869 /* Line 1455 of yacc.c  */
04870 #line 2053 "edif.y"
04871     { (yyval.ps)=NULL; }
04872     break;
04873 
04874   case 848:
04875 
04876 /* Line 1455 of yacc.c  */
04877 #line 2080 "edif.y"
04878     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04879     break;
04880 
04881   case 849:
04882 
04883 /* Line 1455 of yacc.c  */
04884 #line 2083 "edif.y"
04885     { free((yyvsp[(1) - (1)].s)); }
04886     break;
04887 
04888   case 881:
04889 
04890 /* Line 1455 of yacc.c  */
04891 #line 2136 "edif.y"
04892     { (yyval.ps) = new_str_pair((yyvsp[(2) - (4)].s),(yyvsp[(3) - (4)].s)); }
04893     break;
04894 
04895   case 882:
04896 
04897 /* Line 1455 of yacc.c  */
04898 #line 2139 "edif.y"
04899     { (yyval.s)=(yyvsp[(1) - (1)].s); }
04900     break;
04901 
04902   case 883:
04903 
04904 /* Line 1455 of yacc.c  */
04905 #line 2140 "edif.y"
04906     { (yyval.s)=(yyvsp[(1) - (1)].s); }
04907     break;
04908 
04909   case 884:
04910 
04911 /* Line 1455 of yacc.c  */
04912 #line 2143 "edif.y"
04913     { (yyval.s)=(yyvsp[(1) - (1)].s); }
04914     break;
04915 
04916   case 885:
04917 
04918 /* Line 1455 of yacc.c  */
04919 #line 2144 "edif.y"
04920     { (yyval.s)=NULL; }
04921     break;
04922 
04923   case 889:
04924 
04925 /* Line 1455 of yacc.c  */
04926 #line 2154 "edif.y"
04927     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04928     break;
04929 
04930   case 891:
04931 
04932 /* Line 1455 of yacc.c  */
04933 #line 2160 "edif.y"
04934     { free((yyvsp[(1) - (1)].s)); }
04935     break;
04936 
04937   case 892:
04938 
04939 /* Line 1455 of yacc.c  */
04940 #line 2161 "edif.y"
04941     { free((yyvsp[(2) - (4)].s)); free((yyvsp[(3) - (4)].s)); }
04942     break;
04943 
04944   case 893:
04945 
04946 /* Line 1455 of yacc.c  */
04947 #line 2164 "edif.y"
04948     { free((yyvsp[(2) - (4)].s)); free((yyvsp[(3) - (4)].s)); }
04949     break;
04950 
04951   case 894:
04952 
04953 /* Line 1455 of yacc.c  */
04954 #line 2167 "edif.y"
04955     { free((yyvsp[(2) - (4)].s)); free((yyvsp[(3) - (4)].s)); }
04956     break;
04957 
04958   case 896:
04959 
04960 /* Line 1455 of yacc.c  */
04961 #line 2173 "edif.y"
04962     { free((yyvsp[(1) - (1)].s)); }
04963     break;
04964 
04965   case 898:
04966 
04967 /* Line 1455 of yacc.c  */
04968 #line 2175 "edif.y"
04969     { free((yyvsp[(2) - (2)].s)); }
04970     break;
04971 
04972   case 903:
04973 
04974 /* Line 1455 of yacc.c  */
04975 #line 2186 "edif.y"
04976     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04977     break;
04978 
04979   case 935:
04980 
04981 /* Line 1455 of yacc.c  */
04982 #line 2250 "edif.y"
04983     { str_pair_free((yyvsp[(1) - (1)].ps)); }
04984     break;
04985 
04986   case 943:
04987 
04988 /* Line 1455 of yacc.c  */
04989 #line 2266 "edif.y"
04990     { free((yyvsp[(2) - (2)].s)); }
04991     break;
04992 
04993   case 946:
04994 
04995 /* Line 1455 of yacc.c  */
04996 #line 2271 "edif.y"
04997     { free((yyvsp[(1) - (1)].s)); }
04998     break;
04999 
05000   case 973:
05001 
05002 /* Line 1455 of yacc.c  */
05003 #line 2316 "edif.y"
05004     { str_pair_free((yyvsp[(1) - (1)].ps)); }
05005     break;
05006 
05007   case 987:
05008 
05009 /* Line 1455 of yacc.c  */
05010 #line 2338 "edif.y"
05011     { free((yyvsp[(2) - (3)].s)); }
05012     break;
05013 
05014   case 994:
05015 
05016 /* Line 1455 of yacc.c  */
05017 #line 2354 "edif.y"
05018     { 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)); }
05019     break;
05020 
05021   case 1054:
05022 
05023 /* Line 1455 of yacc.c  */
05024 #line 2461 "edif.y"
05025     { free((yyvsp[(1) - (1)].s)); }
05026     break;
05027 
05028   case 1055:
05029 
05030 /* Line 1455 of yacc.c  */
05031 #line 2462 "edif.y"
05032     { free((yyvsp[(2) - (2)].s)); }
05033     break;
05034 
05035   case 1056:
05036 
05037 /* Line 1455 of yacc.c  */
05038 #line 2463 "edif.y"
05039     { free((yyvsp[(2) - (2)].s)); }
05040     break;
05041 
05042   case 1057:
05043 
05044 /* Line 1455 of yacc.c  */
05045 #line 2464 "edif.y"
05046     { free((yyvsp[(2) - (2)].s)); }
05047     break;
05048 
05049   case 1059:
05050 
05051 /* Line 1455 of yacc.c  */
05052 #line 2468 "edif.y"
05053     { str_pair_free((yyvsp[(1) - (1)].ps)); }
05054     break;
05055 
05056   case 1061:
05057 
05058 /* Line 1455 of yacc.c  */
05059 #line 2472 "edif.y"
05060     { free((yyvsp[(1) - (1)].s)); }
05061     break;
05062 
05063   case 1063:
05064 
05065 /* Line 1455 of yacc.c  */
05066 #line 2476 "edif.y"
05067     { free((yyvsp[(2) - (3)].s)); }
05068     break;
05069 
05070   case 1085:
05071 
05072 /* Line 1455 of yacc.c  */
05073 #line 2512 "edif.y"
05074     { str_pair_free((yyvsp[(1) - (1)].ps)); }
05075     break;
05076 
05077   case 1086:
05078 
05079 /* Line 1455 of yacc.c  */
05080 #line 2515 "edif.y"
05081     { free((yyvsp[(1) - (1)].s)); }
05082     break;
05083 
05084   case 1107:
05085 
05086 /* Line 1455 of yacc.c  */
05087 #line 2556 "edif.y"
05088     { str_pair_free((yyvsp[(2) - (2)].ps)); }
05089     break;
05090 
05091   case 1109:
05092 
05093 /* Line 1455 of yacc.c  */
05094 #line 2558 "edif.y"
05095     { pair_list_free((yyvsp[(2) - (2)].pl)); }
05096     break;
05097 
05098   case 1126:
05099 
05100 /* Line 1455 of yacc.c  */
05101 #line 2585 "edif.y"
05102     { (yyval.s)=(yyvsp[(1) - (1)].s); }
05103     break;
05104 
05105   case 1127:
05106 
05107 /* Line 1455 of yacc.c  */
05108 #line 2588 "edif.y"
05109     { (yyval.s)=(yyvsp[(1) - (1)].s); }
05110     break;
05111 
05112   case 1128:
05113 
05114 /* Line 1455 of yacc.c  */
05115 #line 2591 "edif.y"
05116     { (yyval.s)=(yyvsp[(1) - (1)].s); }
05117     break;
05118 
05119   case 1129:
05120 
05121 /* Line 1455 of yacc.c  */
05122 #line 2594 "edif.y"
05123     { (yyval.s)=(yyvsp[(1) - (1)].s); }
05124     break;
05125 
05126 
05127 
05128 /* Line 1455 of yacc.c  */
05129 #line 5130 "edif.c"
05130       default: break;
05131     }
05132   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
05133 
05134   YYPOPSTACK (yylen);
05135   yylen = 0;
05136   YY_STACK_PRINT (yyss, yyssp);
05137 
05138   *++yyvsp = yyval;
05139 
05140   /* Now `shift' the result of the reduction.  Determine what state
05141      that goes to, based on the state we popped back to and the rule
05142      number reduced by.  */
05143 
05144   yyn = yyr1[yyn];
05145 
05146   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
05147   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
05148     yystate = yytable[yystate];
05149   else
05150     yystate = yydefgoto[yyn - YYNTOKENS];
05151 
05152   goto yynewstate;
05153 
05154 
05155 /*------------------------------------.
05156 | yyerrlab -- here on detecting error |
05157 `------------------------------------*/
05158 yyerrlab:
05159   /* If not already recovering from an error, report this error.  */
05160   if (!yyerrstatus)
05161     {
05162       ++yynerrs;
05163 #if ! YYERROR_VERBOSE
05164       yyerror (YY_("syntax error"));
05165 #else
05166       {
05167         YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
05168         if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
05169           {
05170             YYSIZE_T yyalloc = 2 * yysize;
05171             if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
05172               yyalloc = YYSTACK_ALLOC_MAXIMUM;
05173             if (yymsg != yymsgbuf)
05174               YYSTACK_FREE (yymsg);
05175             yymsg = (char *) YYSTACK_ALLOC (yyalloc);
05176             if (yymsg)
05177               yymsg_alloc = yyalloc;
05178             else
05179               {
05180                 yymsg = yymsgbuf;
05181                 yymsg_alloc = sizeof yymsgbuf;
05182               }
05183           }
05184 
05185         if (0 < yysize && yysize <= yymsg_alloc)
05186           {
05187             (void) yysyntax_error (yymsg, yystate, yychar);
05188             yyerror (yymsg);
05189           }
05190         else
05191           {
05192             yyerror (YY_("syntax error"));
05193             if (yysize != 0)
05194               goto yyexhaustedlab;
05195           }
05196       }
05197 #endif
05198     }
05199 
05200 
05201 
05202   if (yyerrstatus == 3)
05203     {
05204       /* If just tried and failed to reuse lookahead token after an
05205          error, discard it.  */
05206 
05207       if (yychar <= YYEOF)
05208         {
05209           /* Return failure if at end of input.  */
05210           if (yychar == YYEOF)
05211             YYABORT;
05212         }
05213       else
05214         {
05215           yydestruct ("Error: discarding",
05216                       yytoken, &yylval);
05217           yychar = YYEMPTY;
05218         }
05219     }
05220 
05221   /* Else will try to reuse lookahead token after shifting the error
05222      token.  */
05223   goto yyerrlab1;
05224 
05225 
05226 /*---------------------------------------------------.
05227 | yyerrorlab -- error raised explicitly by YYERROR.  |
05228 `---------------------------------------------------*/
05229 yyerrorlab:
05230 
05231   /* Pacify compilers like GCC when the user code never invokes
05232      YYERROR and the label yyerrorlab therefore never appears in user
05233      code.  */
05234   if (/*CONSTCOND*/ 0)
05235      goto yyerrorlab;
05236 
05237   /* Do not reclaim the symbols of the rule which action triggered
05238      this YYERROR.  */
05239   YYPOPSTACK (yylen);
05240   yylen = 0;
05241   YY_STACK_PRINT (yyss, yyssp);
05242   yystate = *yyssp;
05243   goto yyerrlab1;
05244 
05245 
05246 /*-------------------------------------------------------------.
05247 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
05248 `-------------------------------------------------------------*/
05249 yyerrlab1:
05250   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
05251 
05252   for (;;)
05253     {
05254       yyn = yypact[yystate];
05255       if (yyn != YYPACT_NINF)
05256         {
05257           yyn += YYTERROR;
05258           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
05259             {
05260               yyn = yytable[yyn];
05261               if (0 < yyn)
05262                 break;
05263             }
05264         }
05265 
05266       /* Pop the current state because it cannot handle the error token.  */
05267       if (yyssp == yyss)
05268         YYABORT;
05269 
05270 
05271       yydestruct ("Error: popping",
05272                   yystos[yystate], yyvsp);
05273       YYPOPSTACK (1);
05274       yystate = *yyssp;
05275       YY_STACK_PRINT (yyss, yyssp);
05276     }
05277 
05278   *++yyvsp = yylval;
05279 
05280 
05281   /* Shift the error token.  */
05282   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
05283 
05284   yystate = yyn;
05285   goto yynewstate;
05286 
05287 
05288 /*-------------------------------------.
05289 | yyacceptlab -- YYACCEPT comes here.  |
05290 `-------------------------------------*/
05291 yyacceptlab:
05292   yyresult = 0;
05293   goto yyreturn;
05294 
05295 /*-----------------------------------.
05296 | yyabortlab -- YYABORT comes here.  |
05297 `-----------------------------------*/
05298 yyabortlab:
05299   yyresult = 1;
05300   goto yyreturn;
05301 
05302 #if !defined(yyoverflow) || YYERROR_VERBOSE
05303 /*-------------------------------------------------.
05304 | yyexhaustedlab -- memory exhaustion comes here.  |
05305 `-------------------------------------------------*/
05306 yyexhaustedlab:
05307   yyerror (YY_("memory exhausted"));
05308   yyresult = 2;
05309   /* Fall through.  */
05310 #endif
05311 
05312 yyreturn:
05313   if (yychar != YYEMPTY)
05314      yydestruct ("Cleanup: discarding lookahead",
05315                  yytoken, &yylval);
05316   /* Do not reclaim the symbols of the rule which action triggered
05317      this YYABORT or YYACCEPT.  */
05318   YYPOPSTACK (yylen);
05319   YY_STACK_PRINT (yyss, yyssp);
05320   while (yyssp != yyss)
05321     {
05322       yydestruct ("Cleanup: popping",
05323                   yystos[*yyssp], yyvsp);
05324       YYPOPSTACK (1);
05325     }
05326 #ifndef yyoverflow
05327   if (yyss != yyssa)
05328     YYSTACK_FREE (yyss);
05329 #endif
05330 #if YYERROR_VERBOSE
05331   if (yymsg != yymsgbuf)
05332     YYSTACK_FREE (yymsg);
05333 #endif
05334   /* Make sure YYID is used.  */
05335   return YYID (yyresult);
05336 }
05337 
05338 
05339 
05340 /* Line 1675 of yacc.c  */
05341 #line 2597 "edif.y"
05342 
05343 /*
05344  *      xmalloc:
05345  *
05346  *        Garbage function for 'alloca()'.
05347  */
05348 char *xmalloc(int siz)
05349 {
05350   return ((char *)Malloc(siz));
05351 }
05352 /*
05353  *      Token & context carriers:
05354  *
05355  *        These are the linkage pointers for threading this context garbage
05356  *      for converting identifiers into parser tokens.
05357  */
05358 typedef struct TokenCar {
05359   struct TokenCar *Next;        /* pointer to next carrier */
05360   struct Token *Token;          /* associated token */
05361 } TokenCar;
05362 typedef struct UsedCar {
05363   struct UsedCar *Next;         /* pointer to next carrier */
05364   short Code;                   /* used '%token' value */
05365 } UsedCar;
05366 typedef struct ContextCar {
05367   struct ContextCar *Next;      /* pointer to next carrier */
05368   struct Context *Context;      /* associated context */
05369   union {
05370     int Single;                 /* single usage flag (context tree) */
05371     struct UsedCar *Used;       /* single used list (context stack) */
05372   } u;
05373 } ContextCar;
05374 /*
05375  *      Token definitions:
05376  *
05377  *        This associates the '%token' codings with strings which are to
05378  *      be free standing tokens. Doesn't have to be in sorted order but the
05379  *      strings must be in lower case.
05380  */
05381 typedef struct Token {
05382   char *Name;                   /* token name */
05383   int Code;                     /* '%token' value */
05384   struct Token *Next;           /* hash table linkage */
05385 } Token;
05386 static Token TokenDef[] = {
05387   {"angle",             EDIF_TOK_ANGLE},
05388   {"behavior",          EDIF_TOK_BEHAVIOR},
05389   {"calculated",        EDIF_TOK_CALCULATED},
05390   {"capacitance",       EDIF_TOK_CAPACITANCE},
05391   {"centercenter",      EDIF_TOK_CENTERCENTER},
05392   {"centerleft",        EDIF_TOK_CENTERLEFT},
05393   {"centerright",       EDIF_TOK_CENTERRIGHT},
05394   {"charge",            EDIF_TOK_CHARGE},
05395   {"conductance",       EDIF_TOK_CONDUCTANCE},
05396   {"current",           EDIF_TOK_CURRENT},
05397   {"distance",          EDIF_TOK_DISTANCE},
05398   {"document",          EDIF_TOK_DOCUMENT},
05399   {"energy",            EDIF_TOK_ENERGY},
05400   {"extend",            EDIF_TOK_EXTEND},
05401   {"flux",              EDIF_TOK_FLUX},
05402   {"frequency",         EDIF_TOK_FREQUENCY},
05403   {"generic",           EDIF_TOK_GENERIC},
05404   {"graphic",           EDIF_TOK_GRAPHIC},
05405   {"inductance",        EDIF_TOK_INDUCTANCE},
05406   {"inout",             EDIF_TOK_INOUT},
05407   {"input",             EDIF_TOK_INPUT},
05408   {"logicmodel",        EDIF_TOK_LOGICMODEL},
05409   {"lowercenter",       EDIF_TOK_LOWERCENTER},
05410   {"lowerleft",         EDIF_TOK_LOWERLEFT},
05411   {"lowerright",        EDIF_TOK_LOWERRIGHT},
05412   {"masklayout",        EDIF_TOK_MASKLAYOUT},
05413   {"mass",              EDIF_TOK_MASS},
05414   {"measured",          EDIF_TOK_MEASURED},
05415   {"mx",                EDIF_TOK_MX},
05416   {"mxr90",             EDIF_TOK_MXR90},
05417   {"my",                EDIF_TOK_MY},
05418   {"myr90",             EDIF_TOK_MYR90},
05419   {"netlist",           EDIF_TOK_NETLIST},
05420   {"output",            EDIF_TOK_OUTPUT},
05421   {"pcblayout",         EDIF_TOK_PCBLAYOUT},
05422   {"power",             EDIF_TOK_POWER},
05423   {"r0",                EDIF_TOK_R0},
05424   {"r180",              EDIF_TOK_R180},
05425   {"r270",              EDIF_TOK_R270},
05426   {"r90",               EDIF_TOK_R90},
05427   {"required",          EDIF_TOK_REQUIRED},
05428   {"resistance",        EDIF_TOK_RESISTANCE},
05429   {"ripper",            EDIF_TOK_RIPPER},
05430   {"round",             EDIF_TOK_ROUND},
05431   {"schematic",         EDIF_TOK_SCHEMATIC},
05432   {"stranger",          EDIF_TOK_STRANGER},
05433   {"symbolic",          EDIF_TOK_SYMBOLIC},
05434   {"temperature",       EDIF_TOK_TEMPERATURE},
05435   {"tie",               EDIF_TOK_TIE},
05436   {"time",              EDIF_TOK_TIME},
05437   {"truncate",          EDIF_TOK_TRUNCATE},
05438   {"uppercenter",       EDIF_TOK_UPPERCENTER},
05439   {"upperleft",         EDIF_TOK_UPPERLEFT},
05440   {"upperright",        EDIF_TOK_UPPERRIGHT},
05441   {"voltage",           EDIF_TOK_VOLTAGE}
05442 };
05443 static int TokenDefSize = sizeof(TokenDef) / sizeof(Token);
05444 /*
05445  *      Token enable definitions:
05446  *
05447  *        There is one array for each set of tokens enabled by a
05448  *      particular context (barf). Another array is used to bind
05449  *      these arrays to a context.
05450  */
05451 static short e_CellType[] = {EDIF_TOK_TIE, EDIF_TOK_RIPPER, EDIF_TOK_GENERIC};
05452 static short e_CornerType[] = {EDIF_TOK_EXTEND, EDIF_TOK_TRUNCATE,
05453                                EDIF_TOK_ROUND};
05454 static short e_Derivation[] = {EDIF_TOK_CALCULATED, EDIF_TOK_MEASURED,
05455                                EDIF_TOK_REQUIRED};
05456 static short e_Direction[] = {EDIF_TOK_INPUT, EDIF_TOK_OUTPUT,
05457                               EDIF_TOK_INOUT};
05458 static short e_EndType[] = {EDIF_TOK_EXTEND, EDIF_TOK_TRUNCATE,
05459                             EDIF_TOK_ROUND};
05460 static short e_Justify[] = {EDIF_TOK_CENTERCENTER, EDIF_TOK_CENTERLEFT,
05461                             EDIF_TOK_CENTERRIGHT, EDIF_TOK_LOWERCENTER,
05462                             EDIF_TOK_LOWERLEFT, EDIF_TOK_LOWERRIGHT,
05463                             EDIF_TOK_UPPERCENTER, EDIF_TOK_UPPERLEFT,
05464                             EDIF_TOK_UPPERRIGHT};
05465 static short e_Orientation[] = {EDIF_TOK_R0, EDIF_TOK_R90, EDIF_TOK_R180,
05466                                 EDIF_TOK_R270, EDIF_TOK_MX, EDIF_TOK_MY,
05467                                 EDIF_TOK_MXR90, EDIF_TOK_MYR90};
05468 static short e_Unit[] = {EDIF_TOK_DISTANCE, EDIF_TOK_CAPACITANCE,
05469                          EDIF_TOK_CURRENT, EDIF_TOK_RESISTANCE,
05470                          EDIF_TOK_TEMPERATURE, EDIF_TOK_TIME,
05471                          EDIF_TOK_VOLTAGE, EDIF_TOK_MASS, EDIF_TOK_FREQUENCY,
05472                          EDIF_TOK_INDUCTANCE, EDIF_TOK_ENERGY,
05473                          EDIF_TOK_POWER, EDIF_TOK_CHARGE,
05474                          EDIF_TOK_CONDUCTANCE, EDIF_TOK_FLUX, EDIF_TOK_ANGLE};
05475 static short e_ViewType[] = {EDIF_TOK_MASKLAYOUT, EDIF_TOK_PCBLAYOUT,
05476                              EDIF_TOK_NETLIST, EDIF_TOK_SCHEMATIC,
05477                              EDIF_TOK_SYMBOLIC, EDIF_TOK_BEHAVIOR,
05478                              EDIF_TOK_LOGICMODEL, EDIF_TOK_DOCUMENT,
05479                              EDIF_TOK_GRAPHIC, EDIF_TOK_STRANGER};
05480 /*
05481  *      Token tying table:
05482  *
05483  *        This binds enabled tokens to a context.
05484  */
05485 typedef struct Tie {
05486   short *Enable;                /* pointer to enable array */
05487   short Origin;                 /* '%token' value of context */
05488   short EnableSize;             /* size of enabled array */
05489 } Tie;
05490 #define TE(e,o)                 {e,o,sizeof(e)/sizeof(short)}
05491 static Tie TieDef[] = {
05492   TE(e_CellType,        EDIF_TOK_CELLTYPE),
05493   TE(e_CornerType,      EDIF_TOK_CORNERTYPE),
05494   TE(e_Derivation,      EDIF_TOK_DERIVATION),
05495   TE(e_Direction,       EDIF_TOK_DIRECTION),
05496   TE(e_EndType,         EDIF_TOK_ENDTYPE),
05497   TE(e_Justify,         EDIF_TOK_JUSTIFY),
05498   TE(e_Orientation,     EDIF_TOK_ORIENTATION),
05499   TE(e_Unit,            EDIF_TOK_UNIT),
05500   TE(e_ViewType,        EDIF_TOK_VIEWTYPE)
05501 };
05502 static int TieDefSize = sizeof(TieDef) / sizeof(Tie);
05503 /*
05504  *      Context definitions:
05505  *
05506  *        This associates keyword strings with '%token' values. It
05507  *      also creates a pretty much empty header for later building of
05508  *      the context tree. Again they needn't be sorted, but strings
05509  *      must be lower case.
05510  */
05511 typedef struct Context {
05512   char *Name;                   /* keyword name */
05513   short Code;                   /* '%token' value */
05514   short Flags;                  /* special operation flags */
05515   struct ContextCar *Context;   /* contexts which can be moved to */
05516   struct TokenCar *Token;       /* active tokens */
05517   struct Context *Next;         /* hash table linkage */
05518 } Context;
05519 static Context ContextDef[] = {
05520   {"",                          0},             /* start context */
05521   {"acload",                    EDIF_TOK_ACLOAD},
05522   {"after",                     EDIF_TOK_AFTER},
05523   {"annotate",                  EDIF_TOK_ANNOTATE},
05524   {"apply",                     EDIF_TOK_APPLY},
05525   {"arc",                       EDIF_TOK_ARC},
05526   {"array",                     EDIF_TOK_ARRAY},
05527   {"arraymacro",                EDIF_TOK_ARRAYMACRO},
05528   {"arrayrelatedinfo",          EDIF_TOK_ARRAYRELATEDINFO},
05529   {"arraysite",                 EDIF_TOK_ARRAYSITE},
05530   {"atleast",                   EDIF_TOK_ATLEAST},
05531   {"atmost",                    EDIF_TOK_ATMOST},
05532   {"author",                    EDIF_TOK_AUTHOR},
05533   {"basearray",                 EDIF_TOK_BASEARRAY},
05534   {"becomes",                   EDIF_TOK_BECOMES},
05535   {"between",                   EDIF_TOK_BETWEEN},
05536   {"boolean",                   EDIF_TOK_BOOLEAN},
05537   {"booleandisplay",            EDIF_TOK_BOOLEANDISPLAY},
05538   {"booleanmap",                EDIF_TOK_BOOLEANMAP},
05539   {"borderpattern",             EDIF_TOK_BORDERPATTERN},
05540   {"borderwidth",               EDIF_TOK_BORDERWIDTH},
05541   {"boundingbox",               EDIF_TOK_BOUNDINGBOX},
05542   {"cell",                      EDIF_TOK_CELL},
05543   {"cellref",                   EDIF_TOK_CELLREF},
05544   {"celltype",                  EDIF_TOK_CELLTYPE},
05545   {"change",                    EDIF_TOK_CHANGE},
05546   {"circle",                    EDIF_TOK_CIRCLE},
05547   {"color",                     EDIF_TOK_COLOR},
05548   {"comment",                   EDIF_TOK_COMMENT},
05549   {"commentgraphics",           EDIF_TOK_COMMENTGRAPHICS},
05550   {"compound",                  EDIF_TOK_COMPOUND},
05551   {"connectlocation",           EDIF_TOK_CONNECTLOCATION},
05552   {"contents",                  EDIF_TOK_CONTENTS},
05553   {"cornertype",                EDIF_TOK_CORNERTYPE},
05554   {"criticality",               EDIF_TOK_CRITICALITY},
05555   {"currentmap",                EDIF_TOK_CURRENTMAP},
05556   {"curve",                     EDIF_TOK_CURVE},
05557   {"cycle",                     EDIF_TOK_CYCLE},
05558   {"dataorigin",                EDIF_TOK_DATAORIGIN},
05559   {"dcfaninload",               EDIF_TOK_DCFANINLOAD},
05560   {"dcfanoutload",              EDIF_TOK_DCFANOUTLOAD},
05561   {"dcmaxfanin",                EDIF_TOK_DCMAXFANIN},
05562   {"dcmaxfanout",               EDIF_TOK_DCMAXFANOUT},
05563   {"delay",                     EDIF_TOK_DELAY},
05564   {"delta",                     EDIF_TOK_DELTA},
05565   {"derivation",                EDIF_TOK_DERIVATION},
05566   {"design",                    EDIF_TOK_DESIGN},
05567   {"designator",                EDIF_TOK_DESIGNATOR},
05568   {"difference",                EDIF_TOK_DIFFERENCE},
05569   {"direction",                 EDIF_TOK_DIRECTION},
05570   {"display",                   EDIF_TOK_DISPLAY},
05571   {"dominates",                 EDIF_TOK_DOMINATES},
05572   {"dot",                       EDIF_TOK_DOT},
05573   {"duration",                  EDIF_TOK_DURATION},
05574   {"e",                         EDIF_TOK_E},
05575   {"edif",                      EDIF_TOK_EDIF},
05576   {"ediflevel",                 EDIF_TOK_EDIFLEVEL},
05577   {"edifversion",               EDIF_TOK_EDIFVERSION},
05578   {"enclosuredistance",         EDIF_TOK_ENCLOSUREDISTANCE},
05579   {"endtype",                   EDIF_TOK_ENDTYPE},
05580   {"entry",                     EDIF_TOK_ENTRY},
05581   {"exactly",                   EDIF_TOK_EXACTLY},
05582   {"external",                  EDIF_TOK_EXTERNAL},
05583   {"fabricate",                 EDIF_TOK_FABRICATE},
05584   {"false",                     EDIF_TOK_FALSE},
05585   {"figure",                    EDIF_TOK_FIGURE},
05586   {"figurearea",                EDIF_TOK_FIGUREAREA},
05587   {"figuregroup",               EDIF_TOK_FIGUREGROUP},
05588   {"figuregroupobject",         EDIF_TOK_FIGUREGROUPOBJECT},
05589   {"figuregroupoverride",       EDIF_TOK_FIGUREGROUPOVERRIDE},
05590   {"figuregroupref",            EDIF_TOK_FIGUREGROUPREF},
05591   {"figureperimeter",           EDIF_TOK_FIGUREPERIMETER},
05592   {"figurewidth",               EDIF_TOK_FIGUREWIDTH},
05593   {"fillpattern",               EDIF_TOK_FILLPATTERN},
05594   {"follow",                    EDIF_TOK_FOLLOW},
05595   {"forbiddenevent",            EDIF_TOK_FORBIDDENEVENT},
05596   {"globalportref",             EDIF_TOK_GLOBALPORTREF},
05597   {"greaterthan",               EDIF_TOK_GREATERTHAN},
05598   {"gridmap",                   EDIF_TOK_GRIDMAP},
05599   {"ignore",                    EDIF_TOK_IGNORE},
05600   {"includefiguregroup",        EDIF_TOK_INCLUDEFIGUREGROUP},
05601   {"initial",                   EDIF_TOK_INITIAL},
05602   {"instance",                  EDIF_TOK_INSTANCE},
05603   {"instancebackannotate",      EDIF_TOK_INSTANCEBACKANNOTATE},
05604   {"instancegroup",             EDIF_TOK_INSTANCEGROUP},
05605   {"instancemap",               EDIF_TOK_INSTANCEMAP},
05606   {"instanceref",               EDIF_TOK_INSTANCEREF},
05607   {"integer",                   EDIF_TOK_INTEGER},
05608   {"integerdisplay",            EDIF_TOK_INTEGERDISPLAY},
05609   {"interface",                 EDIF_TOK_INTERFACE},
05610   {"interfiguregroupspacing",   EDIF_TOK_INTERFIGUREGROUPSPACING},
05611   {"intersection",              EDIF_TOK_INTERSECTION},
05612   {"intrafiguregroupspacing",   EDIF_TOK_INTRAFIGUREGROUPSPACING},
05613   {"inverse",                   EDIF_TOK_INVERSE},
05614   {"isolated",                  EDIF_TOK_ISOLATED},
05615   {"joined",                    EDIF_TOK_JOINED},
05616   {"justify",                   EDIF_TOK_JUSTIFY},
05617   {"keyworddisplay",            EDIF_TOK_KEYWORDDISPLAY},
05618   {"keywordlevel",              EDIF_TOK_KEYWORDLEVEL},
05619   {"keywordmap",                EDIF_TOK_KEYWORDMAP},
05620   {"lessthan",                  EDIF_TOK_LESSTHAN},
05621   {"library",                   EDIF_TOK_LIBRARY},
05622   {"libraryref",                EDIF_TOK_LIBRARYREF},
05623   {"listofnets",                EDIF_TOK_LISTOFNETS},
05624   {"listofports",               EDIF_TOK_LISTOFPORTS},
05625   {"loaddelay",                 EDIF_TOK_LOADDELAY},
05626   {"logicassign",               EDIF_TOK_LOGICASSIGN},
05627   {"logicinput",                EDIF_TOK_LOGICINPUT},
05628   {"logiclist",                 EDIF_TOK_LOGICLIST},
05629   {"logicmapinput",             EDIF_TOK_LOGICMAPINPUT},
05630   {"logicmapoutput",            EDIF_TOK_LOGICMAPOUTPUT},
05631   {"logiconeof",                EDIF_TOK_LOGICONEOF},
05632   {"logicoutput",               EDIF_TOK_LOGICOUTPUT},
05633   {"logicport",                 EDIF_TOK_LOGICPORT},
05634   {"logicref",                  EDIF_TOK_LOGICREF},
05635   {"logicvalue",                EDIF_TOK_LOGICVALUE},
05636   {"logicwaveform",             EDIF_TOK_LOGICWAVEFORM},
05637   {"maintain",                  EDIF_TOK_MAINTAIN},
05638   {"match",                     EDIF_TOK_MATCH},
05639   {"member",                    EDIF_TOK_MEMBER},
05640   {"minomax",                   EDIF_TOK_MINOMAX},
05641   {"minomaxdisplay",            EDIF_TOK_MINOMAXDISPLAY},
05642   {"mnm",                       EDIF_TOK_MNM},
05643   {"multiplevalueset",          EDIF_TOK_MULTIPLEVALUESET},
05644   {"mustjoin",                  EDIF_TOK_MUSTJOIN},
05645   {"name",                      EDIF_TOK_NAME},
05646   {"net",                       EDIF_TOK_NET},
05647   {"netbackannotate",           EDIF_TOK_NETBACKANNOTATE},
05648   {"netbundle",                 EDIF_TOK_NETBUNDLE},
05649   {"netdelay",                  EDIF_TOK_NETDELAY},
05650   {"netgroup",                  EDIF_TOK_NETGROUP},
05651   {"netmap",                    EDIF_TOK_NETMAP},
05652   {"netref",                    EDIF_TOK_NETREF},
05653   {"nochange",                  EDIF_TOK_NOCHANGE},
05654   {"nonpermutable",             EDIF_TOK_NONPERMUTABLE},
05655   {"notallowed",                EDIF_TOK_NOTALLOWED},
05656   {"notchspacing",              EDIF_TOK_NOTCHSPACING},
05657   {"number",                    EDIF_TOK_NUMBER},
05658   {"numberdefinition",          EDIF_TOK_NUMBERDEFINITION},
05659   {"numberdisplay",             EDIF_TOK_NUMBERDISPLAY},
05660   {"offpageconnector",          EDIF_TOK_OFFPAGECONNECTOR},
05661   {"offsetevent",               EDIF_TOK_OFFSETEVENT},
05662   {"openshape",                 EDIF_TOK_OPENSHAPE},
05663   {"orientation",               EDIF_TOK_ORIENTATION},
05664   {"origin",                    EDIF_TOK_ORIGIN},
05665   {"overhangdistance",          EDIF_TOK_OVERHANGDISTANCE},
05666   {"overlapdistance",           EDIF_TOK_OVERLAPDISTANCE},
05667   {"oversize",                  EDIF_TOK_OVERSIZE},
05668   {"owner",                     EDIF_TOK_OWNER},
05669   {"page",                      EDIF_TOK_PAGE},
05670   {"pagesize",                  EDIF_TOK_PAGESIZE},
05671   {"parameter",                 EDIF_TOK_PARAMETER},
05672   {"parameterassign",           EDIF_TOK_PARAMETERASSIGN},
05673   {"parameterdisplay",          EDIF_TOK_PARAMETERDISPLAY},
05674   {"path",                      EDIF_TOK_PATH},
05675   {"pathdelay",                 EDIF_TOK_PATHDELAY},
05676   {"pathwidth",                 EDIF_TOK_PATHWIDTH},
05677   {"permutable",                EDIF_TOK_PERMUTABLE},
05678   {"physicaldesignrule",        EDIF_TOK_PHYSICALDESIGNRULE},
05679   {"plug",                      EDIF_TOK_PLUG},
05680   {"point",                     EDIF_TOK_POINT},
05681   {"pointdisplay",              EDIF_TOK_POINTDISPLAY},
05682   {"pointlist",                 EDIF_TOK_POINTLIST},
05683   {"polygon",                   EDIF_TOK_POLYGON},
05684   {"port",                      EDIF_TOK_PORT},
05685   {"portbackannotate",          EDIF_TOK_PORTBACKANNOTATE},
05686   {"portbundle",                EDIF_TOK_PORTBUNDLE},
05687   {"portdelay",                 EDIF_TOK_PORTDELAY},
05688   {"portgroup",                 EDIF_TOK_PORTGROUP},
05689   {"portimplementation",        EDIF_TOK_PORTIMPLEMENTATION},
05690   {"portinstance",              EDIF_TOK_PORTINSTANCE},
05691   {"portlist",                  EDIF_TOK_PORTLIST},
05692   {"portlistalias",             EDIF_TOK_PORTLISTALIAS},
05693   {"portmap",                   EDIF_TOK_PORTMAP},
05694   {"portref",                   EDIF_TOK_PORTREF},
05695   {"program",                   EDIF_TOK_PROGRAM},
05696   {"property",                  EDIF_TOK_PROPERTY},
05697   {"propertydisplay",           EDIF_TOK_PROPERTYDISPLAY},
05698   {"protectionframe",           EDIF_TOK_PROTECTIONFRAME},
05699   {"pt",                        EDIF_TOK_PT},
05700   {"rangevector",               EDIF_TOK_RANGEVECTOR},
05701   {"rectangle",                 EDIF_TOK_RECTANGLE},
05702   {"rectanglesize",             EDIF_TOK_RECTANGLESIZE},
05703   {"rename",                    EDIF_TOK_RENAME},
05704   {"resolves",                  EDIF_TOK_RESOLVES},
05705   {"scale",                     EDIF_TOK_SCALE},
05706   {"scalex",                    EDIF_TOK_SCALEX},
05707   {"scaley",                    EDIF_TOK_SCALEY},
05708   {"section",                   EDIF_TOK_SECTION},
05709   {"shape",                     EDIF_TOK_SHAPE},
05710   {"simulate",                  EDIF_TOK_SIMULATE},
05711   {"simulationinfo",            EDIF_TOK_SIMULATIONINFO},
05712   {"singlevalueset",            EDIF_TOK_SINGLEVALUESET},
05713   {"site",                      EDIF_TOK_SITE},
05714   {"socket",                    EDIF_TOK_SOCKET},
05715   {"socketset",                 EDIF_TOK_SOCKETSET},
05716   {"status",                    EDIF_TOK_STATUS},
05717   {"steady",                    EDIF_TOK_STEADY},
05718   {"string",                    EDIF_TOK_STRING},
05719   {"stringdisplay",             EDIF_TOK_STRINGDISPLAY},
05720   {"strong",                    EDIF_TOK_STRONG},
05721   {"symbol",                    EDIF_TOK_SYMBOL},
05722   {"symmetry",                  EDIF_TOK_SYMMETRY},
05723   {"table",                     EDIF_TOK_TABLE},
05724   {"tabledefault",              EDIF_TOK_TABLEDEFAULT},
05725   {"technology",                EDIF_TOK_TECHNOLOGY},
05726   {"textheight",                EDIF_TOK_TEXTHEIGHT},
05727   {"timeinterval",              EDIF_TOK_TIMEINTERVAL},
05728   {"timestamp",                 EDIF_TOK_TIMESTAMP},
05729   {"timing",                    EDIF_TOK_TIMING},
05730   {"transform",                 EDIF_TOK_TRANSFORM},
05731   {"transition",                EDIF_TOK_TRANSITION},
05732   {"trigger",                   EDIF_TOK_TRIGGER},
05733   {"true",                      EDIF_TOK_TRUE},
05734   {"unconstrained",             EDIF_TOK_UNCONSTRAINED},
05735   {"undefined",                 EDIF_TOK_UNDEFINED},
05736   {"union",                     EDIF_TOK_UNION},
05737   {"unit",                      EDIF_TOK_UNIT},
05738   {"unused",                    EDIF_TOK_UNUSED},
05739   {"userdata",                  EDIF_TOK_USERDATA},
05740   {"version",                   EDIF_TOK_VERSION},
05741   {"view",                      EDIF_TOK_VIEW},
05742   {"viewlist",                  EDIF_TOK_VIEWLIST},
05743   {"viewmap",                   EDIF_TOK_VIEWMAP},
05744   {"viewref",                   EDIF_TOK_VIEWREF},
05745   {"viewtype",                  EDIF_TOK_VIEWTYPE},
05746   {"visible",                   EDIF_TOK_VISIBLE},
05747   {"voltagemap",                EDIF_TOK_VOLTAGEMAP},
05748   {"wavevalue",                 EDIF_TOK_WAVEVALUE},
05749   {"weak",                      EDIF_TOK_WEAK},
05750   {"weakjoined",                EDIF_TOK_WEAKJOINED},
05751   {"when",                      EDIF_TOK_WHEN},
05752   {"written",                   EDIF_TOK_WRITTEN}
05753 };
05754 static int ContextDefSize = sizeof(ContextDef) / sizeof(Context);
05755 /*
05756  *      Context follower tables:
05757  *
05758  *        This is pretty ugly, an array is defined for each context
05759  *      which has following context levels. Yet another table is used
05760  *      to bind these arrays to the originating contexts.
05761  *        Arrays are declared as:
05762  *
05763  *              static short f_<Context name>[] = { ... };
05764  *
05765  *      The array entries are the '%token' values for all keywords which
05766  *      can be reached from the <Context name> context. Like I said, ugly,
05767  *      but it works.
05768  *        A negative entry means that the follow can only occur once within
05769  *      the specified context.
05770  */
05771 static short f_NULL[] = {EDIF_TOK_EDIF};
05772 static short f_Edif[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_EDIFVERSION,
05773                          EDIF_TOK_EDIFLEVEL, EDIF_TOK_KEYWORDMAP,
05774                          -EDIF_TOK_STATUS, EDIF_TOK_EXTERNAL,
05775                          EDIF_TOK_LIBRARY, EDIF_TOK_DESIGN, EDIF_TOK_COMMENT,
05776                          EDIF_TOK_USERDATA};
05777 static short f_AcLoad[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_MINOMAXDISPLAY};
05778 static short f_After[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_FOLLOW,
05779                           EDIF_TOK_MAINTAIN, EDIF_TOK_LOGICASSIGN,
05780                           EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
05781 static short f_Annotate[] = {EDIF_TOK_STRINGDISPLAY};
05782 static short f_Apply[] = {EDIF_TOK_CYCLE, EDIF_TOK_LOGICINPUT,
05783                           EDIF_TOK_LOGICOUTPUT, EDIF_TOK_COMMENT,
05784                           EDIF_TOK_USERDATA};
05785 static short f_Arc[] = {EDIF_TOK_PT};
05786 static short f_Array[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME};
05787 static short f_ArrayMacro[] = {EDIF_TOK_PLUG};
05788 static short f_ArrayRelatedInfo[] = {EDIF_TOK_BASEARRAY, EDIF_TOK_ARRAYSITE,
05789                                      EDIF_TOK_ARRAYMACRO, EDIF_TOK_COMMENT,
05790                                      EDIF_TOK_USERDATA};
05791 static short f_ArraySite[] = {EDIF_TOK_SOCKET};
05792 static short f_AtLeast[] = {EDIF_TOK_E};
05793 static short f_AtMost[] = {EDIF_TOK_E};
05794 static short f_Becomes[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICLIST,
05795                             EDIF_TOK_LOGICONEOF};
05796 /*
05797 static short f_Between[] = {EDIF_TOK_ATLEAST, EDIF_TOK_GREATERTHAN,
05798                             EDIF_TOK_ATMOST, EDIF_TOK_LESSTHAN};
05799 */
05800 static short f_Boolean[] = {EDIF_TOK_FALSE, EDIF_TOK_TRUE,
05801                             EDIF_TOK_BOOLEANDISPLAY, EDIF_TOK_BOOLEAN};
05802 static short f_BooleanDisplay[] = {EDIF_TOK_FALSE, EDIF_TOK_TRUE,
05803                                    EDIF_TOK_DISPLAY};
05804 static short f_BooleanMap[] = {EDIF_TOK_FALSE, EDIF_TOK_TRUE};
05805 static short f_BorderPattern[] = {EDIF_TOK_BOOLEAN};
05806 static short f_BoundingBox[] = {EDIF_TOK_RECTANGLE};
05807 static short f_Cell[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_CELLTYPE,
05808                          -EDIF_TOK_STATUS, -EDIF_TOK_VIEWMAP, EDIF_TOK_VIEW,
05809                          EDIF_TOK_COMMENT, EDIF_TOK_USERDATA,
05810                          EDIF_TOK_PROPERTY};
05811 static short f_CellRef[] = {EDIF_TOK_NAME, EDIF_TOK_LIBRARYREF};
05812 static short f_Change[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
05813                            EDIF_TOK_BECOMES, EDIF_TOK_TRANSITION};
05814 static short f_Circle[] = {EDIF_TOK_PT, EDIF_TOK_PROPERTY};
05815 static short f_Color[] = {EDIF_TOK_E};
05816 static short f_CommentGraphics[] = {EDIF_TOK_ANNOTATE, EDIF_TOK_FIGURE,
05817                                     EDIF_TOK_INSTANCE, -EDIF_TOK_BOUNDINGBOX,
05818                                     EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
05819                                     EDIF_TOK_USERDATA};
05820 static short f_Compound[] = {EDIF_TOK_NAME};
05821 static short f_ConnectLocation[] = {EDIF_TOK_FIGURE};
05822 static short f_Contents[] = {EDIF_TOK_INSTANCE, EDIF_TOK_OFFPAGECONNECTOR,
05823                              EDIF_TOK_FIGURE, EDIF_TOK_SECTION, EDIF_TOK_NET,
05824                              EDIF_TOK_NETBUNDLE, EDIF_TOK_PAGE,
05825                              EDIF_TOK_COMMENTGRAPHICS,
05826                              EDIF_TOK_PORTIMPLEMENTATION,
05827                              EDIF_TOK_TIMING, EDIF_TOK_SIMULATE,
05828                              EDIF_TOK_WHEN, EDIF_TOK_FOLLOW,
05829                              EDIF_TOK_LOGICPORT, -EDIF_TOK_BOUNDINGBOX,
05830                              EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
05831 static short f_Criticality[] = {EDIF_TOK_INTEGERDISPLAY};
05832 static short f_CurrentMap[] = {EDIF_TOK_MNM, EDIF_TOK_E};
05833 static short f_Curve[] = {EDIF_TOK_ARC, EDIF_TOK_PT};
05834 static short f_Cycle[] = {EDIF_TOK_DURATION};
05835 static short f_DataOrigin[] = {EDIF_TOK_VERSION};
05836 static short f_DcFanInLoad[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY};
05837 static short f_DcFanOutLoad[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY};
05838 static short f_DcMaxFanIn[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY};
05839 static short f_DcMaxFanOut[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY};
05840 static short f_Delay[] = {EDIF_TOK_MNM, EDIF_TOK_E};
05841 static short f_Delta[] = {EDIF_TOK_PT};
05842 static short f_Design[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_CELLREF,
05843                            EDIF_TOK_STATUS, EDIF_TOK_COMMENT,
05844                            EDIF_TOK_PROPERTY, EDIF_TOK_USERDATA};
05845 static short f_Designator[] = {EDIF_TOK_STRINGDISPLAY};
05846 static short f_Difference[] = {EDIF_TOK_FIGUREGROUPREF, EDIF_TOK_INTERSECTION,
05847                                EDIF_TOK_UNION, EDIF_TOK_DIFFERENCE,
05848                                EDIF_TOK_INVERSE, EDIF_TOK_OVERSIZE};
05849 static short f_Display[] = {EDIF_TOK_NAME, EDIF_TOK_FIGUREGROUPOVERRIDE,
05850                             EDIF_TOK_JUSTIFY, EDIF_TOK_ORIENTATION,
05851                             EDIF_TOK_ORIGIN};
05852 static short f_Dominates[] = {EDIF_TOK_NAME};
05853 static short f_Dot[] = {EDIF_TOK_PT, EDIF_TOK_PROPERTY};
05854 static short f_Duration[] = {EDIF_TOK_E};
05855 static short f_EnclosureDistance[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
05856                                       EDIF_TOK_FIGUREGROUPOBJECT,
05857                                       EDIF_TOK_LESSTHAN, EDIF_TOK_GREATERTHAN,
05858                                       EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
05859                                       EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN,
05860                                       EDIF_TOK_SINGLEVALUESET,
05861                                       EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
05862 static short f_Entry[] = {EDIF_TOK_MATCH, EDIF_TOK_CHANGE, EDIF_TOK_STEADY,
05863                           EDIF_TOK_LOGICREF, EDIF_TOK_PORTREF,
05864                           EDIF_TOK_NOCHANGE, EDIF_TOK_TABLE,
05865                           EDIF_TOK_DELAY, EDIF_TOK_LOADDELAY};
05866 static short f_Exactly[] = {EDIF_TOK_E};
05867 static short f_External[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
05868                              EDIF_TOK_EDIFLEVEL, EDIF_TOK_TECHNOLOGY,
05869                              -EDIF_TOK_STATUS, EDIF_TOK_CELL, EDIF_TOK_COMMENT,
05870                              EDIF_TOK_USERDATA};
05871 static short f_Fabricate[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME};
05872 static short f_Figure[] = {EDIF_TOK_NAME, EDIF_TOK_FIGUREGROUPOVERRIDE,
05873                            EDIF_TOK_CIRCLE, EDIF_TOK_DOT, EDIF_TOK_OPENSHAPE,
05874                            EDIF_TOK_PATH, EDIF_TOK_POLYGON,
05875                            EDIF_TOK_RECTANGLE, EDIF_TOK_SHAPE,
05876                            EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
05877 static short f_FigureArea[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
05878                                EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
05879                                EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
05880                                EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
05881                                EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
05882                                EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
05883 static short f_FigureGroup[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
05884                                 -EDIF_TOK_CORNERTYPE, -EDIF_TOK_ENDTYPE,
05885                                 -EDIF_TOK_PATHWIDTH, -EDIF_TOK_BORDERWIDTH,
05886                                 -EDIF_TOK_COLOR, -EDIF_TOK_FILLPATTERN,
05887                                 -EDIF_TOK_BORDERPATTERN, -EDIF_TOK_TEXTHEIGHT,
05888                                 -EDIF_TOK_VISIBLE, EDIF_TOK_INCLUDEFIGUREGROUP,
05889                                 EDIF_TOK_COMMENT, EDIF_TOK_PROPERTY,
05890                                 EDIF_TOK_USERDATA};
05891 static short f_FigureGroupObject[] = {EDIF_TOK_NAME,
05892                                       EDIF_TOK_FIGUREGROUPOBJECT,
05893                                       EDIF_TOK_INTERSECTION, EDIF_TOK_UNION,
05894                                       EDIF_TOK_DIFFERENCE, EDIF_TOK_INVERSE,
05895                                       EDIF_TOK_OVERSIZE};
05896 static short f_FigureGroupOverride[] = {EDIF_TOK_NAME, -EDIF_TOK_CORNERTYPE,
05897                                         -EDIF_TOK_ENDTYPE, -EDIF_TOK_PATHWIDTH,
05898                                         -EDIF_TOK_BORDERWIDTH, -EDIF_TOK_COLOR,
05899                                         -EDIF_TOK_FILLPATTERN,
05900                                         -EDIF_TOK_TEXTHEIGHT,
05901                                         -EDIF_TOK_BORDERPATTERN,
05902                                         EDIF_TOK_VISIBLE, EDIF_TOK_COMMENT,
05903                                         EDIF_TOK_PROPERTY, EDIF_TOK_USERDATA};
05904 static short f_FigureGroupRef[] = {EDIF_TOK_NAME, EDIF_TOK_LIBRARYREF};
05905 static short f_FigurePerimeter[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
05906                                     EDIF_TOK_FIGUREGROUPOBJECT,
05907                                     EDIF_TOK_LESSTHAN, EDIF_TOK_GREATERTHAN,
05908                                     EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
05909                                     EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN,
05910                                     EDIF_TOK_SINGLEVALUESET, EDIF_TOK_COMMENT,
05911                                     EDIF_TOK_USERDATA};
05912 static short f_FigureWidth[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
05913                                 EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
05914                                 EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
05915                                 EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
05916                                 EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
05917                                 EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
05918 static short f_FillPattern[] = {EDIF_TOK_BOOLEAN};
05919 static short f_Follow[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF, EDIF_TOK_TABLE,
05920                            EDIF_TOK_DELAY, EDIF_TOK_LOADDELAY};
05921 static short f_ForbiddenEvent[] = {EDIF_TOK_TIMEINTERVAL, EDIF_TOK_EVENT};
05922 static short f_GlobalPortRef[] = {EDIF_TOK_NAME};
05923 static short f_GreaterThan[] = {EDIF_TOK_E};
05924 static short f_GridMap[] = {EDIF_TOK_E};
05925 static short f_IncludeFigureGroup[] = {EDIF_TOK_FIGUREGROUPREF,
05926                                        EDIF_TOK_INTERSECTION, EDIF_TOK_UNION,
05927                                        EDIF_TOK_DIFFERENCE, EDIF_TOK_INVERSE,
05928                                        EDIF_TOK_OVERSIZE};
05929 static short f_Instance[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
05930                              EDIF_TOK_VIEWREF, EDIF_TOK_VIEWLIST,
05931                              -EDIF_TOK_TRANSFORM, EDIF_TOK_PARAMETERASSIGN,
05932                              EDIF_TOK_PORTINSTANCE, EDIF_TOK_TIMING,
05933                              -EDIF_TOK_DESIGNATOR, EDIF_TOK_PROPERTY,
05934                              EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
05935 static short f_InstanceBackAnnotate[] = {EDIF_TOK_INSTANCEREF,
05936                                          -EDIF_TOK_DESIGNATOR, EDIF_TOK_TIMING,
05937                                          EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT};
05938 static short f_InstanceGroup[] = {EDIF_TOK_INSTANCEREF};
05939 static short f_InstanceMap[] = {EDIF_TOK_INSTANCEREF, EDIF_TOK_INSTANCEGROUP,
05940                                 EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
05941 static short f_InstanceRef[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
05942                                 EDIF_TOK_INSTANCEREF, EDIF_TOK_VIEWREF};
05943 static short f_Integer[] = {EDIF_TOK_INTEGERDISPLAY, EDIF_TOK_INTEGER};
05944 static short f_IntegerDisplay[] = {EDIF_TOK_DISPLAY};
05945 static short f_Interface[] = {EDIF_TOK_PORT, EDIF_TOK_PORTBUNDLE,
05946                               -EDIF_TOK_SYMBOL, -EDIF_TOK_PROTECTIONFRAME,
05947                               -EDIF_TOK_ARRAYRELATEDINFO, EDIF_TOK_PARAMETER,
05948                               EDIF_TOK_JOINED, EDIF_TOK_MUSTJOIN,
05949                               EDIF_TOK_WEAKJOINED, EDIF_TOK_PERMUTABLE,
05950                               EDIF_TOK_TIMING, EDIF_TOK_SIMULATE,
05951                               -EDIF_TOK_DESIGNATOR, EDIF_TOK_PROPERTY,
05952                               EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
05953 static short f_InterFigureGroupSpacing[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
05954                                             EDIF_TOK_FIGUREGROUPOBJECT,
05955                                             EDIF_TOK_LESSTHAN,
05956                                             EDIF_TOK_GREATERTHAN,
05957                                             EDIF_TOK_ATMOST,
05958                                             EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
05959                                             EDIF_TOK_BETWEEN,
05960                                             EDIF_TOK_SINGLEVALUESET,
05961                                             EDIF_TOK_COMMENT,
05962                                             EDIF_TOK_USERDATA};
05963 static short f_Intersection[] = {EDIF_TOK_FIGUREGROUPREF,
05964                                  EDIF_TOK_INTERSECTION, EDIF_TOK_UNION,
05965                                  EDIF_TOK_DIFFERENCE, EDIF_TOK_INVERSE,
05966                                  EDIF_TOK_OVERSIZE};
05967 static short f_IntraFigureGroupSpacing[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
05968                                             EDIF_TOK_FIGUREGROUPOBJECT,
05969                                             EDIF_TOK_LESSTHAN,
05970                                             EDIF_TOK_GREATERTHAN,
05971                                             EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
05972                                             EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN,
05973                                             EDIF_TOK_SINGLEVALUESET,
05974                                             EDIF_TOK_COMMENT,
05975                                             EDIF_TOK_USERDATA};
05976 static short f_Inverse[] = {EDIF_TOK_FIGUREGROUPREF, EDIF_TOK_INTERSECTION,
05977                             EDIF_TOK_UNION, EDIF_TOK_DIFFERENCE,
05978                             EDIF_TOK_INVERSE, EDIF_TOK_OVERSIZE};
05979 static short f_Joined[] = {EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
05980                            EDIF_TOK_GLOBALPORTREF};
05981 static short f_KeywordDisplay[] = {EDIF_TOK_DISPLAY};
05982 static short f_KeywordMap[] = {EDIF_TOK_KEYWORDLEVEL, EDIF_TOK_COMMENT};
05983 static short f_LessThan[] = {EDIF_TOK_E};
05984 static short f_Library[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_EDIFLEVEL,
05985                             EDIF_TOK_TECHNOLOGY, -EDIF_TOK_STATUS,
05986                             EDIF_TOK_CELL, EDIF_TOK_COMMENT,
05987                             EDIF_TOK_USERDATA};
05988 static short f_LibraryRef[] = {EDIF_TOK_NAME};
05989 static short f_ListOfNets[] = {EDIF_TOK_NET};
05990 static short f_ListOfPorts[] = {EDIF_TOK_PORT, EDIF_TOK_PORTBUNDLE};
05991 static short f_LoadDelay[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_MINOMAXDISPLAY};
05992 static short f_LogicAssign[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF,
05993                                 EDIF_TOK_LOGICREF, EDIF_TOK_TABLE,
05994                                 EDIF_TOK_DELAY, EDIF_TOK_LOADDELAY};
05995 static short f_LogicInput[] = {EDIF_TOK_PORTLIST, EDIF_TOK_PORTREF,
05996                                EDIF_TOK_NAME, EDIF_TOK_LOGICWAVEFORM};
05997 static short f_LogicList[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICONEOF,
05998                               EDIF_TOK_IGNORE};
05999 static short f_LogicMapInput[] = {EDIF_TOK_LOGICREF};
06000 static short f_LogicMapOutput[] = {EDIF_TOK_LOGICREF};
06001 static short f_LogicOneOf[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICLIST};
06002 static short f_LogicOutput[] = {EDIF_TOK_PORTLIST, EDIF_TOK_PORTREF,
06003                                 EDIF_TOK_NAME, EDIF_TOK_LOGICWAVEFORM};
06004 static short f_LogicPort[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
06005                               EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
06006                               EDIF_TOK_USERDATA};
06007 static short f_LogicRef[] = {EDIF_TOK_NAME, EDIF_TOK_LIBRARYREF};
06008 static short f_LogicValue[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
06009                                -EDIF_TOK_VOLTAGEMAP, -EDIF_TOK_CURRENTMAP,
06010                                -EDIF_TOK_BOOLEANMAP, -EDIF_TOK_COMPOUND,
06011                                -EDIF_TOK_WEAK ,-EDIF_TOK_STRONG,
06012                                -EDIF_TOK_DOMINATES, -EDIF_TOK_LOGICMAPOUTPUT,
06013                                -EDIF_TOK_LOGICMAPINPUT,
06014                                -EDIF_TOK_ISOLATED, EDIF_TOK_RESOLVES,
06015                                EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
06016                                EDIF_TOK_USERDATA};
06017 static short f_LogicWaveform[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICLIST,
06018                                   EDIF_TOK_LOGICONEOF, EDIF_TOK_IGNORE};
06019 static short f_Maintain[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF, EDIF_TOK_DELAY,
06020                              EDIF_TOK_LOADDELAY};
06021 static short f_Match[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
06022                           EDIF_TOK_LOGICLIST, EDIF_TOK_LOGICONEOF};
06023 static short f_Member[] = {EDIF_TOK_NAME};
06024 static short f_MiNoMax[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_MINOMAXDISPLAY,
06025                             EDIF_TOK_MINOMAX};
06026 static short f_MiNoMaxDisplay[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_DISPLAY};
06027 static short f_Mnm[] = {EDIF_TOK_E, EDIF_TOK_UNDEFINED,
06028                         EDIF_TOK_UNCONSTRAINED};
06029 static short f_MultipleValueSet[] = {EDIF_TOK_RANGEVECTOR};
06030 static short f_MustJoin[] = {EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
06031                              EDIF_TOK_WEAKJOINED, EDIF_TOK_JOINED};
06032 static short f_Name[] = {EDIF_TOK_DISPLAY};
06033 static short f_Net[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, -EDIF_TOK_CRITICALITY,
06034                         EDIF_TOK_NETDELAY, EDIF_TOK_FIGURE, EDIF_TOK_NET,
06035                         EDIF_TOK_INSTANCE, EDIF_TOK_COMMENTGRAPHICS,
06036                         EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
06037                         EDIF_TOK_USERDATA, EDIF_TOK_JOINED, EDIF_TOK_ARRAY};
06038 static short f_NetBackAnnotate[] = {EDIF_TOK_NETREF, EDIF_TOK_NETDELAY,
06039                                     -EDIF_TOK_CRITICALITY, EDIF_TOK_PROPERTY,
06040                                     EDIF_TOK_COMMENT};
06041 static short f_NetBundle[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
06042                               EDIF_TOK_LISTOFNETS, EDIF_TOK_FIGURE,
06043                               EDIF_TOK_COMMENTGRAPHICS, EDIF_TOK_PROPERTY,
06044                               EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
06045 static short f_NetDelay[] = {EDIF_TOK_DERIVATION, EDIF_TOK_DELAY,
06046                              EDIF_TOK_TRANSITION, EDIF_TOK_BECOMES};
06047 static short f_NetGroup[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER, EDIF_TOK_NETREF};
06048 static short f_NetMap[] = {EDIF_TOK_NETREF, EDIF_TOK_NETGROUP,
06049                            EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
06050 static short f_NetRef[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER, EDIF_TOK_NETREF,
06051                            EDIF_TOK_INSTANCEREF, EDIF_TOK_VIEWREF};
06052 static short f_NonPermutable[] = {EDIF_TOK_PORTREF, EDIF_TOK_PERMUTABLE};
06053 static short f_NotAllowed[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
06054                                EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_COMMENT,
06055                                EDIF_TOK_USERDATA};
06056 static short f_NotchSpacing[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
06057                                  EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
06058                                  EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
06059                                  EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
06060                                  EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
06061                                  EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
06062 static short f_Number[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY, EDIF_TOK_NUMBER};
06063 static short f_NumberDefinition[] = {EDIF_TOK_SCALE, -EDIF_TOK_GRIDMAP,
06064                                      EDIF_TOK_COMMENT};
06065 static short f_NumberDisplay[] = {EDIF_TOK_E, EDIF_TOK_DISPLAY};
06066 static short f_OffPageConnector[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
06067                                      -EDIF_TOK_UNUSED, EDIF_TOK_PROPERTY,
06068                                      EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
06069 static short f_OffsetEvent[] = {EDIF_TOK_EVENT, EDIF_TOK_E};
06070 static short f_OpenShape[] = {EDIF_TOK_CURVE, EDIF_TOK_PROPERTY};
06071 static short f_Origin[] = {EDIF_TOK_PT};
06072 static short f_OverhangDistance[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
06073                                      EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
06074                                      EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
06075                                      EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
06076                                      EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
06077                                      EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
06078 static short f_OverlapDistance[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
06079                                     EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
06080                                     EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
06081                                     EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
06082                                     EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
06083                                     EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
06084 static short f_Oversize[] = {EDIF_TOK_FIGUREGROUPREF, EDIF_TOK_INTERSECTION,
06085                              EDIF_TOK_UNION, EDIF_TOK_DIFFERENCE,
06086                              EDIF_TOK_INVERSE, EDIF_TOK_OVERSIZE,
06087                              EDIF_TOK_CORNERTYPE};
06088 static short f_Page[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
06089                          EDIF_TOK_INSTANCE, EDIF_TOK_NET, EDIF_TOK_NETBUNDLE,
06090                          EDIF_TOK_COMMENTGRAPHICS, EDIF_TOK_PORTIMPLEMENTATION,
06091                          -EDIF_TOK_PAGESIZE, -EDIF_TOK_BOUNDINGBOX,
06092                          EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
06093 static short f_PageSize[] = {EDIF_TOK_RECTANGLE};
06094 static short f_Parameter[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
06095                               EDIF_TOK_BOOLEAN, EDIF_TOK_INTEGER,
06096                               EDIF_TOK_MINOMAX, EDIF_TOK_NUMBER,
06097                               EDIF_TOK_POINT, EDIF_TOK_STRING};
06098 static short f_ParameterAssign[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
06099                                     EDIF_TOK_BOOLEAN, EDIF_TOK_INTEGER,
06100                                     EDIF_TOK_MINOMAX, EDIF_TOK_NUMBER, EDIF_TOK_POINT,
06101                                     EDIF_TOK_STRING};
06102 static short f_ParameterDisplay[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
06103                                      EDIF_TOK_DISPLAY};
06104 static short f_Path[] = {EDIF_TOK_POINTLIST, EDIF_TOK_PROPERTY};
06105 static short f_PathDelay[] = {EDIF_TOK_DELAY, EDIF_TOK_EVENT};
06106 static short f_Permutable[] = {EDIF_TOK_PORTREF, EDIF_TOK_PERMUTABLE,
06107                                EDIF_TOK_NONPERMUTABLE};
06108 static short f_PhysicalDesignRule[] = {EDIF_TOK_FIGUREWIDTH,
06109                                        EDIF_TOK_FIGUREAREA,
06110                                        EDIF_TOK_RECTANGLESIZE,
06111                                        EDIF_TOK_FIGUREPERIMETER,
06112                                        EDIF_TOK_OVERLAPDISTANCE,
06113                                        EDIF_TOK_OVERHANGDISTANCE,
06114                                        EDIF_TOK_ENCLOSUREDISTANCE,
06115                                        EDIF_TOK_INTERFIGUREGROUPSPACING,
06116                                        EDIF_TOK_NOTCHSPACING,
06117                                        EDIF_TOK_INTRAFIGUREGROUPSPACING,
06118                                        EDIF_TOK_NOTALLOWED,
06119                                        EDIF_TOK_FIGUREGROUP, EDIF_TOK_COMMENT,
06120                                        EDIF_TOK_USERDATA};
06121 static short f_Plug[] = {EDIF_TOK_SOCKETSET};
06122 static short f_Point[] = {EDIF_TOK_PT, EDIF_TOK_POINTDISPLAY,
06123                           EDIF_TOK_POINT};
06124 static short f_PointDisplay[] = {EDIF_TOK_PT, EDIF_TOK_DISPLAY};
06125 static short f_PointList[] = {EDIF_TOK_PT};
06126 static short f_Polygon[] = {EDIF_TOK_POINTLIST, EDIF_TOK_PROPERTY};
06127 static short f_Port[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
06128                          -EDIF_TOK_DIRECTION, -EDIF_TOK_UNUSED,
06129                          EDIF_TOK_PORTDELAY, -EDIF_TOK_DESIGNATOR,
06130                          -EDIF_TOK_DCFANINLOAD, -EDIF_TOK_DCFANOUTLOAD,
06131                          -EDIF_TOK_DCMAXFANIN, -EDIF_TOK_DCMAXFANOUT,
06132                          -EDIF_TOK_ACLOAD, EDIF_TOK_PROPERTY,
06133                          EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
06134 static short f_PortBackAnnotate[] = {EDIF_TOK_PORTREF, -EDIF_TOK_DESIGNATOR,
06135                                      EDIF_TOK_PORTDELAY, -EDIF_TOK_DCFANINLOAD,
06136                                      -EDIF_TOK_DCFANOUTLOAD,
06137                                      -EDIF_TOK_DCMAXFANIN,
06138                                      -EDIF_TOK_DCMAXFANOUT, -EDIF_TOK_ACLOAD,
06139                                      EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT};
06140 static short f_PortBundle[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
06141                                EDIF_TOK_LISTOFPORTS, EDIF_TOK_PROPERTY,
06142                                EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
06143 static short f_PortDelay[] = {EDIF_TOK_DERIVATION, EDIF_TOK_DELAY,
06144                               EDIF_TOK_LOADDELAY, EDIF_TOK_TRANSITION,
06145                               EDIF_TOK_BECOMES};
06146 static short f_PortGroup[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
06147                               EDIF_TOK_PORTREF};
06148 static short f_PortImplementation[] = {EDIF_TOK_PORTREF, EDIF_TOK_NAME, EDIF_TOK_MEMBER,
06149                                        -EDIF_TOK_CONNECTLOCATION,
06150                                        EDIF_TOK_FIGURE, EDIF_TOK_INSTANCE,
06151                                        EDIF_TOK_COMMENTGRAPHICS,
06152                                        EDIF_TOK_PROPERTYDISPLAY,
06153                                        EDIF_TOK_KEYWORDDISPLAY,
06154                                        EDIF_TOK_PROPERTY,
06155                                        EDIF_TOK_USERDATA, EDIF_TOK_COMMENT};
06156 static short f_PortInstance[] = {EDIF_TOK_PORTREF, EDIF_TOK_NAME,
06157                                  EDIF_TOK_MEMBER, -EDIF_TOK_UNUSED,
06158                                  EDIF_TOK_PORTDELAY, -EDIF_TOK_DESIGNATOR,
06159                                  -EDIF_TOK_DCFANINLOAD,
06160                                  -EDIF_TOK_DCFANOUTLOAD, -EDIF_TOK_DCMAXFANIN,
06161                                  -EDIF_TOK_DCMAXFANOUT, -EDIF_TOK_ACLOAD,
06162                                  EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
06163                                  EDIF_TOK_USERDATA};
06164 static short f_PortList[] = {EDIF_TOK_PORTREF, EDIF_TOK_NAME,
06165                              EDIF_TOK_MEMBER};
06166 static short f_PortListAlias[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
06167                                   EDIF_TOK_ARRAY, EDIF_TOK_PORTLIST};
06168 static short f_PortMap[] = {EDIF_TOK_PORTREF, EDIF_TOK_PORTGROUP,
06169                             EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
06170 static short f_PortRef[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
06171                             EDIF_TOK_PORTREF, EDIF_TOK_INSTANCEREF,
06172                             EDIF_TOK_VIEWREF};
06173 static short f_Program[] = {EDIF_TOK_VERSION};
06174 static short f_Property[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_BOOLEAN,
06175                              EDIF_TOK_INTEGER, EDIF_TOK_MINOMAX,
06176                              EDIF_TOK_NUMBER, EDIF_TOK_POINT, EDIF_TOK_STRING,
06177                              -EDIF_TOK_OWNER, -EDIF_TOK_UNIT,
06178                              EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT};
06179 static short f_PropertyDisplay[] = {EDIF_TOK_NAME, EDIF_TOK_DISPLAY};
06180 static short f_ProtectionFrame[] = {EDIF_TOK_PORTIMPLEMENTATION,
06181                                     EDIF_TOK_FIGURE, EDIF_TOK_INSTANCE,
06182                                     EDIF_TOK_COMMENTGRAPHICS,
06183                                     -EDIF_TOK_BOUNDINGBOX,
06184                                     EDIF_TOK_PROPERTYDISPLAY,
06185                                     EDIF_TOK_KEYWORDDISPLAY,
06186                                     EDIF_TOK_PARAMETERDISPLAY,
06187                                     EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
06188                                     EDIF_TOK_USERDATA};
06189 static short f_RangeVector[] = {EDIF_TOK_LESSTHAN, EDIF_TOK_GREATERTHAN,
06190                                 EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
06191                                 EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN,
06192                                 EDIF_TOK_SINGLEVALUESET};
06193 static short f_Rectangle[] = {EDIF_TOK_PT, EDIF_TOK_PROPERTY};
06194 static short f_RectangleSize[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
06195                                   EDIF_TOK_FIGUREGROUPOBJECT,
06196                                   EDIF_TOK_RANGEVECTOR,
06197                                   EDIF_TOK_MULTIPLEVALUESET,EDIF_TOK_COMMENT,
06198                                   EDIF_TOK_USERDATA};
06199 static short f_Rename[] = {EDIF_TOK_NAME, EDIF_TOK_STRINGDISPLAY};
06200 static short f_Resolves[] = {EDIF_TOK_NAME};
06201 static short f_Scale[] = {EDIF_TOK_E, EDIF_TOK_UNIT};
06202 static short f_Section[] = {EDIF_TOK_SECTION, EDIF_TOK_INSTANCE};
06203 static short f_Shape[] = {EDIF_TOK_CURVE, EDIF_TOK_PROPERTY};
06204 static short f_Simulate[] = {EDIF_TOK_NAME, EDIF_TOK_PORTLISTALIAS,
06205                              EDIF_TOK_WAVEVALUE, EDIF_TOK_APPLY,
06206                              EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
06207 static short f_SimulationInfo[] = {EDIF_TOK_LOGICVALUE, EDIF_TOK_COMMENT,
06208                                    EDIF_TOK_USERDATA};
06209 static short f_SingleValueSet[] = {EDIF_TOK_LESSTHAN, EDIF_TOK_GREATERTHAN,
06210                                    EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
06211                                    EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN};
06212 static short f_Site[] = {EDIF_TOK_VIEWREF, EDIF_TOK_TRANSFORM};
06213 static short f_Socket[] = {EDIF_TOK_SYMMETRY};
06214 static short f_SocketSet[] = {EDIF_TOK_SYMMETRY, EDIF_TOK_SITE};
06215 static short f_Status[] = {EDIF_TOK_WRITTEN, EDIF_TOK_COMMENT,
06216                            EDIF_TOK_USERDATA};
06217 static short f_Steady[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER, EDIF_TOK_PORTREF,
06218                            EDIF_TOK_PORTLIST, EDIF_TOK_DURATION,
06219                            EDIF_TOK_TRANSITION, EDIF_TOK_BECOMES};
06220 static short f_String[] = {EDIF_TOK_STRINGDISPLAY, EDIF_TOK_STRING};
06221 static short f_StringDisplay[] = {EDIF_TOK_DISPLAY};
06222 static short f_Strong[] = {EDIF_TOK_NAME};
06223 static short f_Symbol[] = {EDIF_TOK_PORTIMPLEMENTATION, EDIF_TOK_FIGURE,
06224                            EDIF_TOK_INSTANCE, EDIF_TOK_COMMENTGRAPHICS,
06225                            EDIF_TOK_ANNOTATE, -EDIF_TOK_PAGESIZE,
06226                            -EDIF_TOK_BOUNDINGBOX, EDIF_TOK_PROPERTYDISPLAY,
06227                            EDIF_TOK_KEYWORDDISPLAY, EDIF_TOK_PARAMETERDISPLAY,
06228                            EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
06229                            EDIF_TOK_USERDATA};
06230 static short f_Symmetry[] = {EDIF_TOK_TRANSFORM};
06231 static short f_Table[] = {EDIF_TOK_ENTRY, EDIF_TOK_TABLEDEFAULT};
06232 static short f_TableDefault[] = {EDIF_TOK_LOGICREF, EDIF_TOK_PORTREF,
06233                                  EDIF_TOK_NOCHANGE, EDIF_TOK_TABLE,
06234                                  EDIF_TOK_DELAY, EDIF_TOK_LOADDELAY};
06235 static short f_Technology[] = {EDIF_TOK_NUMBERDEFINITION, EDIF_TOK_FIGUREGROUP,
06236                                EDIF_TOK_FABRICATE, -EDIF_TOK_SIMULATIONINFO,
06237                                EDIF_TOK_COMMENT, EDIF_TOK_USERDATA,
06238                                -EDIF_TOK_PHYSICALDESIGNRULE};
06239 static short f_TimeInterval[] = {EDIF_TOK_EVENT, EDIF_TOK_OFFSETEVENT,
06240                                  EDIF_TOK_DURATION};
06241 static short f_Timing[] = {EDIF_TOK_DERIVATION, EDIF_TOK_PATHDELAY,
06242                            EDIF_TOK_FORBIDDENEVENT, EDIF_TOK_COMMENT,
06243                            EDIF_TOK_USERDATA};
06244 static short f_Transform[] = {EDIF_TOK_SCALEX, EDIF_TOK_SCALEY, EDIF_TOK_DELTA,
06245                               EDIF_TOK_ORIENTATION, EDIF_TOK_ORIGIN};
06246 static short f_Transition[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICLIST,
06247                                EDIF_TOK_LOGICONEOF};
06248 static short f_Trigger[] = {EDIF_TOK_CHANGE, EDIF_TOK_STEADY,
06249                             EDIF_TOK_INITIAL};
06250 static short f_Union[] = {EDIF_TOK_FIGUREGROUPREF, EDIF_TOK_INTERSECTION,
06251                           EDIF_TOK_UNION, EDIF_TOK_DIFFERENCE,
06252                           EDIF_TOK_INVERSE, EDIF_TOK_OVERSIZE};
06253 static short f_View[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_VIEWTYPE,
06254                          EDIF_TOK_INTERFACE, -EDIF_TOK_STATUS,
06255                          -EDIF_TOK_CONTENTS, EDIF_TOK_COMMENT,
06256                          EDIF_TOK_PROPERTY, EDIF_TOK_USERDATA};
06257 static short f_ViewList[] = {EDIF_TOK_VIEWREF, EDIF_TOK_VIEWLIST};
06258 static short f_ViewMap[] = {EDIF_TOK_PORTMAP, EDIF_TOK_PORTBACKANNOTATE,
06259                             EDIF_TOK_INSTANCEMAP,
06260                             EDIF_TOK_INSTANCEBACKANNOTATE, EDIF_TOK_NETMAP,
06261                             EDIF_TOK_NETBACKANNOTATE, EDIF_TOK_COMMENT,
06262                             EDIF_TOK_USERDATA};
06263 static short f_ViewRef[] = {EDIF_TOK_NAME, EDIF_TOK_CELLREF};
06264 static short f_Visible[] = {EDIF_TOK_FALSE, EDIF_TOK_TRUE};
06265 static short f_VoltageMap[] = {EDIF_TOK_MNM, EDIF_TOK_E};
06266 static short f_WaveValue[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_E,
06267                               EDIF_TOK_LOGICWAVEFORM};
06268 static short f_Weak[] = {EDIF_TOK_NAME};
06269 static short f_WeakJoined[] = {EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
06270                                EDIF_TOK_JOINED};
06271 static short f_When[] = {EDIF_TOK_TRIGGER, EDIF_TOK_AFTER,
06272                          EDIF_TOK_FOLLOW, EDIF_TOK_MAINTAIN,
06273                          EDIF_TOK_LOGICASSIGN, EDIF_TOK_COMMENT,
06274                          EDIF_TOK_USERDATA};
06275 static short f_Written[] = {EDIF_TOK_TIMESTAMP, EDIF_TOK_AUTHOR,
06276                             EDIF_TOK_PROGRAM, EDIF_TOK_DATAORIGIN,
06277                             EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
06278                             EDIF_TOK_USERDATA};
06279 /*
06280  *      Context binding table:
06281  *
06282  *        This binds context follower arrays to their originating context.
06283  */
06284 typedef struct Binder {
06285   short *Follower;              /* pointer to follower array */
06286   short Origin;                 /* '%token' value of origin */
06287   short FollowerSize;           /* size of follower array */
06288 } Binder;
06289 #define BE(f,o)                 {f,o,sizeof(f)/sizeof(short)}
06290 static Binder BinderDef[] = {
06291   BE(f_NULL,                    0),
06292   BE(f_Edif,                    EDIF_TOK_EDIF),
06293   BE(f_AcLoad,                  EDIF_TOK_ACLOAD),
06294   BE(f_After,                   EDIF_TOK_AFTER),
06295   BE(f_Annotate,                EDIF_TOK_ANNOTATE),
06296   BE(f_Apply,                   EDIF_TOK_APPLY),
06297   BE(f_Arc,                     EDIF_TOK_ARC),
06298   BE(f_Array,                   EDIF_TOK_ARRAY),
06299   BE(f_ArrayMacro,              EDIF_TOK_ARRAYMACRO),
06300   BE(f_ArrayRelatedInfo,        EDIF_TOK_ARRAYRELATEDINFO),
06301   BE(f_ArraySite,               EDIF_TOK_ARRAYSITE),
06302   BE(f_AtLeast,                 EDIF_TOK_ATLEAST),
06303   BE(f_AtMost,                  EDIF_TOK_ATMOST),
06304   BE(f_Becomes,                 EDIF_TOK_BECOMES),
06305   BE(f_Boolean,                 EDIF_TOK_BOOLEAN),
06306   BE(f_BooleanDisplay,          EDIF_TOK_BOOLEANDISPLAY),
06307   BE(f_BooleanMap,              EDIF_TOK_BOOLEANMAP),
06308   BE(f_BorderPattern,           EDIF_TOK_BORDERPATTERN),
06309   BE(f_BoundingBox,             EDIF_TOK_BOUNDINGBOX),
06310   BE(f_Cell,                    EDIF_TOK_CELL),
06311   BE(f_CellRef,                 EDIF_TOK_CELLREF),
06312   BE(f_Change,                  EDIF_TOK_CHANGE),
06313   BE(f_Circle,                  EDIF_TOK_CIRCLE),
06314   BE(f_Color,                   EDIF_TOK_COLOR),
06315   BE(f_CommentGraphics,         EDIF_TOK_COMMENTGRAPHICS),
06316   BE(f_Compound,                EDIF_TOK_COMPOUND),
06317   BE(f_ConnectLocation,         EDIF_TOK_CONNECTLOCATION),
06318   BE(f_Contents,                EDIF_TOK_CONTENTS),
06319   BE(f_Criticality,             EDIF_TOK_CRITICALITY),
06320   BE(f_CurrentMap,              EDIF_TOK_CURRENTMAP),
06321   BE(f_Curve,                   EDIF_TOK_CURVE),
06322   BE(f_Cycle,                   EDIF_TOK_CYCLE),
06323   BE(f_DataOrigin,              EDIF_TOK_DATAORIGIN),
06324   BE(f_DcFanInLoad,             EDIF_TOK_DCFANINLOAD),
06325   BE(f_DcFanOutLoad,            EDIF_TOK_DCFANOUTLOAD),
06326   BE(f_DcMaxFanIn,              EDIF_TOK_DCMAXFANIN),
06327   BE(f_DcMaxFanOut,             EDIF_TOK_DCMAXFANOUT),
06328   BE(f_Delay,                   EDIF_TOK_DELAY),
06329   BE(f_Delta,                   EDIF_TOK_DELTA),
06330   BE(f_Design,                  EDIF_TOK_DESIGN),
06331   BE(f_Designator,              EDIF_TOK_DESIGNATOR),
06332   BE(f_Difference,              EDIF_TOK_DIFFERENCE),
06333   BE(f_Display,                 EDIF_TOK_DISPLAY),
06334   BE(f_Dominates,               EDIF_TOK_DOMINATES),
06335   BE(f_Dot,                     EDIF_TOK_DOT),
06336   BE(f_Duration,                EDIF_TOK_DURATION),
06337   BE(f_EnclosureDistance,       EDIF_TOK_ENCLOSUREDISTANCE),
06338   BE(f_Entry,                   EDIF_TOK_ENTRY),
06339   BE(f_Exactly,                 EDIF_TOK_EXACTLY),
06340   BE(f_External,                EDIF_TOK_EXTERNAL),
06341   BE(f_Fabricate,               EDIF_TOK_FABRICATE),
06342   BE(f_Figure,                  EDIF_TOK_FIGURE),
06343   BE(f_FigureArea,              EDIF_TOK_FIGUREAREA),
06344   BE(f_FigureGroup,             EDIF_TOK_FIGUREGROUP),
06345   BE(f_FigureGroupObject,       EDIF_TOK_FIGUREGROUPOBJECT),
06346   BE(f_FigureGroupOverride,     EDIF_TOK_FIGUREGROUPOVERRIDE),
06347   BE(f_FigureGroupRef,          EDIF_TOK_FIGUREGROUPREF),
06348   BE(f_FigurePerimeter,         EDIF_TOK_FIGUREPERIMETER),
06349   BE(f_FigureWidth,             EDIF_TOK_FIGUREWIDTH),
06350   BE(f_FillPattern,             EDIF_TOK_FILLPATTERN),
06351   BE(f_Follow,                  EDIF_TOK_FOLLOW),
06352   BE(f_ForbiddenEvent,          EDIF_TOK_FORBIDDENEVENT),
06353   BE(f_GlobalPortRef,           EDIF_TOK_GLOBALPORTREF),
06354   BE(f_GreaterThan,             EDIF_TOK_GREATERTHAN),
06355   BE(f_GridMap,                 EDIF_TOK_GRIDMAP),
06356   BE(f_IncludeFigureGroup,      EDIF_TOK_INCLUDEFIGUREGROUP),
06357   BE(f_Instance,                EDIF_TOK_INSTANCE),
06358   BE(f_InstanceBackAnnotate,    EDIF_TOK_INSTANCEBACKANNOTATE),
06359   BE(f_InstanceGroup,           EDIF_TOK_INSTANCEGROUP),
06360   BE(f_InstanceMap,             EDIF_TOK_INSTANCEMAP),
06361   BE(f_InstanceRef,             EDIF_TOK_INSTANCEREF),
06362   BE(f_Integer,                 EDIF_TOK_INTEGER),
06363   BE(f_IntegerDisplay,          EDIF_TOK_INTEGERDISPLAY),
06364   BE(f_InterFigureGroupSpacing, EDIF_TOK_INTERFIGUREGROUPSPACING),
06365   BE(f_Interface,               EDIF_TOK_INTERFACE),
06366   BE(f_Intersection,            EDIF_TOK_INTERSECTION),
06367   BE(f_IntraFigureGroupSpacing, EDIF_TOK_INTRAFIGUREGROUPSPACING),
06368   BE(f_Inverse,                 EDIF_TOK_INVERSE),
06369   BE(f_Joined,                  EDIF_TOK_JOINED),
06370   BE(f_KeywordDisplay,          EDIF_TOK_KEYWORDDISPLAY),
06371   BE(f_KeywordMap,              EDIF_TOK_KEYWORDMAP),
06372   BE(f_LessThan,                EDIF_TOK_LESSTHAN),
06373   BE(f_Library,                 EDIF_TOK_LIBRARY),
06374   BE(f_LibraryRef,              EDIF_TOK_LIBRARYREF),
06375   BE(f_ListOfNets,              EDIF_TOK_LISTOFNETS),
06376   BE(f_ListOfPorts,             EDIF_TOK_LISTOFPORTS),
06377   BE(f_LoadDelay,               EDIF_TOK_LOADDELAY),
06378   BE(f_LogicAssign,             EDIF_TOK_LOGICASSIGN),
06379   BE(f_LogicInput,              EDIF_TOK_LOGICINPUT),
06380   BE(f_LogicList,               EDIF_TOK_LOGICLIST),
06381   BE(f_LogicMapInput,           EDIF_TOK_LOGICMAPINPUT),
06382   BE(f_LogicMapOutput,          EDIF_TOK_LOGICMAPOUTPUT),
06383   BE(f_LogicOneOf,              EDIF_TOK_LOGICONEOF),
06384   BE(f_LogicOutput,             EDIF_TOK_LOGICOUTPUT),
06385   BE(f_LogicPort,               EDIF_TOK_LOGICPORT),
06386   BE(f_LogicRef,                EDIF_TOK_LOGICREF),
06387   BE(f_LogicValue,              EDIF_TOK_LOGICVALUE),
06388   BE(f_LogicWaveform,           EDIF_TOK_LOGICWAVEFORM),
06389   BE(f_Maintain,                EDIF_TOK_MAINTAIN),
06390   BE(f_Match,                   EDIF_TOK_MATCH),
06391   BE(f_Member,                  EDIF_TOK_MEMBER),
06392   BE(f_MiNoMax,                 EDIF_TOK_MINOMAX),
06393   BE(f_MiNoMaxDisplay,          EDIF_TOK_MINOMAXDISPLAY),
06394   BE(f_Mnm,                     EDIF_TOK_MNM),
06395   BE(f_MultipleValueSet,        EDIF_TOK_MULTIPLEVALUESET),
06396   BE(f_MustJoin,                EDIF_TOK_MUSTJOIN),
06397   BE(f_Name,                    EDIF_TOK_NAME),
06398   BE(f_Net,                     EDIF_TOK_NET),
06399   BE(f_NetBackAnnotate,         EDIF_TOK_NETBACKANNOTATE),
06400   BE(f_NetBundle,               EDIF_TOK_NETBUNDLE),
06401   BE(f_NetDelay,                EDIF_TOK_NETDELAY),
06402   BE(f_NetGroup,                EDIF_TOK_NETGROUP),
06403   BE(f_NetMap,                  EDIF_TOK_NETMAP),
06404   BE(f_NetRef,                  EDIF_TOK_NETREF),
06405   BE(f_NonPermutable,           EDIF_TOK_NONPERMUTABLE),
06406   BE(f_NotAllowed,              EDIF_TOK_NOTALLOWED),
06407   BE(f_NotchSpacing,            EDIF_TOK_NOTCHSPACING),
06408   BE(f_Number,                  EDIF_TOK_NUMBER),
06409   BE(f_NumberDefinition,        EDIF_TOK_NUMBERDEFINITION),
06410   BE(f_NumberDisplay,           EDIF_TOK_NUMBERDISPLAY),
06411   BE(f_OffPageConnector,        EDIF_TOK_OFFPAGECONNECTOR),
06412   BE(f_OffsetEvent,             EDIF_TOK_OFFSETEVENT),
06413   BE(f_OpenShape,               EDIF_TOK_OPENSHAPE),
06414   BE(f_Origin,                  EDIF_TOK_ORIGIN),
06415   BE(f_OverhangDistance,        EDIF_TOK_OVERHANGDISTANCE),
06416   BE(f_OverlapDistance,         EDIF_TOK_OVERLAPDISTANCE),
06417   BE(f_Oversize,                EDIF_TOK_OVERSIZE),
06418   BE(f_Page,                    EDIF_TOK_PAGE),
06419   BE(f_PageSize,                EDIF_TOK_PAGESIZE),
06420   BE(f_Parameter,               EDIF_TOK_PARAMETER),
06421   BE(f_ParameterAssign,         EDIF_TOK_PARAMETERASSIGN),
06422   BE(f_ParameterDisplay,        EDIF_TOK_PARAMETERDISPLAY),
06423   BE(f_Path,                    EDIF_TOK_PATH),
06424   BE(f_PathDelay,               EDIF_TOK_PATHDELAY),
06425   BE(f_Permutable,              EDIF_TOK_PERMUTABLE),
06426   BE(f_PhysicalDesignRule,      EDIF_TOK_PHYSICALDESIGNRULE),
06427   BE(f_Plug,                    EDIF_TOK_PLUG),
06428   BE(f_Point,                   EDIF_TOK_POINT),
06429   BE(f_PointDisplay,            EDIF_TOK_POINTDISPLAY),
06430   BE(f_PointList,               EDIF_TOK_POINTLIST),
06431   BE(f_Polygon,                 EDIF_TOK_POLYGON),
06432   BE(f_Port,                    EDIF_TOK_PORT),
06433   BE(f_PortBackAnnotate,        EDIF_TOK_PORTBACKANNOTATE),
06434   BE(f_PortBundle,              EDIF_TOK_PORTBUNDLE),
06435   BE(f_PortDelay,               EDIF_TOK_PORTDELAY),
06436   BE(f_PortGroup,               EDIF_TOK_PORTGROUP),
06437   BE(f_PortImplementation,      EDIF_TOK_PORTIMPLEMENTATION),
06438   BE(f_PortInstance,            EDIF_TOK_PORTINSTANCE),
06439   BE(f_PortList,                EDIF_TOK_PORTLIST),
06440   BE(f_PortListAlias,           EDIF_TOK_PORTLISTALIAS),
06441   BE(f_PortMap,                 EDIF_TOK_PORTMAP),
06442   BE(f_PortRef,                 EDIF_TOK_PORTREF),
06443   BE(f_Program,                 EDIF_TOK_PROGRAM),
06444   BE(f_Property,                EDIF_TOK_PROPERTY),
06445   BE(f_PropertyDisplay,         EDIF_TOK_PROPERTYDISPLAY),
06446   BE(f_ProtectionFrame,         EDIF_TOK_PROTECTIONFRAME),
06447   BE(f_RangeVector,             EDIF_TOK_RANGEVECTOR),
06448   BE(f_Rectangle,               EDIF_TOK_RECTANGLE),
06449   BE(f_RectangleSize,           EDIF_TOK_RECTANGLESIZE),
06450   BE(f_Rename,                  EDIF_TOK_RENAME),
06451   BE(f_Resolves,                EDIF_TOK_RESOLVES),
06452   BE(f_Scale,                   EDIF_TOK_SCALE),
06453   BE(f_Section,                 EDIF_TOK_SECTION),
06454   BE(f_Shape,                   EDIF_TOK_SHAPE),
06455   BE(f_Simulate,                EDIF_TOK_SIMULATE),
06456   BE(f_SimulationInfo,          EDIF_TOK_SIMULATIONINFO),
06457   BE(f_SingleValueSet,          EDIF_TOK_SINGLEVALUESET),
06458   BE(f_Site,                    EDIF_TOK_SITE),
06459   BE(f_Socket,                  EDIF_TOK_SOCKET),
06460   BE(f_SocketSet,               EDIF_TOK_SOCKETSET),
06461   BE(f_Status,                  EDIF_TOK_STATUS),
06462   BE(f_Steady,                  EDIF_TOK_STEADY),
06463   BE(f_String,                  EDIF_TOK_STRING),
06464   BE(f_StringDisplay,           EDIF_TOK_STRINGDISPLAY),
06465   BE(f_Strong,                  EDIF_TOK_STRONG),
06466   BE(f_Symbol,                  EDIF_TOK_SYMBOL),
06467   BE(f_Symmetry,                EDIF_TOK_SYMMETRY),
06468   BE(f_Table,                   EDIF_TOK_TABLE),
06469   BE(f_TableDefault,            EDIF_TOK_TABLEDEFAULT),
06470   BE(f_Technology,              EDIF_TOK_TECHNOLOGY),
06471   BE(f_TimeInterval,            EDIF_TOK_TIMEINTERVAL),
06472   BE(f_Timing,                  EDIF_TOK_TIMING),
06473   BE(f_Transform,               EDIF_TOK_TRANSFORM),
06474   BE(f_Transition,              EDIF_TOK_TRANSITION),
06475   BE(f_Trigger,                 EDIF_TOK_TRIGGER),
06476   BE(f_Union,                   EDIF_TOK_UNION),
06477   BE(f_View,                    EDIF_TOK_VIEW),
06478   BE(f_ViewList,                EDIF_TOK_VIEWLIST),
06479   BE(f_ViewMap,                 EDIF_TOK_VIEWMAP),
06480   BE(f_ViewRef,                 EDIF_TOK_VIEWREF),
06481   BE(f_Visible,                 EDIF_TOK_VISIBLE),
06482   BE(f_VoltageMap,              EDIF_TOK_VOLTAGEMAP),
06483   BE(f_WaveValue,               EDIF_TOK_WAVEVALUE),
06484   BE(f_Weak,                    EDIF_TOK_WEAK),
06485   BE(f_WeakJoined,              EDIF_TOK_WEAKJOINED),
06486   BE(f_When,                    EDIF_TOK_WHEN),
06487   BE(f_Written,                 EDIF_TOK_WRITTEN)
06488 };
06489 static int BinderDefSize = sizeof(BinderDef) / sizeof(Binder);
06490 /*
06491  *      Keyword table:
06492  *
06493  *        This hash table holds all strings which may have to be matched
06494  *      to. WARNING: it is assumed that there is no overlap of the 'token'
06495  *      and 'context' strings.
06496  */
06497 typedef struct Keyword {
06498   struct Keyword *Next;         /* pointer to next entry */
06499   char *String;                 /* pointer to associated string */
06500 } Keyword;
06501 #define KEYWORD_HASH    127     /* hash table size */
06502 static Keyword *KeywordTable[KEYWORD_HASH];
06503 /*
06504  *      Enter keyword:
06505  *
06506  *        The passed string is entered into the keyword hash table.
06507  */
06508 static void EnterKeyword(char * str)
06509 {
06510   /* 
06511    *    Locals.
06512    */
06513   register Keyword *key;
06514   register unsigned int hsh;
06515   register char *cp;
06516   /*
06517    *    Create the hash code, and add an entry to the table.
06518    */
06519   for (hsh = 0, cp = str; *cp; hsh += hsh + *cp++);
06520   hsh %= KEYWORD_HASH;
06521   key = (Keyword *) Malloc(sizeof(Keyword));
06522   key->Next = KeywordTable[hsh];
06523   (KeywordTable[hsh] = key)->String = str;
06524 }
06525 /*
06526  *      Find keyword:
06527  *
06528  *        The passed string is located within the keyword table. If an
06529  *      entry exists, then the value of the keyword string is returned. This
06530  *      is real useful for doing string comparisons by pointer value later.
06531  *      If there is no match, a NULL is returned.
06532  */
06533 static char *FindKeyword(char * str)
06534 {
06535   /*
06536    *    Locals.
06537    */
06538   register Keyword *wlk,*owk;
06539   register unsigned int hsh;
06540   register char *cp;
06541   char lower[IDENT_LENGTH + 1];
06542   /*
06543    *    Create a lower case copy of the string.
06544    */
06545   for (cp = lower; *str;)
06546     if (isupper( (int) *str))
06547       *cp++ = tolower( (int) *str++);
06548     else
06549       *cp++ = *str++;
06550   *cp = '\0';
06551   /*
06552    *    Search the hash table for a match.
06553    */
06554   for (hsh = 0, cp = lower; *cp; hsh += hsh + *cp++);
06555   hsh %= KEYWORD_HASH;
06556   for (owk = NULL, wlk = KeywordTable[hsh]; wlk; wlk = (owk = wlk)->Next)
06557     if (!strcmp(wlk->String,lower)){
06558       /*
06559        *        Readjust the LRU.
06560        */
06561       if (owk){
06562         owk->Next = wlk->Next;
06563         wlk->Next = KeywordTable[hsh];
06564         KeywordTable[hsh] = wlk;
06565       }
06566       return (wlk->String);
06567     }
06568   return (NULL);
06569 }
06570 /*
06571  *      Token hash table.
06572  */
06573 #define TOKEN_HASH      51
06574 static Token *TokenHash[TOKEN_HASH];
06575 /*
06576  *      Find token:
06577  *
06578  *        A pointer to the token of the passed code is returned. If
06579  *      no such beastie is present a NULL is returned instead.
06580  */
06581 static Token *FindToken(register int cod)
06582 {
06583   /*
06584    *    Locals.
06585    */
06586   register Token *wlk,*owk;
06587   register unsigned int hsh;
06588   /*
06589    *    Search the hash table for a matching token.
06590    */
06591   hsh = cod % TOKEN_HASH;
06592   for (owk = NULL, wlk = TokenHash[hsh]; wlk; wlk = (owk = wlk)->Next)
06593     if (cod == wlk->Code){
06594       if (owk){
06595         owk->Next = wlk->Next;
06596         wlk->Next = TokenHash[hsh];
06597         TokenHash[hsh] = wlk;
06598       }
06599       break;
06600     }
06601   return (wlk);
06602 }
06603 /*
06604  *      Context hash table.
06605  */
06606 #define CONTEXT_HASH    127
06607 static Context *ContextHash[CONTEXT_HASH];
06608 /*
06609  *      Find context:
06610  *
06611  *        A pointer to the context of the passed code is returned. If
06612  *      no such beastie is present a NULL is returned instead.
06613  */
06614 static Context *FindContext(register int cod)
06615 {
06616   /*
06617    *    Locals.
06618    */
06619   register Context *wlk,*owk;
06620   register unsigned int hsh;
06621   /*
06622    *    Search the hash table for a matching context.
06623    */
06624   hsh = cod % CONTEXT_HASH;
06625   for (owk = NULL, wlk = ContextHash[hsh]; wlk; wlk = (owk = wlk)->Next)
06626     if (cod == wlk->Code){
06627       if (owk){
06628         owk->Next = wlk->Next;
06629         wlk->Next = ContextHash[hsh];
06630         ContextHash[hsh] = wlk;
06631       }
06632       break;
06633     }
06634   return (wlk);
06635 }
06636 /*
06637  *      Parser state variables.
06638  */
06639 static FILE *Input = NULL;              /* input stream */
06640 static FILE *Error = NULL;              /* error stream */
06641 static char *InFile;                    /* file name on the input stream */
06642 static long LineNumber;                 /* current input line number */
06643 static ContextCar *CSP = NULL;          /* top of context stack */
06644 static char yytext[IDENT_LENGTH + 1];   /* token buffer */
06645 static char CharBuf[IDENT_LENGTH + 1];  /* garbage buffer */
06646 /*
06647  *      Token stacking variables.
06648  */
06649 #ifdef  DEBUG
06650 #define TS_DEPTH        8
06651 #define TS_MASK         (TS_DEPTH - 1)
06652 static unsigned int TSP = 0;            /* token stack pointer */
06653 static char *TokenStack[TS_DEPTH];      /* token name strings */
06654 static short TokenType[TS_DEPTH];       /* token types */
06655 /*
06656  *      Stack:
06657  *
06658  *        Add a token to the debug stack. The passed string and type are
06659  *      what is to be pushed.
06660  */
06661 static int Stack(char * str, int typ)
06662 {
06663   /*
06664    *    Free any previous string, then push.
06665    */
06666   if (TokenStack[TSP & TS_MASK])
06667     Free(TokenStack[TSP & TS_MASK]);
06668   TokenStack[TSP & TS_MASK] = strcpy((char *)Malloc(strlen(str) + 1),str);
06669   TokenType[TSP & TS_MASK] = typ;
06670   TSP += 1;
06671   return 0;
06672 }
06673 /*
06674  *      Dump stack:
06675  *
06676  *        This displays the last set of accumulated tokens.
06677  */
06678 static int DumpStack()
06679 {
06680   /*
06681    *    Locals.
06682    */
06683   register int i;
06684   register Context *cxt;
06685   register Token *tok;
06686   register char *nam;
06687   /*
06688    *    Run through the list displaying the oldest first.
06689    */
06690   fprintf(Error,"\n\n");
06691   for (i = 0; i < TS_DEPTH; i += 1)
06692     if (TokenStack[(TSP + i) & TS_MASK]){
06693       /*
06694        *        Get the type name string.
06695        */
06696       if ((cxt = FindContext(TokenType[(TSP + i) & TS_MASK])))
06697         nam = cxt->Name;
06698       else if ((tok = FindToken(TokenType[(TSP + i) & TS_MASK])))
06699         nam = tok->Name;
06700       else switch (TokenType[(TSP + i) & TS_MASK]){
06701         case EDIF_TOK_IDENT:    nam = "IDENT";      break;
06702         case EDIF_TOK_INT:      nam = "INT";        break;
06703         case EDIF_TOK_KEYWORD:  nam = "KEYWORD";    break;
06704         case EDIF_TOK_STR:      nam = "STR";        break;
06705         default:                nam = "?";          break;
06706       }
06707       /*
06708        *        Now print the token state.
06709        */
06710       fprintf(Error,"%2d %-16.16s '%s'\n",TS_DEPTH - i,nam,
06711         TokenStack[(TSP + i) & TS_MASK]);
06712     }
06713   fprintf(Error,"\n");
06714   return 0;
06715 }
06716 #else
06717 #define Stack(s,t)
06718 #endif  /* DEBUG */
06719 /*
06720  *      yyerror:
06721  *
06722  *        Standard error reporter, it prints out the passed string
06723  *      preceeded by the current filename and line number.
06724  */
06725 static void yyerror(const char *ers)
06726 {
06727 #ifdef  DEBUG
06728   DumpStack();
06729 #endif  /* DEBUG */
06730   fprintf(Error,"%s, line %ld: %s\n",InFile,LineNumber,ers);
06731 }
06732 /*
06733  *      String bucket definitions.
06734  */
06735 #define BUCKET_SIZE     64
06736 typedef struct Bucket {
06737   struct Bucket *Next;                  /* pointer to next bucket */
06738   int Index;                            /* pointer to next free slot */
06739   char Data[BUCKET_SIZE];               /* string data */
06740 } Bucket;
06741 static Bucket *CurrentBucket = NULL;    /* string bucket list */
06742 static int StringSize = 0;              /* current string length */
06743 /*
06744  *      Push string:
06745  *
06746  *        This adds the passed charater to the current string bucket.
06747  */
06748 static void PushString(char chr)
06749 {
06750   /*
06751    *    Locals.
06752    */
06753   register Bucket *bck;
06754   /*
06755    *    Make sure there is room for the push.
06756    */
06757   if ((bck = CurrentBucket)->Index >= BUCKET_SIZE){
06758     bck = (Bucket *) Malloc(sizeof(Bucket));
06759     bck->Next = CurrentBucket;
06760     (CurrentBucket = bck)->Index = 0;
06761   }
06762   /*
06763    *    Push the character.
06764    */
06765   bck->Data[bck->Index++] = chr;
06766   StringSize += 1;
06767 }
06768 /*
06769  *      Form string:
06770  *
06771  *        This converts the current string bucket into a real live string,
06772  *      whose pointer is returned.
06773  */
06774 static char *FormString()
06775 {
06776   /*
06777    *    Locals.
06778    */
06779   register Bucket *bck;
06780   register char *cp;
06781   /*
06782    *    Allocate space for the string, set the pointer at the end.
06783    */
06784   cp = (char *) Malloc(StringSize + 1);
06785   
06786   cp += StringSize;
06787   *cp-- = '\0';
06788   /*
06789    *    Yank characters out of the bucket.
06790    */
06791   for (bck = CurrentBucket; bck->Index || bck->Next;){
06792     if (!bck->Index){
06793       CurrentBucket = bck->Next;
06794       Free(bck);
06795       bck = CurrentBucket;
06796     }
06797     *cp-- = bck->Data[--bck->Index];
06798   }
06799   /* reset buffer size  to zero */
06800   StringSize =0;
06801   return (cp + 1);
06802 }
06803 /*
06804  *      Parse EDIF:
06805  *
06806  *        This builds the context tree and then calls the real parser.
06807  *      It is passed two file streams, the first is where the input comes
06808  *      from; the second is where error messages get printed.
06809  */
06810 void ParseEDIF(char* filename,FILE* err)
06811 {
06812   /*
06813    *    Locals.
06814    */
06815   register int i;
06816   static int ContextDefined = 1;
06817   /*
06818    *    Set up the file state to something useful.
06819    */
06820   InFile = filename;
06821   Input = fopen(filename,"r");
06822   Error = err;
06823   LineNumber = 1;
06824   /*
06825    *    Define both the enabled token and context strings.
06826    */
06827   if (ContextDefined){
06828     for (i = TokenDefSize; i--; EnterKeyword(TokenDef[i].Name)){
06829       register unsigned int hsh;
06830       hsh = TokenDef[i].Code % TOKEN_HASH;
06831       TokenDef[i].Next = TokenHash[hsh];
06832       TokenHash[hsh] = &TokenDef[i];
06833     }
06834     for (i = ContextDefSize; i--; EnterKeyword(ContextDef[i].Name)){
06835       register unsigned int hsh;
06836       hsh = ContextDef[i].Code % CONTEXT_HASH;
06837       ContextDef[i].Next = ContextHash[hsh];
06838       ContextHash[hsh] = &ContextDef[i];
06839     }
06840     /*
06841      *  Build the context tree.
06842      */
06843     for (i = BinderDefSize; i--;){
06844       register Context *cxt;
06845       register int j;
06846       /*
06847        *        Define the current context to have carriers bound to it.
06848        */
06849       cxt = FindContext(BinderDef[i].Origin);
06850       for (j = BinderDef[i].FollowerSize; j--;){
06851         register ContextCar *cc;
06852         /*
06853          *      Add carriers to the current context.
06854          */
06855         cc = (ContextCar *) Malloc(sizeof(ContextCar));
06856         cc->Next = cxt->Context;
06857         (cxt->Context = cc)->Context =
06858           FindContext(ABS(BinderDef[i].Follower[j]));
06859         cc->u.Single = BinderDef[i].Follower[j] < 0;
06860       }
06861     }
06862     /*
06863      *  Build the token tree.
06864      */
06865     for (i = TieDefSize; i--;){
06866       register Context *cxt;
06867       register int j;
06868       /*
06869        *        Define the current context to have carriers bound to it.
06870        */
06871       cxt = FindContext(TieDef[i].Origin);
06872       for (j = TieDef[i].EnableSize; j--;){
06873         register TokenCar *tc;
06874         /*
06875          *      Add carriers to the current context.
06876          */
06877         tc = (TokenCar *) Malloc(sizeof(TokenCar));
06878         tc->Next = cxt->Token;
06879         (cxt->Token = tc)->Token = FindToken(TieDef[i].Enable[j]);
06880       }
06881     }
06882     /*
06883      *  Put a bogus context on the stack which has 'EDIF' as its
06884      *  follower.
06885      */
06886     CSP = (ContextCar *) Malloc(sizeof(ContextCar));
06887     CSP->Next = NULL;
06888     CSP->Context = FindContext(0);
06889     CSP->u.Used = NULL;
06890     ContextDefined = 0;
06891   }
06892   /*
06893    *    Create an initial, empty string bucket.
06894    */
06895   CurrentBucket = (Bucket *) Malloc(sizeof(Bucket));
06896   CurrentBucket->Next = 0;
06897   CurrentBucket->Index = 0;
06898   /*
06899    *    Fill the token stack with NULLs if debugging is enabled.
06900    */
06901 #ifdef  DEBUG
06902   for (i = TS_DEPTH; i--; TokenStack[i] = NULL)
06903     if (TokenStack[i])
06904       Free(TokenStack[i]);
06905   TSP = 0;
06906 #endif  /* DEBUG */
06907   /*
06908    *    Go parse things!
06909    */
06910   edifparse();
06911 }
06912 /*
06913  *      Match token:
06914  *
06915  *        The passed string is looked up in the current context's token
06916  *      list to see if it is enabled. If so the token value is returned,
06917  *      if not then zero.
06918  */
06919 static int MatchToken(register char * str)
06920 {
06921   /*
06922    *    Locals.
06923    */
06924   register TokenCar *wlk,*owk;
06925   /*
06926    *    Convert the string to the proper form, then search the token
06927    *    carrier list for a match.
06928    */
06929   str = FindKeyword(str);
06930   for (owk = NULL, wlk = CSP->Context->Token; wlk; wlk = (owk = wlk)->Next)
06931     if (str == wlk->Token->Name){
06932       if (owk){
06933         owk->Next = wlk->Next;
06934         wlk->Next = CSP->Context->Token;
06935         CSP->Context->Token = wlk;
06936       }
06937       return (wlk->Token->Code);
06938     }
06939   return (0);
06940 }
06941 /*
06942  *      Match context:
06943  *
06944  *        If the passed keyword string is within the current context, the
06945  *      new context is pushed and token value is returned. A zero otherwise.
06946  */
06947 static int MatchContext(register char * str)
06948 {
06949   /*
06950    *    Locals.
06951    */
06952   register ContextCar *wlk,*owk;
06953   /*
06954    *    See if the context is present.
06955    */
06956   str = FindKeyword(str);
06957   for (owk = NULL, wlk = CSP->Context->Context; wlk; wlk = (owk = wlk)->Next)
06958     if (str == wlk->Context->Name){
06959       if (owk){
06960         owk->Next = wlk->Next;
06961         wlk->Next = CSP->Context->Context;
06962         CSP->Context->Context = wlk;
06963       }
06964       /*
06965        *        If a single context, make sure it isn't already used.
06966        */
06967       if (wlk->u.Single){
06968         register UsedCar *usc;
06969         for (usc = CSP->u.Used; usc; usc = usc->Next)
06970           if (usc->Code == wlk->Context->Code)
06971             break;
06972         if (usc){
06973           sprintf(CharBuf,"'%s' is used more than once within '%s'",
06974             str,CSP->Context->Name);
06975           yyerror(CharBuf);
06976         } else {
06977           usc = (UsedCar *) Malloc(sizeof(UsedCar));
06978           usc->Next = CSP->u.Used;
06979           (CSP->u.Used = usc)->Code = wlk->Context->Code;
06980         }
06981       }
06982       /*
06983        *        Push the new context.
06984        */
06985       owk = (ContextCar *) Malloc(sizeof(ContextCar));
06986       owk->Next = CSP;
06987       (CSP = owk)->Context = wlk->Context;
06988       owk->u.Used = NULL;
06989       return (wlk->Context->Code);
06990     }
06991   return (0);
06992 }
06993 /*
06994  *      PopC:
06995  *
06996  *        This pops the current context.
06997  */
06998 static void PopC()
06999 {
07000   /*
07001    *    Locals.
07002    */
07003   register UsedCar *usc;
07004   register ContextCar *csp;
07005   /*
07006    *    Release single markers and pop context.
07007    */
07008   while ( (usc = CSP->u.Used) ){
07009     CSP->u.Used = usc->Next;
07010     Free(usc);
07011   }
07012   csp = CSP->Next;
07013   Free(CSP);
07014   CSP = csp;
07015 }
07016 /*
07017  *      Lexical analyzer states.
07018  */
07019 #define L_START         0
07020 #define L_INT           1
07021 #define L_IDENT         2
07022 #define L_KEYWORD       3
07023 #define L_STRING        4
07024 #define L_KEYWORD2      5
07025 #define L_ASCIICHAR     6
07026 #define L_ASCIICHAR2    7
07027 /*
07028  *      yylex:
07029  *
07030  *        This is the lexical analyzer called by the YACC/BISON parser.
07031  *      It returns a pretty restricted set of token types and does the
07032  *      context movement when acceptable keywords are found. The token
07033  *      value returned is a NULL terminated string to allocated storage
07034  *      (ie - it should get released some time) with some restrictions.
07035  *        The token value for integers is strips a leading '+' if present.
07036  *      String token values have the leading and trailing '"'-s stripped.
07037  *      '%' conversion characters in string values are passed converted.
07038  *      The '(' and ')' characters do not have a token value.
07039  */
07040 static int yylex()
07041 {
07042   /*
07043    *    Locals.
07044    */
07045   register int c,s,l;
07046   /*
07047    *    Keep on sucking up characters until we find something which
07048    *    explicitly forces us out of this function.
07049    */
07050   for (s = L_START, l = 0; 1;){
07051     yytext[l++] = c = Getc(Input);
07052     switch (s){
07053       /*
07054        *        Starting state, look for something resembling a token.
07055        */
07056       case L_START:
07057         if (isdigit(c) || c == '-')
07058           s = L_INT;
07059         else if (isalpha(c) || c == '&')
07060           s = L_IDENT;
07061         else if (isspace(c)){
07062           if (c == '\n')
07063             LineNumber += 1;
07064           l = 0;
07065         } else if (c == '('){
07066           l = 0;
07067           s = L_KEYWORD;
07068         } else if (c == '"')
07069           s = L_STRING;
07070         else if (c == '+'){
07071           l = 0;                                /* strip '+' */
07072           s = L_INT;
07073         } else if (c == EOF)
07074           return ('\0');
07075         else {
07076           yytext[1] = '\0';
07077           Stack(yytext,c);
07078           return (c);
07079         }
07080         break;
07081       /*
07082        *        Suck up the integer digits.
07083        */
07084       case L_INT:
07085         if (isdigit(c))
07086           break;
07087         Ungetc(c);
07088         yytext[--l] = '\0';
07089         yylval.s = strcpy((char *)Malloc(l + 1),yytext);
07090         Stack(yytext,EDIF_TOK_INT);
07091         return (EDIF_TOK_INT);
07092       /*
07093        *        Grab an identifier, see if the current context enables
07094        *        it with a specific token value.
07095        */
07096       case L_IDENT:
07097         if (isalpha(c) || isdigit(c) || c == '_')
07098           break;
07099         Ungetc(c);
07100         yytext[--l] = '\0';
07101         if (CSP->Context->Token && (c = MatchToken(yytext))){
07102           Stack(yytext,c);
07103           return (c);
07104         }
07105         yylval.s = strcpy((char *)Malloc(l + 1),yytext);
07106         Stack(yytext, EDIF_TOK_IDENT);
07107         return (EDIF_TOK_IDENT);
07108       /*
07109        *        Scan until you find the start of an identifier, discard
07110        *        any whitespace found. On no identifier, return a '('.
07111        */
07112       case L_KEYWORD:
07113         if (isalpha(c) || c == '&'){
07114           s = L_KEYWORD2;
07115           break;
07116         } else if (isspace(c)){
07117           l = 0;
07118           break;
07119         }
07120         Ungetc(c);
07121         Stack("(",'(');
07122         return ('(');
07123       /*
07124        *        Suck up the keyword identifier, if it matches the set of
07125        *        allowable contexts then return its token value and push
07126        *        the context, otherwise just return the identifier string.
07127        */
07128       case L_KEYWORD2:
07129         if (isalpha(c) || isdigit(c) || c == '_')
07130           break;
07131         Ungetc(c);
07132         yytext[--l] = '\0';
07133         if ( (c = MatchContext(yytext)) ){
07134           Stack(yytext,c);
07135           return (c);
07136         }
07137         yylval.s = strcpy((char *)Malloc(l + 1),yytext);
07138         Stack(yytext, EDIF_TOK_KEYWORD);
07139         return (EDIF_TOK_KEYWORD);
07140       /*
07141        *        Suck up string characters but once resolved they should
07142        *        be deposited in the string bucket because they can be
07143        *        arbitrarily long.
07144        */
07145       case L_STRING:
07146         if (c == '\n')
07147           LineNumber += 1;
07148         else if (c == '\r')
07149           ;
07150         else if (c == '"' || c == EOF){
07151           yylval.s = FormString();
07152           Stack(yylval.s, EDIF_TOK_STR);
07153           return (EDIF_TOK_STR);
07154         } else if (c == '%')
07155           s = L_ASCIICHAR;
07156         else
07157           PushString(c);
07158         l = 0;
07159         break;
07160       /*
07161        *        Skip white space and look for integers to be pushed
07162        *        as characters.
07163        */
07164       case L_ASCIICHAR:
07165         if (isdigit(c)){
07166           s = L_ASCIICHAR2;
07167           break;
07168         } else if (c == '%' || c == EOF)
07169           s = L_STRING;
07170         else if (c == '\n')
07171           LineNumber += 1;
07172         l = 0;
07173         break;
07174       /*
07175        *        Convert the accumulated integer into a char and push.
07176        */
07177       case L_ASCIICHAR2:
07178         if (isdigit(c))
07179           break;
07180         Ungetc(c);
07181         yytext[--l] = '\0';
07182         PushString(atoi(yytext));
07183         s = L_ASCIICHAR;
07184         l = 0;
07185         break;
07186     }
07187   }
07188 }
07189