modules/up/src/rpsl/rpsl/rpsl.y.cc

/* [<][>]
[^][v][top][bottom][index][help] */

FUNCTIONS

This source file includes following functions.
  1. YYTRANSLATE
  2. YYRECOVERING
  3. YYBACKUP
  4. __yy_memcpy
  5. __yy_memcpy
  6. __yy_memcpy
  7. yyparse
  8. enable_yy_parser_debugging
  9. handleArgumentTypeError
  10. searchMethod

   1 
   2 /*  A Bison parser, made from rpsl.y
   3     by GNU Bison version 1.28  */
   4 
   5 #define YYBISON 1  /* Identify Bison output.  */
   6 
   7 #define yyparse rpslparse
   8 #define yylex rpsllex
   9 #define yyerror rpslerror
  10 #define yylval rpsllval
  11 #define yychar rpslchar
  12 #define yydebug rpsldebug
  13 #define yynerrs rpslnerrs
  14 #define KEYW_TRUE       257
  15 #define KEYW_FALSE      258
  16 #define KEYW_ACTION     259
  17 #define KEYW_ACCEPT     260
  18 #define KEYW_ANNOUNCE   261
  19 #define KEYW_FROM       262
  20 #define KEYW_TO 263
  21 #define KEYW_AT 264
  22 #define KEYW_ANY        265
  23 #define KEYW_REFINE     266
  24 #define KEYW_EXCEPT     267
  25 #define KEYW_STATIC     268
  26 #define KEYW_NETWORKS   269
  27 #define KEYW_MASKLEN    270
  28 #define KEYW_UNION      271
  29 #define KEYW_RANGE      272
  30 #define KEYW_LIST       273
  31 #define KEYW_OF 274
  32 #define KEYW_OPERATOR   275
  33 #define KEYW_SYNTAX     276
  34 #define KEYW_SPECIAL    277
  35 #define KEYW_OPTIONAL   278
  36 #define KEYW_MANDATORY  279
  37 #define KEYW_INTERNAL   280
  38 #define KEYW_SINGLEVALUED       281
  39 #define KEYW_MULTIVALUED        282
  40 #define KEYW_LOOKUP     283
  41 #define KEYW_KEY        284
  42 #define KEYW_DELETED    285
  43 #define KEYW_GENERATED  286
  44 #define KEYW_OBSOLETE   287
  45 #define KEYW_PEERAS     288
  46 #define KEYW_PROTOCOL   289
  47 #define KEYW_INTO       290
  48 #define KEYW_ATOMIC     291
  49 #define KEYW_INBOUND    292
  50 #define KEYW_OUTBOUND   293
  51 #define KEYW_UPON       294
  52 #define KEYW_HAVE_COMPONENTS    295
  53 #define KEYW_EXCLUDE    296
  54 #define KEYW_NONE       297
  55 #define KEYW_MAILFROM   298
  56 #define KEYW_CRYPTPW    299
  57 #define KEYW_ASSIGNED   300
  58 #define KEYW_ALLOCATED  301
  59 #define KEYW_PI 302
  60 #define KEYW_PA 303
  61 #define KEYW_UNSPECIFIED        304
  62 #define KEYW_EXT        305
  63 #define KEYW_SIMPLE     306
  64 #define KEYW_RIPE       307
  65 #define KEYW_INTERNIC   308
  66 #define KEYW_CLIENTADDRESS      309
  67 #define TKN_ERROR       310
  68 #define TKN_UNKNOWN_CLASS       311
  69 #define TKN_EOA 312
  70 #define TKN_EOO 313
  71 #define TKN_FREETEXT    314
  72 #define TKN_INT 315
  73 #define TKN_REAL        316
  74 #define TKN_STRING      317
  75 #define TKN_TIMESTAMP   318
  76 #define TKN_BLOB        319
  77 #define TKN_IPV4        320
  78 #define TKN_PRFXV6      321
  79 #define TKN_PRFXV4      322
  80 #define TKN_PRFXV4RNG   323
  81 #define TKN_ASNO        324
  82 #define TKN_ASNAME      325
  83 #define TKN_RSNAME      326
  84 #define TKN_RTRSNAME    327
  85 #define TKN_PRNGNAME    328
  86 #define TKN_FLTRNAME    329
  87 #define TKN_BOOLEAN     330
  88 #define TKN_WORD        331
  89 #define TKN_RP_ATTR     332
  90 #define TKN_DNS 333
  91 #define TKN_EMAIL       334
  92 #define TKN_3DOTS       335
  93 #define TKN_NICHDL      336
  94 #define TKN_KEYCRTNAME  337
  95 #define TKN_CRYPTEDPW   338
  96 #define ATTR_GENERIC    339
  97 #define ATTR_BLOBS      340
  98 #define ATTR_IMPORT     341
  99 #define ATTR_EXPORT     342
 100 #define ATTR_DEFAULT    343
 101 #define ATTR_FREETEXT   344
 102 #define ATTR_CHANGED    345
 103 #define ATTR_IFADDR     346
 104 #define ATTR_PEER       347
 105 #define ATTR_INJECT     348
 106 #define ATTR_COMPONENTS 349
 107 #define ATTR_AGGR_MTD   350
 108 #define ATTR_AGGR_BNDRY 351
 109 #define ATTR_RS_MEMBERS 352
 110 #define ATTR_RP_ATTR    353
 111 #define ATTR_TYPEDEF    354
 112 #define ATTR_PROTOCOL   355
 113 #define ATTR_FILTER     356
 114 #define ATTR_PEERING    357
 115 #define ATTR_ATTR       358
 116 #define ATTR_MNT_ROUTES 359
 117 #define ATTR_NICHDL     360
 118 #define ATTR_AUTH       361
 119 #define ATTR_STATUS_INET        362
 120 #define ATTR_PHONE      363
 121 #define ATTR_SOURCE     364
 122 #define ATTR_REFER      365
 123 #define ATTR_COUNTRY    366
 124 #define ATTR_PERSON     367
 125 #define OP_OR   368
 126 #define OP_AND  369
 127 #define OP_NOT  370
 128 #define OP_MS   371
 129 #define TKN_OPERATOR    372
 130 
 131 #line 1 "rpsl.y"
 132 
 133 //  $Id: rpsl.y.cc,v 1.12 2001/07/26 14:44:33 engin Exp $
 134 //
 135 //  Copyright (c) 1994 by the University of Southern California
 136 //  All rights reserved.
 137 //
 138 //  Permission to use, copy, modify, and distribute this software and its
 139 //  documentation in source and binary forms for lawful non-commercial
 140 //  purposes and without fee is hereby granted, provided that the above
 141 //  copyright notice appear in all copies and that both the copyright
 142 //  notice and this permission notice appear in supporting documentation,
 143 //  and that any documentation, advertising materials, and other materials
 144 //  related to such distribution and use acknowledge that the software was
 145 //  developed by the University of Southern California, Information
 146 //  Sciences Institute. The name of the USC may not be used to endorse or
 147 //  promote products derived from this software without specific prior
 148 //  written permission.
 149 //
 150 //  THE UNIVERSITY OF SOUTHERN CALIFORNIA DOES NOT MAKE ANY
 151 //  REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE FOR ANY
 152 //  PURPOSE.  THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
 153 //  IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 154 //  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
 155 //  TITLE, AND NON-INFRINGEMENT.
 156 //
 157 //  IN NO EVENT SHALL USC, OR ANY OTHER CONTRIBUTOR BE LIABLE FOR ANY
 158 //  SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES, WHETHER IN CONTRACT, TORT,
 159 //  OR OTHER FORM OF ACTION, ARISING OUT OF OR IN CONNECTION WITH, THE USE
 160 //  OR PERFORMANCE OF THIS SOFTWARE.
 161 //
 162 //  Questions concerning this software should be directed to
 163 //  ratoolset@isi.edu.
 164 //
 165 //  Author(s): Cengiz Alaettinoglu <cengiz@ISI.EDU>
 166 
 167 #include "config.h"
 168 #include "time.h"
 169 #include "schema.hh"
 170 #include "object.hh"
 171 #include "regexp.hh"
 172 #include "rptype.hh"
 173 
 174 
 175 #ifdef DEBUG
 176 #define YYDEBUG 1
 177 #endif // DEBUG
 178 #if YYDEBUG != 0
 179 // stdio is needed for yydebug
 180 #include <cstdio>
 181 #endif
 182 
 183 extern void handle_error(char *, ...);
 184 extern void handle_object_error(char *, ...);
 185 extern void handle_warning(char *, ...);
 186 extern int yylex();
 187 char *token_name(int token_id);
 188 void rpslerror(char *s, ...);
 189 Attr *changeCurrentAttr(Attr *b);
 190 void handleArgumentTypeError(char *attr, char *method, int position,
 191                              const RPType *correctType, 
 192                              bool isOperator = false);
 193 const AttrMethod *searchMethod(const AttrRPAttr *rp_attr, char *method, ItemList *args);
 194 
 195 /* argument to yyparse result of parsing should be stored here */
 196 #define YYPARSE_PARAM object    
 197 #define yyschema schema
 198 #define enable_yy_parser_debugging enable_rpsl_parser_debugging
 199 
 200 extern Object *current_object;
 201 
 202 
 203 #line 75 "rpsl.y"
 204 typedef union {
 205    long long int      i;
 206    double             real;
 207    char              *string;
 208    void              *ptr;
 209    time_t             time;
 210    Item              *item;
 211    ItemList          *list;
 212    regexp            *re;
 213    SymID              sid;
 214    IPAddr            *ip;
 215    Prefix            *prfx;
 216    PrefixRange       *prfxrng;
 217    RPType            *typenode;
 218 
 219    Filter                    *filter;
 220    FilterMS                  *moreSpecOp;
 221    PolicyPeering             *peering;
 222    PolicyActionList          *actionList;
 223    PolicyAction              *actionNode;
 224    PolicyFactor              *policyFactor;
 225    PolicyTerm                *policyTerm;
 226    PolicyExpr                *policyExpr;
 227    List<PolicyPeeringAction> *peeringActionList;
 228 
 229    Attr               *attr;
 230    AttrAttr           *rpslattr;
 231    AttrMethod         *method;
 232    const AttrRPAttr   *rp_attr;
 233    const AttrProtocol *protocol;
 234    AttrProtocolOption *protocol_option;
 235    List<AttrProtocolOption> *protocol_option_list;
 236 
 237    AttrPeerOption       *peer_option;
 238    List<AttrPeerOption> *peer_option_list;
 239 
 240    List<RPTypeNode> *typelist;
 241    List<AttrMethod> *methodlist;
 242    List<WordNode>   *wordlist;
 243 
 244    List<AttrMntRoutes::MntPrfxPair> *listMntPrfxPair;
 245    AttrMntRoutes::MntPrfxPair       *mntPrfxPair;
 246 } YYSTYPE;
 247 #include <stdio.h>
 248 
 249 #ifndef __cplusplus
 250 #ifndef __STDC__
 251 #define const
 252 #endif
 253 #endif
 254 
 255 
 256 
 257 #define YYFINAL         790
 258 #define YYFLAG          -32768
 259 #define YYNTBASE        140
 260 
 261 #define YYTRANSLATE(x) ((unsigned)(x) <= 372 ? yytranslate[x] : 264)
     /* [<][>][^][v][top][bottom][index][help] */
 262 
 263 static const short yytranslate[] = {     0,
 264      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 265      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 266      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 267      2,     2,     2,     2,     2,   139,     2,     2,   125,   120,
 268    121,   136,   119,   126,   123,   122,     2,     2,     2,     2,
 269      2,     2,     2,     2,     2,     2,     2,   127,   130,   133,
 270      2,   134,   137,     2,     2,     2,     2,     2,     2,     2,
 271      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 272      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 273    131,     2,   132,   138,     2,   124,     2,     2,     2,     2,
 274      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 275      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 276      2,     2,   128,   135,   129,     2,     2,     2,     2,     2,
 277      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 278      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 279      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 280      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 281      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 282      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 283      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 284      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 285      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 286      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 287      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 288      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 289      2,     2,     2,     2,     2,     1,     3,     4,     5,     6,
 290      7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
 291     17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
 292     27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
 293     37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
 294     47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
 295     57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
 296     67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
 297     77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
 298     87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
 299     97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
 300    107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
 301    117,   118
 302 };
 303 
 304 #if YYDEBUG != 0
 305 static const short yyprhs[] = {     0,
 306      0,     3,     6,     9,    11,    13,    15,    16,    18,    21,
 307     23,    25,    27,    29,    31,    33,    35,    37,    39,    41,
 308     43,    45,    47,    49,    51,    53,    55,    57,    59,    61,
 309     63,    65,    67,    69,    71,    73,    75,    77,    79,    82,
 310     85,    90,    94,    98,   102,   106,   110,   115,   120,   124,
 311    128,   133,   138,   143,   148,   153,   157,   162,   171,   179,
 312    191,   195,   197,   200,   204,   208,   212,   216,   221,   227,
 313    232,   238,   243,   249,   254,   260,   264,   268,   272,   277,
 314    282,   287,   292,   296,   298,   300,   302,   304,   307,   310,
 315    313,   316,   319,   322,   325,   328,   331,   334,   337,   340,
 316    343,   346,   349,   352,   355,   358,   361,   364,   367,   370,
 317    373,   376,   379,   383,   387,   388,   390,   392,   396,   400,
 318    404,   406,   409,   411,   415,   417,   419,   421,   423,   425,
 319    427,   429,   431,   433,   437,   443,   447,   453,   455,   457,
 320    459,   461,   463,   465,   467,   469,   471,   473,   475,   477,
 321    481,   485,   487,   489,   491,   493,   495,   497,   499,   501,
 322    503,   505,   507,   509,   511,   513,   515,   517,   519,   521,
 323    523,   525,   527,   529,   531,   533,   535,   537,   539,   541,
 324    543,   545,   547,   549,   551,   553,   555,   557,   559,   561,
 325    563,   565,   567,   569,   571,   573,   575,   577,   579,   581,
 326    583,   585,   587,   589,   591,   593,   595,   597,   599,   601,
 327    603,   605,   607,   609,   611,   613,   615,   617,   619,   621,
 328    623,   625,   627,   629,   630,   632,   636,   638,   642,   646,
 329    648,   652,   654,   656,   658,   659,   661,   662,   665,   669,
 330    671,   675,   679,   681,   685,   687,   689,   691,   693,   697,
 331    699,   700,   703,   705,   708,   716,   721,   727,   733,   735,
 332    739,   742,   744,   748,   750,   753,   757,   759,   761,   765,
 333    767,   769,   771,   774,   776,   778,   780,   782,   784,   788,
 334    789,   791,   793,   797,   799,   801,   805,   807,   810,   812,
 335    815,   818,   821,   823,   825,   827,   831,   833,   835,   837,
 336    839,   841,   845,   850,   851,   854,   857,   860,   865,   868,
 337    875,   879,   884,   889,   893,   898,   902,   907,   911,   914,
 338    918,   922,   925,   929,   932,   936,   939,   943,   945,   949,
 339    953,   955,   959,   963,   964,   967,   968,   971,   977,   983,
 340    987,   993,   999,  1003,  1004,  1007,  1014,  1020,  1024,  1028,
 341   1032,  1036,  1040,  1047,  1054,  1060,  1065,  1069,  1070,  1072,
 342   1074,  1078,  1083,  1085,  1087,  1089,  1091,  1097,  1103,  1108,
 343   1112,  1116,  1120,  1124,  1129,  1134,  1139,  1143,  1144,  1147,
 344   1151,  1153,  1157,  1159,  1163,  1165,  1167,  1172,  1177,  1183,
 345   1187,  1188,  1190,  1191,  1193,  1198,  1203,  1207,  1208,  1210,
 346   1212,  1216,  1218,  1221,  1223,  1226,  1228,  1231,  1233,  1235,
 347   1239,  1243,  1248,  1253,  1257,  1259,  1262,  1266,  1271,  1278,
 348   1284,  1292,  1296,  1301,  1305,  1308,  1313,  1317,  1319,  1323,
 349   1326,  1330,  1332,  1339,  1346,  1351,  1360,  1364,  1369,  1371,
 350   1375,  1380,  1385,  1389,  1390,  1393,  1396,  1399,  1400,  1402,
 351   1404,  1408,  1412,  1417,  1424,  1426,  1428,  1430,  1432,  1434,
 352   1436,  1438,  1440,  1442,  1444,  1449,  1454,  1458,  1462,  1464,
 353   1468,  1470,  1473
 354 };
 355 
 356 static const short yyrhs[] = {   141,
 357     59,     0,    57,    59,     0,     1,    59,     0,   141,     0,
 358     57,     0,     1,     0,     0,   142,     0,   141,   142,     0,
 359    155,     0,   158,     0,   143,     0,   220,     0,   221,     0,
 360    223,     0,   231,     0,   226,     0,   242,     0,   239,     0,
 361    233,     0,   232,     0,   250,     0,   254,     0,   247,     0,
 362    246,     0,   224,     0,   225,     0,   260,     0,   154,     0,
 363    261,     0,   144,     0,   145,     0,   146,     0,   147,     0,
 364    149,     0,   150,     0,   151,     0,   152,     0,    56,    58,
 365      0,     1,    58,     0,    91,    80,    61,    58,     0,    91,
 366     80,    58,     0,    91,     1,    58,     0,   106,    82,    58,
 367      0,   106,     1,    58,     0,   107,   164,    58,     0,   107,
 368    165,    80,    58,     0,   107,   166,    84,    58,     0,   107,
 369     83,    58,     0,   107,     1,    58,     0,   108,   167,   169,
 370     58,     0,   108,   167,   170,    58,     0,   108,   168,   169,
 371     58,     0,   108,   168,   170,    58,     0,   108,   168,   171,
 372     58,     0,   108,     1,    58,     0,   109,   119,   148,    58,
 373      0,   109,   119,   148,   120,   148,   121,   148,    58,     0,
 374    109,   119,   148,   172,   122,   148,    58,     0,   109,   119,
 375    148,   120,   148,   121,   148,   172,   122,   148,    58,     0,
 376    109,     1,    58,     0,    61,     0,   148,    61,     0,   148,
 377    123,    61,     0,   148,   122,    61,     0,   110,   162,    58,
 378      0,   110,     1,    58,     0,   111,   173,    79,    58,     0,
 379    111,   173,    79,    61,    58,     0,   111,   174,    79,    58,
 380      0,   111,   174,    79,    61,    58,     0,   111,   175,    79,
 381     58,     0,   111,   175,    79,    61,    58,     0,   111,   176,
 382     79,    58,     0,   111,   176,    79,    61,    58,     0,   111,
 383      1,    58,     0,   112,   162,    58,     0,   112,     1,    58,
 384      0,   113,   162,   153,    58,     0,   113,    79,   153,    58,
 385      0,   113,   114,   153,    58,     0,   113,   115,   153,    58,
 386      0,   113,     1,    58,     0,   162,     0,    79,     0,   115,
 387      0,   114,     0,   122,   162,     0,   122,    79,     0,   122,
 388    115,     0,   122,   114,     0,   124,   162,     0,   124,   114,
 389      0,   124,   115,     0,   124,    79,     0,   125,   162,     0,
 390    125,    79,     0,   125,   114,     0,   125,   115,     0,   123,
 391    162,     0,   123,    79,     0,   123,   114,     0,   123,   115,
 392      0,   153,   162,     0,   153,    79,     0,   153,   114,     0,
 393    153,   115,     0,   153,   122,     0,   153,   124,     0,   153,
 394    125,     0,   153,   123,     0,    90,    58,     0,    85,   156,
 395     58,     0,    85,     1,    58,     0,     0,   157,     0,   160,
 396      0,   157,   126,   160,     0,    86,   159,    58,     0,    86,
 397      1,    58,     0,   160,     0,   159,   160,     0,   161,     0,
 398    161,   123,   161,     0,    70,     0,    61,     0,    62,     0,
 399     63,     0,    64,     0,    66,     0,    68,     0,    67,     0,
 400     69,     0,    66,   127,    61,     0,    66,   127,    61,   127,
 401     61,     0,    79,   127,    61,     0,    79,   127,    61,   127,
 402     61,     0,    71,     0,    72,     0,    73,     0,    74,     0,
 403     75,     0,    76,     0,    77,     0,   163,     0,    79,     0,
 404     80,     0,    83,     0,    65,     0,   128,   156,   129,     0,
 405    120,   192,   121,     0,    77,     0,    70,     0,    71,     0,
 406     72,     0,    73,     0,    74,     0,    75,     0,    82,     0,
 407     76,     0,   163,     0,   174,     0,   175,     0,   173,     0,
 408    176,     0,   170,     0,   169,     0,   171,     0,   168,     0,
 409    167,     0,   165,     0,   164,     0,   166,     0,     3,     0,
 410      4,     0,     5,     0,     6,     0,     7,     0,     8,     0,
 411      9,     0,    10,     0,    11,     0,    12,     0,    13,     0,
 412     14,     0,    15,     0,    16,     0,    17,     0,    18,     0,
 413     19,     0,    20,     0,    21,     0,    22,     0,    23,     0,
 414     24,     0,    25,     0,    26,     0,    31,     0,    27,     0,
 415     32,     0,    28,     0,    29,     0,    30,     0,    33,     0,
 416     34,     0,    35,     0,    36,     0,    37,     0,    38,     0,
 417     39,     0,    43,     0,    44,     0,    45,     0,    46,     0,
 418     47,     0,    48,     0,    49,     0,    50,     0,    51,     0,
 419     52,     0,    53,     0,    54,     0,    55,     0,     0,   178,
 420      0,   178,   114,   179,     0,   179,     0,   179,   115,   180,
 421      0,   179,    13,   180,     0,   180,     0,   120,   178,   121,
 422      0,   181,     0,    70,     0,    71,     0,     0,   184,     0,
 423      0,    10,   184,     0,   184,   114,   185,     0,   185,     0,
 424    185,   115,   186,     0,   185,    13,   186,     0,   186,     0,
 425    120,   184,   121,     0,   187,     0,    66,     0,    79,     0,
 426     73,     0,   178,   182,   183,     0,    74,     0,     0,     5,
 427    190,     0,   191,     0,   190,   191,     0,    78,   122,    77,
 428    120,   156,   121,   130,     0,    78,   118,   160,   130,     0,
 429     78,   120,   156,   121,   130,     0,    78,   131,   156,   132,
 430    130,     0,   130,     0,   192,   114,   193,     0,   192,   193,
 431      0,   193,     0,   193,   115,   194,     0,   194,     0,   116,
 432    194,     0,   120,   192,   121,     0,   195,     0,    11,     0,
 433    133,   201,   134,     0,   207,     0,    75,     0,   196,     0,
 434    197,   117,     0,   197,     0,    70,     0,    34,     0,    71,
 435      0,    72,     0,   128,   198,   129,     0,     0,   199,     0,
 436    200,     0,   199,   126,   200,     0,    68,     0,    69,     0,
 437    201,   135,   202,     0,   202,     0,   202,   203,     0,   203,
 438      0,   203,   136,     0,   203,   137,     0,   203,   119,     0,
 439    204,     0,   138,     0,   139,     0,   120,   201,   121,     0,
 440    205,     0,    70,     0,    34,     0,    71,     0,   122,     0,
 441    131,   206,   132,     0,   131,   138,   206,   132,     0,     0,
 442    206,    70,     0,   206,    34,     0,   206,   122,     0,   206,
 443     70,   123,    70,     0,   206,    71,     0,    78,   122,    77,
 444    120,   156,   121,     0,    78,   118,   160,     0,    78,   120,
 445    156,   121,     0,    78,   131,   156,   132,     0,     8,   188,
 446    189,     0,   208,     8,   188,   189,     0,     9,   188,   189,
 447      0,   209,     9,   188,   189,     0,   208,     6,   192,     0,
 448    210,   130,     0,   211,   210,   130,     0,   209,     7,   192,
 449      0,   212,   130,     0,   213,   212,   130,     0,   210,   130,
 450      0,   128,   211,   129,     0,   212,   130,     0,   128,   213,
 451    129,     0,   214,     0,   214,    12,   216,     0,   214,    13,
 452    216,     0,   215,     0,   215,    12,   217,     0,   215,    13,
 453    217,     0,     0,    35,   162,     0,     0,    36,   162,     0,
 454     87,   218,   219,   216,    58,     0,    87,   218,   219,   210,
 455     58,     0,    87,     1,    58,     0,    88,   218,   219,   217,
 456     58,     0,    88,   218,   219,   212,    58,     0,    88,     1,
 457     58,     0,     0,    15,   192,     0,    89,     9,   188,   189,
 458    222,    58,     0,    89,     9,   188,     1,    58,     0,    89,
 459      1,    58,     0,   102,   192,    58,     0,   102,     1,    58,
 460      0,   103,   188,    58,     0,   103,     1,    58,     0,    92,
 461     66,    16,    61,   189,    58,     0,    92,    66,    16,    61,
 462      1,    58,     0,    92,    66,    16,     1,    58,     0,    92,
 463     66,     1,    58,     0,    92,     1,    58,     0,     0,   228,
 464      0,   229,     0,   228,   126,   229,     0,   162,   120,   156,
 465    121,     0,    66,     0,    79,     0,    73,     0,    74,     0,
 466     93,   162,   230,   227,    58,     0,    93,   162,    66,     1,
 467     58,     0,    93,   162,     1,    58,     0,    93,     1,    58,
 468      0,    97,   178,    58,     0,    97,     1,    58,     0,    96,
 469     38,    58,     0,    96,    39,   177,    58,     0,    96,    39,
 470      1,    58,     0,    96,    38,     1,    58,     0,    96,     1,
 471     58,     0,     0,    40,   235,     0,   235,   114,   236,     0,
 472    236,     0,   236,   115,   237,     0,   237,     0,   120,   235,
 473    121,     0,   238,     0,    14,     0,    41,   128,   198,   129,
 474      0,    42,   128,   198,   129,     0,    94,   183,   189,   234,
 475     58,     0,    94,     1,    58,     0,     0,    37,     0,     0,
 476    192,     0,   241,    35,   162,   192,     0,    95,   240,   241,
 477     58,     0,    95,     1,    58,     0,     0,   244,     0,   245,
 478      0,   244,   126,   245,     0,    70,     0,    70,   117,     0,
 479     71,     0,    71,   117,     0,    72,     0,    72,   117,     0,
 480     68,     0,    69,     0,    98,   243,    58,     0,    98,     1,
 481     58,     0,    99,    77,   248,    58,     0,    99,    78,   248,
 482     58,     0,    99,     1,    58,     0,   249,     0,   248,   249,
 483      0,    77,   120,   121,     0,    77,   120,   251,   121,     0,
 484     77,   120,   251,   126,    81,   121,     0,    21,   118,   120,
 485    251,   121,     0,    21,   118,   120,   251,   126,    81,   121,
 486      0,    77,     1,   121,     0,    21,   118,     1,   121,     0,
 487     21,     1,   121,     0,     1,   121,     0,   100,    77,   252,
 488     58,     0,   100,     1,    58,     0,   252,     0,   251,   126,
 489    252,     0,    17,   251,     0,    18,    20,   252,     0,    77,
 490      0,    77,   131,    61,   126,    61,   132,     0,    77,   131,
 491     62,   126,    62,   132,     0,    77,   131,   253,   132,     0,
 492     19,   131,    61,   127,    61,   132,    20,   252,     0,    19,
 493     20,   252,     0,    19,     1,    20,   252,     0,   162,     0,
 494    253,   126,   162,     0,   101,   162,   255,    58,     0,   101,
 495    162,     1,    58,     0,   101,     1,    58,     0,     0,   255,
 496    256,     0,    25,   249,     0,    24,   249,     0,     0,   258,
 497      0,   259,     0,   258,   126,   259,     0,     1,   126,   259,
 498      0,    22,   120,   252,   121,     0,    22,   120,    23,   126,
 499    162,   121,     0,    24,     0,    25,     0,    31,     0,    27,
 500      0,    28,     0,    29,     0,    30,     0,    33,     0,    26,
 501      0,    32,     0,   104,   162,   257,    58,     0,   104,   162,
 502      1,    58,     0,   104,     1,    58,     0,   105,   262,    58,
 503      0,   263,     0,   262,   126,   263,     0,   162,     0,   162,
 504     11,     0,   162,   128,   198,   129,     0
 505 };
 506 
 507 #endif
 508 
 509 #if YYDEBUG != 0
 510 static const short yyrline[] = { 0,
 511    385,   388,   391,   395,   398,   401,   405,   410,   413,   418,
 512    419,   420,   421,   422,   423,   424,   425,   426,   427,   428,
 513    429,   430,   431,   432,   433,   434,   435,   436,   437,   438,
 514    439,   440,   441,   442,   443,   444,   445,   446,   447,   451,
 515    460,   464,   468,   475,   485,   490,   493,   497,   501,   505,
 516    516,   519,   522,   525,   528,   531,   537,   540,   543,   546,
 517    549,   555,   559,   562,   565,   570,   579,   584,   587,   590,
 518    593,   596,   599,   602,   605,   608,   613,   622,   627,   630,
 519    633,   636,   639,   644,   647,   650,   653,   656,   659,   662,
 520    665,   668,   671,   674,   677,   680,   683,   686,   689,   692,
 521    695,   698,   701,   704,   707,   710,   713,   716,   719,   722,
 522    725,   732,   743,   752,   760,   763,   766,   770,   776,   779,
 523    787,   791,   797,   800,   805,   808,   811,   814,   817,   820,
 524    823,   826,   829,   832,   835,   838,   841,   844,   847,   850,
 525    853,   856,   859,   862,   865,   868,   871,   874,   877,   880,
 526    883,   888,   891,   896,   899,   902,   905,   908,   911,   914,
 527    920,   921,   922,   923,   924,   925,   926,   927,   928,   929,
 528    930,   931,   932,   935,   938,   941,   944,   947,   950,   953,
 529    956,   959,   962,   965,   968,   971,   974,   977,   980,   983,
 530    986,   989,   992,   995,   998,  1001,  1004,  1007,  1010,  1013,
 531   1016,  1019,  1022,  1025,  1028,  1031,  1034,  1037,  1040,  1043,
 532   1048,  1052,  1056,  1060,  1064,  1068,  1072,  1076,  1080,  1084,
 533   1088,  1092,  1096,  1105,  1108,  1111,  1114,  1117,  1120,  1123,
 534   1126,  1129,  1132,  1135,  1142,  1145,  1150,  1153,  1158,  1161,
 535   1164,  1167,  1170,  1173,  1176,  1179,  1182,  1185,  1192,  1195,
 536   1202,  1205,  1210,  1215,  1222,  1232,  1246,  1255,  1264,  1271,
 537   1274,  1277,  1280,  1283,  1286,  1289,  1292,  1295,  1298,  1301,
 538   1307,  1310,  1313,  1317,  1320,  1323,  1326,  1329,  1332,  1337,
 539   1340,  1343,  1347,  1354,  1357,  1362,  1365,  1368,  1371,  1374,
 540   1377,  1380,  1383,  1386,  1389,  1392,  1395,  1398,  1401,  1404,
 541   1407,  1410,  1413,  1419,  1422,  1425,  1428,  1431,  1434,  1439,
 542   1449,  1463,  1472,  1485,  1489,  1495,  1499,  1507,  1512,  1516,
 543   1522,  1527,  1531,  1539,  1544,  1549,  1554,  1561,  1564,  1567,
 544   1572,  1575,  1578,  1585,  1588,  1598,  1601,  1613,  1618,  1624,
 545   1631,  1636,  1642,  1649,  1652,  1657,  1662,  1668,  1674,  1677,
 546   1684,  1687,  1696,  1700,  1706,  1712,  1718,  1727,  1730,  1735,
 547   1739,  1745,  1750,  1751,  1754,  1757,  1762,  1809,  1816,  1822,
 548   1831,  1835,  1842,  1845,  1848,  1853,  1858,  1867,  1870,  1875,
 549   1878,  1881,  1884,  1887,  1890,  1893,  1896,  1899,  1904,  1910,
 550   1919,  1920,  1923,  1925,  1928,  1934,  1937,  1946,  1949,  1952,
 551   1956,  1962,  1965,  1969,  1972,  1976,  1979,  1983,  1986,  1991,
 552   1994,  2003,  2006,  2009,  2016,  2021,  2028,  2031,  2034,  2037,
 553   2044,  2051,  2056,  2061,  2065,  2073,  2076,  2083,  2088,  2095,
 554   2102,  2109,  2116,  2123,  2130,  2138,  2149,  2156,  2163,  2167,
 555   2175,  2178,  2183,  2190,  2193,  2199,  2202,  2209,  2212,  2219,
 556   2222,  2227,  2233,  2236,  2245,  2248,  2251,  2254,  2257,  2260,
 557   2263,  2266,  2269,  2272,  2277,  2281,  2287,  2296,  2301,  2305,
 558   2311,  2314,  2317
 559 };
 560 #endif
 561 
 562 
 563 #if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
 564 
 565 static const char * const yytname[] = {   "$","error","$undefined.","KEYW_TRUE",
 566 "KEYW_FALSE","KEYW_ACTION","KEYW_ACCEPT","KEYW_ANNOUNCE","KEYW_FROM","KEYW_TO",
 567 "KEYW_AT","KEYW_ANY","KEYW_REFINE","KEYW_EXCEPT","KEYW_STATIC","KEYW_NETWORKS",
 568 "KEYW_MASKLEN","KEYW_UNION","KEYW_RANGE","KEYW_LIST","KEYW_OF","KEYW_OPERATOR",
 569 "KEYW_SYNTAX","KEYW_SPECIAL","KEYW_OPTIONAL","KEYW_MANDATORY","KEYW_INTERNAL",
 570 "KEYW_SINGLEVALUED","KEYW_MULTIVALUED","KEYW_LOOKUP","KEYW_KEY","KEYW_DELETED",
 571 "KEYW_GENERATED","KEYW_OBSOLETE","KEYW_PEERAS","KEYW_PROTOCOL","KEYW_INTO","KEYW_ATOMIC",
 572 "KEYW_INBOUND","KEYW_OUTBOUND","KEYW_UPON","KEYW_HAVE_COMPONENTS","KEYW_EXCLUDE",
 573 "KEYW_NONE","KEYW_MAILFROM","KEYW_CRYPTPW","KEYW_ASSIGNED","KEYW_ALLOCATED",
 574 "KEYW_PI","KEYW_PA","KEYW_UNSPECIFIED","KEYW_EXT","KEYW_SIMPLE","KEYW_RIPE",
 575 "KEYW_INTERNIC","KEYW_CLIENTADDRESS","TKN_ERROR","TKN_UNKNOWN_CLASS","TKN_EOA",
 576 "TKN_EOO","TKN_FREETEXT","TKN_INT","TKN_REAL","TKN_STRING","TKN_TIMESTAMP","TKN_BLOB",
 577 "TKN_IPV4","TKN_PRFXV6","TKN_PRFXV4","TKN_PRFXV4RNG","TKN_ASNO","TKN_ASNAME",
 578 "TKN_RSNAME","TKN_RTRSNAME","TKN_PRNGNAME","TKN_FLTRNAME","TKN_BOOLEAN","TKN_WORD",
 579 "TKN_RP_ATTR","TKN_DNS","TKN_EMAIL","TKN_3DOTS","TKN_NICHDL","TKN_KEYCRTNAME",
 580 "TKN_CRYPTEDPW","ATTR_GENERIC","ATTR_BLOBS","ATTR_IMPORT","ATTR_EXPORT","ATTR_DEFAULT",
 581 "ATTR_FREETEXT","ATTR_CHANGED","ATTR_IFADDR","ATTR_PEER","ATTR_INJECT","ATTR_COMPONENTS",
 582 "ATTR_AGGR_MTD","ATTR_AGGR_BNDRY","ATTR_RS_MEMBERS","ATTR_RP_ATTR","ATTR_TYPEDEF",
 583 "ATTR_PROTOCOL","ATTR_FILTER","ATTR_PEERING","ATTR_ATTR","ATTR_MNT_ROUTES","ATTR_NICHDL",
 584 "ATTR_AUTH","ATTR_STATUS_INET","ATTR_PHONE","ATTR_SOURCE","ATTR_REFER","ATTR_COUNTRY",
 585 "ATTR_PERSON","OP_OR","OP_AND","OP_NOT","OP_MS","TKN_OPERATOR","'+'","'('","')'",
 586 "'.'","'-'","'`'","'\\''","','","':'","'{'","'}'","';'","'['","']'","'<'","'>'",
 587 "'|'","'*'","'?'","'^'","'$'","object","attribute_list","attribute","changed_attribute",
 588 "nichdl_attribute","auth_attribute","status_inet_attribute","phone_attribute",
 589 "int_list","source_attribute","refer_attribute","country_attribute","person_attribute",
 590 "name_list","freetext_attribute","generic_attribute","generic_list","generic_non_empty_list",
 591 "blobs_attribute","blobs_list","list_item","list_item_0","tkn_word","tkn_word_from_keyw",
 592 "tkn_word_from_keyw_none","tkn_word_from_keyw_mailfrom","tkn_word_from_keyw_cryptpw",
 593 "tkn_word_from_keyw_assigned","tkn_word_from_keyw_allocated","tkn_word_from_keyw_pi",
 594 "tkn_word_from_keyw_pa","tkn_word_from_keyw_unspecified","tkn_word_from_keyw_ext",
 595 "tkn_word_from_keyw_simple","tkn_word_from_keyw_ripe","tkn_word_from_keyw_internic",
 596 "tkn_word_from_keyw_clientaddress","opt_as_expr","as_expr","as_expr_term","as_expr_factor",
 597 "as_expr_operand","opt_router_expr","opt_router_expr_with_at","router_expr",
 598 "router_expr_term","router_expr_factor","router_expr_operand","peering","opt_action",
 599 "action","single_action","filter","filter_term","filter_factor","filter_operand",
 600 "filter_prefix","filter_prefix_operand","opt_filter_prefix_list","filter_prefix_list",
 601 "filter_prefix_list_prefix","filter_aspath","filter_aspath_term","filter_aspath_closure",
 602 "filter_aspath_factor","filter_aspath_no","filter_aspath_range","filter_rp_attribute",
 603 "import_peering_action_list","export_peering_action_list","import_factor","import_factor_list",
 604 "export_factor","export_factor_list","import_term","export_term","import_expr",
 605 "export_expr","opt_protocol_from","opt_protocol_into","import_attribute","export_attribute",
 606 "opt_default_filter","default_attribute","filter_attribute","peering_attribute",
 607 "ifaddr_attribute","opt_peer_options","peer_options","peer_option","peer_id",
 608 "peer_attribute","aggr_bndry_attribute","aggr_mtd_attribute","opt_inject_expr",
 609 "inject_expr","inject_expr_term","inject_expr_factor","inject_expr_operand",
 610 "inject_attribute","opt_atomic","components_list","components_attribute","opt_rs_members_list",
 611 "rs_members_list","rs_member","rs_members_attribute","rpattr_attribute","methods",
 612 "method","typedef_attribute","typedef_type_list","typedef_type","enum_list",
 613 "protocol_attribute","protocol_options","protocol_option","opt_attr_options",
 614 "attr_options","attr_option","attr_attribute","mnt_routes_attribute","mnt_routes_list",
 615 "mnt_routes_list_item", NULL
 616 };
 617 #endif
 618 
 619 static const short yyr1[] = {     0,
 620    140,   140,   140,   140,   140,   140,   140,   141,   141,   142,
 621    142,   142,   142,   142,   142,   142,   142,   142,   142,   142,
 622    142,   142,   142,   142,   142,   142,   142,   142,   142,   142,
 623    142,   142,   142,   142,   142,   142,   142,   142,   142,   142,
 624    143,   143,   143,   144,   144,   145,   145,   145,   145,   145,
 625    146,   146,   146,   146,   146,   146,   147,   147,   147,   147,
 626    147,   148,   148,   148,   148,   149,   149,   150,   150,   150,
 627    150,   150,   150,   150,   150,   150,   151,   151,   152,   152,
 628    152,   152,   152,   153,   153,   153,   153,   153,   153,   153,
 629    153,   153,   153,   153,   153,   153,   153,   153,   153,   153,
 630    153,   153,   153,   153,   153,   153,   153,   153,   153,   153,
 631    153,   154,   155,   155,   156,   156,   157,   157,   158,   158,
 632    159,   159,   160,   160,   161,   161,   161,   161,   161,   161,
 633    161,   161,   161,   161,   161,   161,   161,   161,   161,   161,
 634    161,   161,   161,   161,   161,   161,   161,   161,   161,   161,
 635    161,   162,   162,   162,   162,   162,   162,   162,   162,   162,
 636    162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
 637    162,   162,   162,   163,   163,   163,   163,   163,   163,   163,
 638    163,   163,   163,   163,   163,   163,   163,   163,   163,   163,
 639    163,   163,   163,   163,   163,   163,   163,   163,   163,   163,
 640    163,   163,   163,   163,   163,   163,   163,   163,   163,   163,
 641    164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
 642    174,   175,   176,   177,   177,   178,   178,   179,   179,   179,
 643    180,   180,   181,   181,   182,   182,   183,   183,   184,   184,
 644    185,   185,   185,   186,   186,   187,   187,   187,   188,   188,
 645    189,   189,   190,   190,   191,   191,   191,   191,   191,   192,
 646    192,   192,   193,   193,   194,   194,   194,   195,   195,   195,
 647    195,   195,   196,   196,   197,   197,   197,   197,   197,   198,
 648    198,   199,   199,   200,   200,   201,   201,   202,   202,   203,
 649    203,   203,   203,   204,   204,   204,   204,   205,   205,   205,
 650    205,   205,   205,   206,   206,   206,   206,   206,   206,   207,
 651    207,   207,   207,   208,   208,   209,   209,   210,   211,   211,
 652    212,   213,   213,   214,   214,   215,   215,   216,   216,   216,
 653    217,   217,   217,   218,   218,   219,   219,   220,   220,   220,
 654    221,   221,   221,   222,   222,   223,   223,   223,   224,   224,
 655    225,   225,   226,   226,   226,   226,   226,   227,   227,   228,
 656    228,   229,   230,   230,   230,   230,   231,   231,   231,   231,
 657    232,   232,   233,   233,   233,   233,   233,   234,   234,   235,
 658    235,   236,   236,   237,   237,   238,   238,   238,   239,   239,
 659    240,   240,   241,   241,   241,   242,   242,   243,   243,   244,
 660    244,   245,   245,   245,   245,   245,   245,   245,   245,   246,
 661    246,   247,   247,   247,   248,   248,   249,   249,   249,   249,
 662    249,   249,   249,   249,   249,   250,   250,   251,   251,   252,
 663    252,   252,   252,   252,   252,   252,   252,   252,   253,   253,
 664    254,   254,   254,   255,   255,   256,   256,   257,   257,   258,
 665    258,   258,   259,   259,   259,   259,   259,   259,   259,   259,
 666    259,   259,   259,   259,   260,   260,   260,   261,   262,   262,
 667    263,   263,   263
 668 };
 669 
 670 static const short yyr2[] = {     0,
 671      2,     2,     2,     1,     1,     1,     0,     1,     2,     1,
 672      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 673      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 674      1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
 675      4,     3,     3,     3,     3,     3,     4,     4,     3,     3,
 676      4,     4,     4,     4,     4,     3,     4,     8,     7,    11,
 677      3,     1,     2,     3,     3,     3,     3,     4,     5,     4,
 678      5,     4,     5,     4,     5,     3,     3,     3,     4,     4,
 679      4,     4,     3,     1,     1,     1,     1,     2,     2,     2,
 680      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 681      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 682      2,     2,     3,     3,     0,     1,     1,     3,     3,     3,
 683      1,     2,     1,     3,     1,     1,     1,     1,     1,     1,
 684      1,     1,     1,     3,     5,     3,     5,     1,     1,     1,
 685      1,     1,     1,     1,     1,     1,     1,     1,     1,     3,
 686      3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 687      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 688      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 689      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 690      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 691      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 692      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 693      1,     1,     1,     0,     1,     3,     1,     3,     3,     1,
 694      3,     1,     1,     1,     0,     1,     0,     2,     3,     1,
 695      3,     3,     1,     3,     1,     1,     1,     1,     3,     1,
 696      0,     2,     1,     2,     7,     4,     5,     5,     1,     3,
 697      2,     1,     3,     1,     2,     3,     1,     1,     3,     1,
 698      1,     1,     2,     1,     1,     1,     1,     1,     3,     0,
 699      1,     1,     3,     1,     1,     3,     1,     2,     1,     2,
 700      2,     2,     1,     1,     1,     3,     1,     1,     1,     1,
 701      1,     3,     4,     0,     2,     2,     2,     4,     2,     6,
 702      3,     4,     4,     3,     4,     3,     4,     3,     2,     3,
 703      3,     2,     3,     2,     3,     2,     3,     1,     3,     3,
 704      1,     3,     3,     0,     2,     0,     2,     5,     5,     3,
 705      5,     5,     3,     0,     2,     6,     5,     3,     3,     3,
 706      3,     3,     6,     6,     5,     4,     3,     0,     1,     1,
 707      3,     4,     1,     1,     1,     1,     5,     5,     4,     3,
 708      3,     3,     3,     4,     4,     4,     3,     0,     2,     3,
 709      1,     3,     1,     3,     1,     1,     4,     4,     5,     3,
 710      0,     1,     0,     1,     4,     4,     3,     0,     1,     1,
 711      3,     1,     2,     1,     2,     1,     2,     1,     1,     3,
 712      3,     4,     4,     3,     1,     2,     3,     4,     6,     5,
 713      7,     3,     4,     3,     2,     4,     3,     1,     3,     2,
 714      3,     1,     6,     6,     4,     8,     3,     4,     1,     3,
 715      4,     4,     3,     0,     2,     2,     2,     0,     1,     1,
 716      3,     3,     4,     6,     1,     1,     1,     1,     1,     1,
 717      1,     1,     1,     1,     4,     4,     3,     3,     1,     3,
 718      1,     2,     4
 719 };
 720 
 721 static const short yydefact[] = {     0,
 722      6,     0,     5,     0,     0,     0,     0,     0,     0,     0,
 723      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 724      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 725      0,     0,     0,     8,    12,    31,    32,    33,    34,    35,
 726     36,    37,    38,    29,    10,    11,    13,    14,    15,    26,
 727     27,    17,    16,    21,    20,    19,    18,    25,    24,    22,
 728     23,    28,    30,    40,     3,    39,     2,     0,   174,   175,
 729    176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
 730    186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
 731    196,   197,   199,   201,   202,   203,   198,   200,   204,   205,
 732    206,   207,   208,   209,   210,   126,   127,   128,   129,   149,
 733    130,   132,   131,   133,   125,   138,   139,   140,   141,   142,
 734    143,   144,   146,   147,   148,     0,   115,     0,   116,   117,
 735    123,   145,     0,     0,   121,     0,     0,   336,     0,   336,
 736      0,     0,   112,     0,     0,     0,     0,     0,   211,   212,
 737    213,   214,   215,   216,   217,   218,   220,   221,   222,   223,
 738    153,   154,   155,   156,   157,   158,   160,   152,   159,     0,
 739    161,   172,   171,   173,   170,   169,   167,   166,   168,   164,
 740    162,   163,   165,     0,     0,   251,     0,   392,   393,     0,
 741      0,     0,     0,   233,   234,     0,     0,   227,   230,   232,
 742      0,   408,   409,   402,   404,   406,     0,   399,   400,     0,
 743      0,     0,     0,     0,     0,     0,     0,   268,   276,   275,
 744    277,   278,   271,     0,     0,     0,   280,     0,     0,   262,
 745    264,   267,   272,   274,   270,     0,   250,   235,     0,     0,
 746      0,   471,     0,   469,     0,     0,     0,     0,     0,     0,
 747      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 748      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 749      0,     1,     9,   114,     0,     0,     0,     0,   113,     0,
 750      0,   120,   119,   122,   340,   335,     0,     0,   343,     0,
 751    348,     0,    43,    42,     0,   357,     0,     0,   370,     0,
 752      0,   365,   366,   364,   358,   390,   246,   248,   247,     0,
 753    238,   240,   243,   245,     0,   378,   397,   394,     0,   377,
 754      0,   373,     0,     0,   225,   372,     0,   371,     0,     0,
 755      0,   411,   403,   405,   407,   410,     0,   414,     0,     0,
 756      0,     0,   415,     0,   427,     0,     0,     0,   432,     0,
 757    443,     0,     0,   350,     0,   115,     0,   115,   265,     0,
 758    284,   285,     0,   281,   282,   299,   298,   300,     0,   301,
 759    304,   294,   295,     0,   287,   289,   293,   297,   349,     0,
 760    261,     0,   273,   352,   237,   236,   351,   467,     0,     0,
 761    455,   456,   463,   458,   459,   460,   461,   457,   464,   462,
 762      0,   449,   450,   472,   280,   468,     0,    45,    44,    50,
 763     49,    46,     0,     0,    56,     0,     0,     0,     0,     0,
 764     61,    62,     0,    67,    66,    76,     0,     0,     0,     0,
 765     78,    77,    83,    85,    87,    86,     0,     0,     0,     0,
 766      0,    84,     0,     0,     0,   134,   136,   151,   150,   118,
 767    124,   337,     0,     0,     0,     0,   328,     0,     0,     0,
 768      0,     0,   331,     0,     0,   344,    41,   356,     0,     0,
 769    369,     0,     0,     0,   359,   360,     0,     0,     0,     0,
 770      0,   259,   252,   253,     0,     0,     0,   396,   376,   375,
 771    374,   231,   226,   229,   228,   401,   425,     0,     0,     0,
 772      0,   412,   416,   413,   430,   428,     0,     0,     0,     0,
 773      0,   426,   442,     0,     0,   441,   445,   311,     0,     0,
 774      0,   266,   279,     0,     0,   304,     0,   269,     0,   288,
 775    292,   290,   291,   260,   263,   249,   466,     0,     0,   465,
 776      0,     0,   470,    47,    48,    51,    52,    53,    54,    55,
 777    219,    57,    63,     0,     0,     0,     0,    68,     0,    70,
 778      0,    72,     0,    74,     0,    89,    91,    90,    88,   101,
 779    102,   103,   100,    95,    93,    94,    92,    97,    98,    99,
 780     96,    80,   105,   106,   107,   108,   111,   109,   110,   104,
 781     81,    82,    79,     0,     0,   251,     0,     0,     0,     0,
 782    339,   324,     0,     0,   338,   251,     0,     0,     0,     0,
 783    342,   326,     0,     0,   341,   347,     0,     0,   355,     0,
 784      0,   368,   115,   367,     0,   244,   239,   242,   241,     0,
 785    115,     0,   115,   254,   386,     0,     0,     0,   379,   381,
 786    383,   385,   389,     0,   424,     0,     0,   422,   417,     0,
 787      0,   431,     0,   437,     0,     0,     0,   439,     0,   447,
 788    446,   312,   115,   313,   283,   296,     0,   306,   305,   309,
 789    307,   302,   286,   452,     0,     0,   451,   473,     0,    65,
 790     64,     0,    69,    71,    73,    75,   135,   137,   314,   319,
 791    325,     0,   318,   251,     0,   329,   330,   316,   322,   327,
 792      0,   321,   251,     0,   332,   333,   345,   346,   354,   353,
 793      0,   361,     0,     0,     0,     0,   280,   280,     0,     0,
 794      0,   395,   423,     0,   418,     0,   429,   438,     0,     0,
 795      0,     0,   435,     0,   303,     0,     0,   453,     0,     0,
 796    320,   315,   323,   317,   362,   256,     0,   115,     0,     0,
 797      0,   384,   380,   382,   420,     0,     0,     0,     0,     0,
 798    440,   310,   308,     0,     0,    59,   257,     0,   258,   387,
 799    388,     0,   419,     0,   433,   434,   454,    58,     0,     0,
 800    421,     0,     0,   255,   436,     0,    60,     0,     0,     0
 801 };
 802 
 803 static const short yydefgoto[] = {   788,
 804     33,    34,    35,    36,    37,    38,    39,   423,    40,    41,
 805     42,    43,   441,    44,    45,   128,   129,    46,   134,   130,
 806    131,   442,   171,   172,   173,   174,   175,   176,   177,   178,
 807    179,   557,   180,   181,   182,   183,   324,   238,   198,   199,
 808    200,   385,   186,   311,   312,   313,   314,   239,   316,   483,
 809    484,   229,   230,   231,   232,   233,   234,   363,   364,   365,
 810    374,   375,   376,   377,   378,   527,   235,   455,   461,   695,
 811    598,   704,   608,   457,   463,   458,   464,   138,   288,    47,
 812     48,   618,    49,    50,    51,    52,   474,   475,   476,   305,
 813     53,    54,    55,   486,   639,   640,   641,   642,    56,   189,
 814    319,    57,   207,   208,   209,    58,    59,   342,   343,    60,
 815    505,   506,   659,    61,   353,   517,   401,   402,   403,    62,
 816     63,   243,   244
 817 };
 818 
 819 static const short yypact[] = {   741,
 820    146,     7,    36,   570,   742,    31,    35,    77,   176,    45,
 821     75,  2384,   405,    27,   303,    62,   323,   134,    59,  2464,
 822     41,    47,  2544,  2864,    40,   249,   326,    33,  2624,   438,
 823   2704,  1737,   993,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 824 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 825 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 826 -32768,-32768,-32768,-32768,-32768,-32768,-32768,   182,-32768,-32768,
 827 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 828 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 829 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 830 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 831    -23,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 832 -32768,-32768,   -17,-32768,-32768,   305,   994,   197,    -6,-32768,
 833    142,-32768,   256,   868,-32768,   263,  2864,   271,   310,   271,
 834    316,   352,-32768,   332,   295,   354,    67,   359,-32768,-32768,
 835 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 836 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   141,
 837 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 838 -32768,-32768,-32768,   361,    11,   379,   392,-32768,   305,   396,
 839     71,    56,   406,-32768,-32768,   192,   121,    30,-32768,-32768,
 840    411,-32768,-32768,   320,   329,   331,   417,   373,-32768,   443,
 841     87,    87,   447,   347,   449,   193,   465,-32768,-32768,-32768,
 842 -32768,-32768,-32768,   296,   305,   305,   280,   247,   128,   422,
 843 -32768,-32768,-32768,   409,-32768,   481,-32768,   389,   482,   483,
 844    503,    18,    -2,-32768,   484,   485,   486,   499,   500,   479,
 845    476,   504,   242,   446,   505,   506,   507,   508,   510,   490,
 846    491,   531,   532,   554,   555,   556,  1612,  1612,  1612,  1612,
 847    557,-32768,-32768,-32768,   559,   560,   138,   435,-32768,   994,
 848    994,-32768,-32768,-32768,-32768,-32768,  2864,    22,-32768,    26,
 849 -32768,   252,-32768,-32768,   564,-32768,   566,    39,-32768,   567,
 850   2304,-32768,-32768,-32768,  2864,-32768,-32768,-32768,-32768,    11,
 851    534,    60,-32768,-32768,   -27,   577,-32768,   230,   161,-32768,
 852    593,-32768,   594,   596,   541,-32768,    81,-32768,   192,   192,
 853    192,-32768,-32768,-32768,-32768,-32768,   388,-32768,   497,    52,
 854     46,   226,-32768,   268,-32768,   347,   636,    25,   526,   600,
 855 -32768,   602,   165,-32768,   994,   994,   584,   994,-32768,   154,
 856 -32768,-32768,   533,   537,-32768,-32768,-32768,-32768,   247,-32768,
 857    527,-32768,-32768,   227,   247,   -45,-32768,-32768,-32768,   305,
 858    422,   305,-32768,-32768,   654,   534,-32768,-32768,    57,   546,
 859 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 860    609,   542,-32768,-32768,   280,-32768,  2864,-32768,-32768,-32768,
 861 -32768,-32768,   611,   612,-32768,   613,   614,   615,   616,   617,
 862 -32768,-32768,   237,-32768,-32768,-32768,   321,   391,   412,   416,
 863 -32768,-32768,-32768,-32768,-32768,-32768,  1850,  1963,  2076,  2189,
 864   1120,-32768,  1243,  1366,  1489,   549,   550,-32768,-32768,-32768,
 865 -32768,-32768,   352,   670,   222,   -21,   470,   621,   352,   671,
 866    327,    21,   498,   623,   624,   668,-32768,-32768,   626,    49,
 867 -32768,   627,   568,   628,   561,-32768,   122,    11,    11,    11,
 868    322,-32768,   -27,-32768,    17,   631,  2864,-32768,-32768,-32768,
 869 -32768,-32768,    30,-32768,-32768,-32768,-32768,   571,    48,   572,
 870     63,-32768,-32768,-32768,   565,-32768,   347,   674,   347,   634,
 871   2784,-32768,-32768,    87,    87,-32768,-32768,-32768,   575,   579,
 872    569,-32768,-32768,   280,   125,-32768,   151,-32768,   247,   -45,
 873 -32768,-32768,-32768,   422,-32768,-32768,-32768,   523,   390,-32768,
 874    523,   573,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 875 -32768,-32768,-32768,   506,   639,   642,   582,-32768,   647,-32768,
 876    648,-32768,   649,-32768,   650,-32768,-32768,-32768,-32768,-32768,
 877 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 878 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 879 -32768,-32768,-32768,   651,   652,   379,   580,    19,   305,   352,
 880 -32768,-32768,    22,    22,-32768,   379,   581,    24,   305,   352,
 881 -32768,-32768,    26,    26,-32768,-32768,   305,   656,-32768,   657,
 882    658,-32768,   994,-32768,  2864,-32768,    60,-32768,-32768,   994,
 883    994,   620,   994,-32768,-32768,   589,   590,    17,   595,   604,
 884 -32768,-32768,-32768,   305,-32768,   599,   347,-32768,-32768,   -32,
 885    347,-32768,   347,-32768,   597,   601,   603,-32768,   -39,-32768,
 886 -32768,-32768,   994,-32768,-32768,-32768,   215,-32768,   598,-32768,
 887 -32768,-32768,   247,-32768,   605,   618,-32768,-32768,   116,-32768,
 888 -32768,   506,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 889 -32768,   592,   230,   379,   606,-32768,-32768,-32768,-32768,-32768,
 890    607,   230,   379,   608,-32768,-32768,   230,-32768,-32768,-32768,
 891    619,-32768,   653,   661,   610,   655,   280,   280,   158,    17,
 892     17,   230,-32768,   194,-32768,   370,-32768,-32768,   664,   665,
 893    672,  2864,-32768,   663,-32768,   662,  2864,-32768,   506,   248,
 894 -32768,-32768,-32768,-32768,-32768,-32768,   659,   994,   660,   666,
 895    667,-32768,   604,-32768,-32768,   384,   673,   669,   688,   691,
 896 -32768,-32768,-32768,   678,   282,-32768,-32768,   679,-32768,-32768,
 897 -32768,   681,-32768,   713,-32768,-32768,-32768,-32768,   702,   725,
 898 -32768,   347,   506,-32768,-32768,   277,-32768,   735,   785,-32768
 899 };
 900 
 901 static const short yypgoto[] = {-32768,
 902 -32768,   753,-32768,-32768,-32768,-32768,-32768,  -538,-32768,-32768,
 903 -32768,-32768,   218,-32768,-32768,  -125,-32768,-32768,-32768,     0,
 904    511,    -9,    -4,   762,   765,   767,   829,   830,   143,   259,
 905    692,    93,   831,   833,   834,   835,-32768,     1,   530,   184,
 906 -32768,-32768,   475,  -137,   430,    38,-32768,  -134,  -283,-32768,
 907    383,  -120,  -222,  -201,-32768,-32768,-32768,  -387,-32768,   343,
 908    540,   339,  -362,-32768,-32768,   385,-32768,-32768,-32768,  -276,
 909 -32768,  -280,-32768,-32768,-32768,   -84,   -92,   862,   770,-32768,
 910 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   287,-32768,
 911 -32768,-32768,-32768,-32768,   275,   195,   196,-32768,-32768,-32768,
 912 -32768,-32768,-32768,-32768,   583,-32768,-32768,   704,  -323,-32768,
 913   -476,  -210,-32768,-32768,-32768,-32768,-32768,-32768,   -57,-32768,
 914 -32768,-32768,   512
 915 };
 916 
 917 
 918 #define YYLAST          2946
 919 
 920 
 921 static const short yytable[] = {   132,
 922    132,   278,   170,   350,   135,   277,   381,   292,   466,   462,
 923    216,   456,   530,   241,   242,   679,   197,   542,   503,   258,
 924    503,   265,   270,   359,   650,   508,   453,   187,   404,   453,
 925    635,   136,   459,   255,   459,   139,   601,  -391,  -334,   469,
 926    245,   217,   330,  -334,   509,   144,   500,   236,   646,   620,
 927    481,   218,   498,   315,   381,   406,   323,   636,   637,   213,
 928   -391,  -391,   193,   188,    66,   137,  -334,   297,   318,   137,
 929   -334,   321,   479,   531,   219,   146,   307,   141,   611,   346,
 930    347,   348,   298,   308,  -391,   142,   732,   339,   725,   309,
 931    532,   533,   733,   726,    67,   381,  -391,  -391,  -391,   470,
 932    386,  -391,   482,   275,  -391,   360,  -251,   340,   602,   276,
 933    220,   221,   222,  -224,   537,   223,   194,   195,   224,   280,
 934    237,   246,   132,   407,   145,   194,   195,   286,   322,   132,
 935    310,   194,   195,   284,   210,   214,   638,   381,   218,   349,
 936    147,   300,  -391,   740,   331,   405,  -391,   691,   218,   454,
 937    612,   256,   700,   460,  -391,   510,   225,   534,  -334,  -391,
 938    226,   219,  -334,   341,   218,   501,   196,   647,   227,   499,
 939    724,   219,   477,   228,   480,   196,   553,   597,   328,   607,
 940    535,   196,   538,   649,   668,   379,   621,   219,   514,   515,
 941    660,   661,   325,   352,   329,   487,   327,   220,   221,   222,
 942    765,   492,   223,    64,    65,   224,   301,   220,   221,   222,
 943    211,   212,   223,   302,   303,   224,  -444,  -444,   488,   304,
 944    669,   670,   516,   220,   221,   222,   339,   599,   223,   600,
 945    519,   224,   521,   143,   329,   478,   739,   555,   556,   274,
 946    218,   380,   626,   225,   786,   666,   340,   226,   668,   247,
 947   -444,   380,   465,   225,   279,   227,   315,   226,   448,   529,
 948    228,   194,   195,   219,   281,   227,  -251,   380,   339,   225,
 949    228,   720,   671,   226,   522,   132,   132,   452,   752,   450,
 950    366,   227,   672,   502,   669,   670,   228,   551,   340,   154,
 951    155,   149,   150,   151,   552,   473,   652,   553,   654,   220,
 952    221,   222,   341,   190,   223,   766,   287,   224,   553,  -251,
 953    530,   196,   689,   282,   755,   218,   367,   368,   596,   756,
 954    285,   692,   698,   201,   606,   504,   252,   701,   676,   750,
 955    751,   248,   551,   609,   787,   610,   671,   553,   219,   778,
 956    191,   192,   553,   380,   341,   225,   735,   361,   362,   226,
 957    132,   132,   294,   132,   518,   295,   554,   227,   555,   556,
 958    528,   529,   228,   346,   347,   348,   369,   289,   370,   555,
 959    556,   152,   153,   291,   220,   221,   222,   371,   558,   223,
 960   -398,   559,   224,   315,   372,   373,   346,   347,   348,   293,
 961    202,   203,   204,   205,   206,   416,   418,   242,   555,   556,
 962    346,   347,   348,   555,   556,   184,   346,   347,   348,  -237,
 963    742,   296,   675,   355,   185,   356,   299,   357,   306,   744,
 964    225,   194,   195,   349,   226,   237,   358,   569,   573,   577,
 965    581,   590,   227,   590,   590,   590,   333,   228,   259,   630,
 966    727,   631,   728,   632,  -237,   334,   349,   335,   560,   317,
 967    757,   561,   633,   320,   307,   202,   203,   204,   205,   206,
 968    349,   308,  -237,   326,   772,   694,   349,   309,   332,   562,
 969    381,   196,   563,   564,   336,   703,   565,   644,   693,   381,
 970    674,   603,   604,   677,   381,   443,   444,   445,   702,   157,
 971    158,   159,   160,   154,   155,   156,   707,   711,   337,   381,
 972    338,   658,   329,   389,   345,   714,   351,   716,   310,   613,
 973    614,   417,   419,   494,   495,   727,   628,   629,   696,   697,
 974    705,   706,   354,   722,   390,   383,   391,   392,   393,   394,
 975    395,   396,   397,   398,   399,   400,   382,   734,   384,   387,
 976    388,   408,   409,   410,   390,   727,   391,   392,   393,   394,
 977    395,   396,   397,   398,   399,   400,   411,   412,   413,   414,
 978   -448,   415,   421,   449,   424,   425,   422,   426,   427,   428,
 979     68,   785,    69,    70,    71,    72,    73,    74,    75,    76,
 980     77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
 981     87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
 982     97,    98,    99,   100,   101,   102,   103,   104,   105,   429,
 983    430,   431,   432,   433,    64,   473,   485,   497,   132,   446,
 984    447,   467,   768,   468,   471,   132,   132,  -115,   132,   713,
 985    106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
 986    116,   117,   118,   119,   120,   121,   122,   478,   123,   124,
 987    489,   490,   125,   491,   329,   507,   511,   512,   132,   513,
 988    520,   523,   524,   185,   526,   539,   540,   541,   544,   545,
 989    546,   547,   548,   549,   550,   594,   595,   453,   605,   459,
 990    615,   616,   617,   619,   622,   624,   625,   623,   643,   126,
 991    651,   645,   648,   653,   655,   662,   715,   127,   663,   680,
 992    664,   678,   681,   682,   683,   684,   685,   686,   720,   690,
 993    699,   687,   688,   708,   709,   710,   717,   718,   721,   723,
 994    736,   741,   761,   729,   758,   759,   730,   764,   731,   748,
 995    737,   763,   782,   760,   789,   602,   743,   612,   738,   745,
 996     -7,     1,   133,   132,    69,    70,    71,    72,    73,    74,
 997     75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
 998     85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
 999     95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
1000    105,   747,   746,   762,   790,   273,   749,   249,   767,   769,
1001    250,   451,   251,   773,   770,   771,     2,     3,   777,   780,
1002    774,   781,   106,   107,   108,   109,   110,   111,   112,   113,
1003    114,   115,   116,   117,   118,   119,   120,   121,   122,   775,
1004    123,   124,   776,   783,   125,     4,     5,     6,     7,     8,
1005      9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
1006     19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
1007     29,    30,    31,    32,   784,   253,   254,   779,   493,   536,
1008    260,   126,   261,   262,   263,   634,   665,   673,   140,   127,
1009     69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
1010     79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
1011     89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
1012     99,   100,   101,   102,   103,   104,   105,   627,   525,   290,
1013    667,   712,   719,     0,   753,   344,   754,     0,   543,   496,
1014      0,     0,     0,     0,     0,   283,     0,     0,   106,   107,
1015    108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
1016    118,   119,   120,   121,   122,   420,   123,   124,     0,     0,
1017    125,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1018      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1019      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1020      0,     0,     0,     0,     0,     0,     0,   126,     0,     0,
1021      0,     0,    -4,   271,     0,   127,    69,    70,    71,    72,
1022     73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
1023     83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
1024     93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
1025    103,   104,   105,     0,     0,     0,     0,     0,     0,     0,
1026      0,     0,     0,     0,     0,     0,     0,     0,     2,     0,
1027      0,   272,     0,     0,   106,   107,   108,   109,   110,   111,
1028    112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
1029    122,     0,   123,   124,     0,     0,   125,     4,     5,     6,
1030      7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
1031     17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
1032     27,    28,    29,    30,    31,    32,     0,     0,     0,     0,
1033      0,     0,     0,   126,     0,     0,     0,     0,     0,     0,
1034      0,   127,    69,    70,    71,    72,    73,    74,    75,    76,
1035     77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
1036     87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
1037     97,    98,    99,   100,   101,   102,   103,   104,   105,     0,
1038      0,     0,   149,   150,   151,   152,   153,   154,   155,   156,
1039      0,   157,   158,   159,   160,     0,     0,   582,     0,     0,
1040      0,     0,     0,     0,     0,     0,     0,     0,     0,   161,
1041    162,   163,   164,   165,   166,   167,   168,     0,   583,     0,
1042      0,   169,     0,     0,     0,     0,     0,     0,     0,     0,
1043      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1044      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1045      0,     0,     0,   584,   585,     0,     0,     0,     0,     0,
1046      0,   586,   587,   588,   589,    69,    70,    71,    72,    73,
1047     74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
1048     84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
1049     94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
1050    104,   105,     0,     0,     0,   149,   150,   151,   152,   153,
1051    154,   155,   156,     0,   157,   158,   159,   160,     0,     0,
1052    591,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1053      0,     0,   161,   162,   163,   164,   165,   166,   167,   168,
1054      0,   583,     0,     0,   169,     0,     0,     0,     0,     0,
1055      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1056      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1057      0,     0,     0,     0,     0,     0,   584,   585,     0,     0,
1058      0,     0,     0,     0,   586,   587,   588,   589,    69,    70,
1059     71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
1060     81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
1061     91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
1062    101,   102,   103,   104,   105,     0,     0,     0,   149,   150,
1063    151,   152,   153,   154,   155,   156,     0,   157,   158,   159,
1064    160,     0,     0,   592,     0,     0,     0,     0,     0,     0,
1065      0,     0,     0,     0,     0,   161,   162,   163,   164,   165,
1066    166,   167,   168,     0,   583,     0,     0,   169,     0,     0,
1067      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1068      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1069      0,     0,     0,     0,     0,     0,     0,     0,     0,   584,
1070    585,     0,     0,     0,     0,     0,     0,   586,   587,   588,
1071    589,    69,    70,    71,    72,    73,    74,    75,    76,    77,
1072     78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
1073     88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
1074     98,    99,   100,   101,   102,   103,   104,   105,     0,     0,
1075      0,   149,   150,   151,   152,   153,   154,   155,   156,     0,
1076    157,   158,   159,   160,     0,     0,   593,     0,     0,     0,
1077      0,     0,     0,     0,     0,     0,     0,     0,   161,   162,
1078    163,   164,   165,   166,   167,   168,     0,   583,     0,     0,
1079    169,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1080      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1081      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1082      0,     0,   584,   585,     0,     0,     0,     0,     0,     0,
1083    586,   587,   588,   589,    69,    70,    71,    72,    73,    74,
1084     75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
1085     85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
1086     95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
1087    105,     0,     0,     0,   149,   150,   151,   152,   153,   154,
1088    155,   156,     0,   157,   158,   159,   160,     0,     0,     0,
1089      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1090      0,   161,   162,   163,   164,   165,   166,   167,   168,     0,
1091    434,     0,     0,   169,     0,     0,     0,     0,     0,     0,
1092      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1093      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1094      0,     0,     0,     0,     0,   435,   436,     0,     0,     0,
1095      0,     0,     0,   437,   438,   439,   440,   266,     0,    69,
1096     70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
1097     80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
1098     90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
1099    100,   101,   102,   103,   104,   105,     0,     0,     0,   149,
1100    150,   151,   152,   153,   154,   155,   156,     0,   157,   158,
1101    159,   160,     0,     0,     0,     0,     0,     0,     0,     0,
1102      0,     0,     0,     0,     0,     0,   161,   162,   163,   164,
1103    165,   166,   167,   168,     0,   267,     0,     0,   169,     0,
1104      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1105      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1106      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1107    268,   269,    69,    70,    71,    72,    73,    74,    75,    76,
1108     77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
1109     87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
1110     97,    98,    99,   100,   101,   102,   103,   104,   105,     0,
1111      0,     0,   149,   150,   151,   152,   153,   154,   155,   156,
1112      0,   157,   158,   159,   160,     0,     0,     0,     0,     0,
1113      0,     0,     0,     0,     0,     0,     0,     0,     0,   161,
1114    162,   163,   164,   165,   166,   167,   168,     0,   566,     0,
1115      0,   169,     0,     0,     0,     0,     0,     0,     0,     0,
1116      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1117      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1118      0,     0,     0,   567,   568,    69,    70,    71,    72,    73,
1119     74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
1120     84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
1121     94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
1122    104,   105,     0,     0,     0,   149,   150,   151,   152,   153,
1123    154,   155,   156,     0,   157,   158,   159,   160,     0,     0,
1124      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1125      0,     0,   161,   162,   163,   164,   165,   166,   167,   168,
1126      0,   570,     0,     0,   169,     0,     0,     0,     0,     0,
1127      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1128      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1129      0,     0,     0,     0,     0,     0,   571,   572,    69,    70,
1130     71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
1131     81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
1132     91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
1133    101,   102,   103,   104,   105,     0,     0,     0,   149,   150,
1134    151,   152,   153,   154,   155,   156,     0,   157,   158,   159,
1135    160,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1136      0,     0,     0,     0,     0,   161,   162,   163,   164,   165,
1137    166,   167,   168,     0,   574,     0,     0,   169,     0,     0,
1138      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1139      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1140      0,     0,     0,     0,     0,     0,     0,     0,     0,   575,
1141    576,    69,    70,    71,    72,    73,    74,    75,    76,    77,
1142     78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
1143     88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
1144     98,    99,   100,   101,   102,   103,   104,   105,     0,     0,
1145      0,   149,   150,   151,   152,   153,   154,   155,   156,     0,
1146    157,   158,   159,   160,     0,     0,     0,     0,     0,     0,
1147      0,     0,     0,     0,     0,     0,     0,     0,   161,   162,
1148    163,   164,   165,   166,   167,   168,     0,   578,     0,     0,
1149    169,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1150      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1151      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1152      0,     0,   579,   580,   472,     0,  -363,  -363,  -363,  -363,
1153   -363,  -363,  -363,  -363,  -363,  -363,  -363,  -363,  -363,  -363,
1154   -363,  -363,  -363,  -363,  -363,  -363,  -363,  -363,  -363,  -363,
1155   -363,  -363,  -363,  -363,  -363,  -363,  -363,  -363,  -363,  -363,
1156   -363,  -363,  -363,     0,     0,     0,  -363,  -363,  -363,  -363,
1157   -363,  -363,  -363,  -363,     0,  -363,  -363,  -363,  -363,     0,
1158      0,  -363,     0,     0,     0,     0,     0,     0,     0,     0,
1159      0,     0,     0,  -363,  -363,  -363,  -363,  -363,  -363,  -363,
1160   -363,     0,     0,     0,   148,  -363,    69,    70,    71,    72,
1161     73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
1162     83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
1163     93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
1164    103,   104,   105,     0,     0,     0,   149,   150,   151,   152,
1165    153,   154,   155,   156,     0,   157,   158,   159,   160,     0,
1166      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1167      0,     0,     0,   161,   162,   163,   164,   165,   166,   167,
1168    168,     0,     0,     0,   215,   169,    69,    70,    71,    72,
1169     73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
1170     83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
1171     93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
1172    103,   104,   105,     0,     0,     0,   149,   150,   151,   152,
1173    153,   154,   155,   156,     0,   157,   158,   159,   160,     0,
1174      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1175      0,     0,     0,   161,   162,   163,   164,   165,   166,   167,
1176    168,     0,     0,     0,   240,   169,    69,    70,    71,    72,
1177     73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
1178     83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
1179     93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
1180    103,   104,   105,     0,     0,     0,   149,   150,   151,   152,
1181    153,   154,   155,   156,     0,   157,   158,   159,   160,     0,
1182      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1183      0,     0,     0,   161,   162,   163,   164,   165,   166,   167,
1184    168,     0,     0,     0,   257,   169,    69,    70,    71,    72,
1185     73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
1186     83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
1187     93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
1188    103,   104,   105,     0,     0,     0,   149,   150,   151,   152,
1189    153,   154,   155,   156,     0,   157,   158,   159,   160,     0,
1190      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1191      0,     0,     0,   161,   162,   163,   164,   165,   166,   167,
1192    168,     0,     0,     0,   264,   169,    69,    70,    71,    72,
1193     73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
1194     83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
1195     93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
1196    103,   104,   105,     0,     0,     0,   149,   150,   151,   152,
1197    153,   154,   155,   156,     0,   157,   158,   159,   160,     0,
1198      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1199      0,     0,     0,   161,   162,   163,   164,   165,   166,   167,
1200    168,     0,     0,     0,     0,   169,    69,    70,    71,    72,
1201     73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
1202     83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
1203     93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
1204    103,   104,   105,     0,     0,     0,   149,   150,   151,   152,
1205    153,   154,   155,   156,     0,   157,   158,   159,   160,     0,
1206      0,     0,     0,     0,   656,   657,     0,     0,     0,     0,
1207      0,     0,     0,   161,   162,   163,   164,   165,   166,   167,
1208    168,     0,     0,     0,     0,   169,    69,    70,    71,    72,
1209     73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
1210     83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
1211     93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
1212    103,   104,   105,     0,     0,     0,   149,   150,   151,   152,
1213    153,   154,   155,   156,     0,   157,   158,   159,   160,     0,
1214      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1215      0,     0,     0,   161,   162,   163,   164,   165,   166,   167,
1216    168,     0,     0,     0,     0,   169
1217 };
1218 
1219 static const short yycheck[] = {     4,
1220      5,   127,    12,   214,     5,   126,   229,   142,   292,   290,
1221     20,   288,   375,    23,    24,   554,    16,   405,   342,    29,
1222    344,    31,    32,   225,   501,     1,     8,     1,    11,     8,
1223     14,     1,     9,     1,     9,     1,    58,    11,     8,     1,
1224      1,     1,    13,     9,    20,     1,     1,     1,     1,     1,
1225     78,    11,     1,     5,   277,    58,     1,    41,    42,     1,
1226     34,    35,     1,    37,    58,    35,    36,     1,   189,    35,
1227     36,     1,    13,   119,    34,     1,    66,     1,    58,    17,
1228     18,    19,    16,    73,    58,     9,   126,     1,   121,    79,
1229    136,   137,   132,   126,    59,   318,    70,    71,    72,    61,
1230    238,    75,   130,   127,    78,   226,    58,    21,   130,   127,
1231     70,    71,    72,    58,    58,    75,    70,    71,    78,   126,
1232     74,    82,   127,   126,    80,    70,    71,   137,    58,   134,
1233    120,    70,    71,   134,     1,    77,   120,   360,    11,    77,
1234     66,     1,   116,   682,   115,   128,   120,   129,    11,   128,
1235    130,   119,   129,   128,   128,   131,   116,   380,   128,   133,
1236    120,    34,   128,    77,    11,   120,   120,   120,   128,   118,
1237    647,    34,   310,   133,   115,   120,    61,   454,    58,   460,
1238    382,   120,   126,   121,    34,    58,   470,    34,    24,    25,
1239    514,   515,   192,     1,   114,    35,   196,    70,    71,    72,
1240    739,   121,    75,    58,    59,    78,    66,    70,    71,    72,
1241     77,    78,    75,    73,    74,    78,    24,    25,    58,    79,
1242     70,    71,    58,    70,    71,    72,     1,     6,    75,     8,
1243    356,    78,   358,    58,   114,   114,   121,   122,   123,    58,
1244     11,   114,   121,   116,   783,   121,    21,   120,    34,     1,
1245     58,   114,     1,   116,    58,   128,     5,   120,   121,   135,
1246    133,    70,    71,    34,   123,   128,    15,   114,     1,   116,
1247    133,   114,   122,   120,   121,   280,   281,   287,   121,   280,
1248     34,   128,   132,    58,    70,    71,   133,    51,    21,    48,
1249     49,    43,    44,    45,    58,   305,   507,    61,   509,    70,
1250     71,    72,    77,     1,    75,    58,    36,    78,    61,    58,
1251    673,   120,   596,    58,   121,    11,    70,    71,   453,   126,
1252     58,   598,   606,     1,   459,    58,     1,   608,   539,   717,
1253    718,    83,    51,     7,    58,     9,   122,    61,    34,    58,
1254     38,    39,    61,   114,    77,   116,   132,    68,    69,   120,
1255    355,   356,    58,   358,   355,    61,   120,   128,   122,   123,
1256    134,   135,   133,    17,    18,    19,   120,    58,   122,   122,
1257    123,    46,    47,    58,    70,    71,    72,   131,    58,    75,
1258     58,    61,    78,     5,   138,   139,    17,    18,    19,    58,
1259     68,    69,    70,    71,    72,   253,   254,   407,   122,   123,
1260     17,    18,    19,   122,   123,     1,    17,    18,    19,     5,
1261    694,    58,    23,   118,    10,   120,    58,   122,    58,   703,
1262    116,    70,    71,    77,   120,    74,   131,   437,   438,   439,
1263    440,   441,   128,   443,   444,   445,   117,   133,     1,   118,
1264    651,   120,   653,   122,    40,   117,    77,   117,    58,    58,
1265     81,    61,   131,    58,    66,    68,    69,    70,    71,    72,
1266     77,    73,    58,    58,    81,   600,    77,    79,    58,    58,
1267    693,   120,    61,    58,    58,   610,    61,   487,   599,   702,
1268    538,    12,    13,   541,   707,   268,   269,   270,   609,    52,
1269     53,    54,    55,    48,    49,    50,   617,   623,   126,   722,
1270     58,   511,   114,     1,    58,   631,    58,   633,   120,    12,
1271     13,   253,   254,   330,   331,   726,   479,   480,   603,   604,
1272    613,   614,    58,   644,    22,   117,    24,    25,    26,    27,
1273     28,    29,    30,    31,    32,    33,   115,   663,    58,    58,
1274     58,    58,    58,    58,    22,   756,    24,    25,    26,    27,
1275     28,    29,    30,    31,    32,    33,    58,    58,    80,    84,
1276     58,    58,    58,   129,    58,    58,    61,    58,    79,    79,
1277      1,   782,     3,     4,     5,     6,     7,     8,     9,    10,
1278     11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
1279     21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
1280     31,    32,    33,    34,    35,    36,    37,    38,    39,    79,
1281     79,    58,    58,    58,    58,   625,    40,   121,   623,    61,
1282     61,    58,   748,    58,    58,   630,   631,    58,   633,   630,
1283     61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
1284     71,    72,    73,    74,    75,    76,    77,   114,    79,    80,
1285     58,    58,    83,    58,   114,    20,   131,    58,   663,    58,
1286     77,   129,   126,    10,   138,   120,    58,   126,    58,    58,
1287     58,    58,    58,    58,    58,   127,   127,     8,    58,     9,
1288     58,    58,    15,    58,    58,    58,   126,   120,    58,   120,
1289    126,   121,   121,    20,    61,   121,    77,   128,   120,    61,
1290    132,   129,    61,   122,    58,    58,    58,    58,   114,   130,
1291    130,    61,    61,    58,    58,    58,   128,   128,   115,   121,
1292    123,   130,   732,   127,    61,    61,   126,   737,   126,   120,
1293    126,    70,    20,    62,     0,   130,   130,   130,   121,   121,
1294      0,     1,     1,   748,     3,     4,     5,     6,     7,     8,
1295      9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
1296     19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
1297     29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
1298     39,   121,   130,   121,     0,    33,   132,    26,   130,   130,
1299     26,   281,    26,   121,   129,   129,    56,    57,   121,   121,
1300    132,   121,    61,    62,    63,    64,    65,    66,    67,    68,
1301     69,    70,    71,    72,    73,    74,    75,    76,    77,   132,
1302     79,    80,   132,   122,    83,    85,    86,    87,    88,    89,
1303     90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
1304    100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
1305    110,   111,   112,   113,   130,    27,    27,   765,   329,   385,
1306     30,   120,    30,    30,    30,   483,   524,   529,     7,   128,
1307      3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
1308     13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
1309     23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
1310     33,    34,    35,    36,    37,    38,    39,   478,   369,   140,
1311    526,   625,   638,    -1,   720,   212,   721,    -1,   407,   337,
1312     -1,    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,    62,
1313     63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
1314     73,    74,    75,    76,    77,   254,    79,    80,    -1,    -1,
1315     83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1316     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1317     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1318     -1,    -1,    -1,    -1,    -1,    -1,    -1,   120,    -1,    -1,
1319     -1,    -1,     0,     1,    -1,   128,     3,     4,     5,     6,
1320      7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
1321     17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
1322     27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
1323     37,    38,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1324     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    56,    -1,
1325     -1,    59,    -1,    -1,    61,    62,    63,    64,    65,    66,
1326     67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
1327     77,    -1,    79,    80,    -1,    -1,    83,    85,    86,    87,
1328     88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
1329     98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
1330    108,   109,   110,   111,   112,   113,    -1,    -1,    -1,    -1,
1331     -1,    -1,    -1,   120,    -1,    -1,    -1,    -1,    -1,    -1,
1332     -1,   128,     3,     4,     5,     6,     7,     8,     9,    10,
1333     11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
1334     21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
1335     31,    32,    33,    34,    35,    36,    37,    38,    39,    -1,
1336     -1,    -1,    43,    44,    45,    46,    47,    48,    49,    50,
1337     -1,    52,    53,    54,    55,    -1,    -1,    58,    -1,    -1,
1338     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,
1339     71,    72,    73,    74,    75,    76,    77,    -1,    79,    -1,
1340     -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1341     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1342     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1343     -1,    -1,    -1,   114,   115,    -1,    -1,    -1,    -1,    -1,
1344     -1,   122,   123,   124,   125,     3,     4,     5,     6,     7,
1345      8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
1346     18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
1347     28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
1348     38,    39,    -1,    -1,    -1,    43,    44,    45,    46,    47,
1349     48,    49,    50,    -1,    52,    53,    54,    55,    -1,    -1,
1350     58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1351     -1,    -1,    70,    71,    72,    73,    74,    75,    76,    77,
1352     -1,    79,    -1,    -1,    82,    -1,    -1,    -1,    -1,    -1,
1353     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1354     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1355     -1,    -1,    -1,    -1,    -1,    -1,   114,   115,    -1,    -1,
1356     -1,    -1,    -1,    -1,   122,   123,   124,   125,     3,     4,
1357      5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
1358     15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
1359     25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
1360     35,    36,    37,    38,    39,    -1,    -1,    -1,    43,    44,
1361     45,    46,    47,    48,    49,    50,    -1,    52,    53,    54,
1362     55,    -1,    -1,    58,    -1,    -1,    -1,    -1,    -1,    -1,
1363     -1,    -1,    -1,    -1,    -1,    70,    71,    72,    73,    74,
1364     75,    76,    77,    -1,    79,    -1,    -1,    82,    -1,    -1,
1365     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1366     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1367     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,
1368    115,    -1,    -1,    -1,    -1,    -1,    -1,   122,   123,   124,
1369    125,     3,     4,     5,     6,     7,     8,     9,    10,    11,
1370     12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
1371     22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
1372     32,    33,    34,    35,    36,    37,    38,    39,    -1,    -1,
1373     -1,    43,    44,    45,    46,    47,    48,    49,    50,    -1,
1374     52,    53,    54,    55,    -1,    -1,    58,    -1,    -1,    -1,
1375     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    71,
1376     72,    73,    74,    75,    76,    77,    -1,    79,    -1,    -1,
1377     82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1378     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1379     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1380     -1,    -1,   114,   115,    -1,    -1,    -1,    -1,    -1,    -1,
1381    122,   123,   124,   125,     3,     4,     5,     6,     7,     8,
1382      9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
1383     19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
1384     29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
1385     39,    -1,    -1,    -1,    43,    44,    45,    46,    47,    48,
1386     49,    50,    -1,    52,    53,    54,    55,    -1,    -1,    -1,
1387     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1388     -1,    70,    71,    72,    73,    74,    75,    76,    77,    -1,
1389     79,    -1,    -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,
1390     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1391     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1392     -1,    -1,    -1,    -1,    -1,   114,   115,    -1,    -1,    -1,
1393     -1,    -1,    -1,   122,   123,   124,   125,     1,    -1,     3,
1394      4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
1395     14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
1396     24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
1397     34,    35,    36,    37,    38,    39,    -1,    -1,    -1,    43,
1398     44,    45,    46,    47,    48,    49,    50,    -1,    52,    53,
1399     54,    55,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1400     -1,    -1,    -1,    -1,    -1,    -1,    70,    71,    72,    73,
1401     74,    75,    76,    77,    -1,    79,    -1,    -1,    82,    -1,
1402     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1403     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1404     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1405    114,   115,     3,     4,     5,     6,     7,     8,     9,    10,
1406     11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
1407     21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
1408     31,    32,    33,    34,    35,    36,    37,    38,    39,    -1,
1409     -1,    -1,    43,    44,    45,    46,    47,    48,    49,    50,
1410     -1,    52,    53,    54,    55,    -1,    -1,    -1,    -1,    -1,
1411     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,
1412     71,    72,    73,    74,    75,    76,    77,    -1,    79,    -1,
1413     -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1414     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1415     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1416     -1,    -1,    -1,   114,   115,     3,     4,     5,     6,     7,
1417      8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
1418     18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
1419     28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
1420     38,    39,    -1,    -1,    -1,    43,    44,    45,    46,    47,
1421     48,    49,    50,    -1,    52,    53,    54,    55,    -1,    -1,
1422     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1423     -1,    -1,    70,    71,    72,    73,    74,    75,    76,    77,
1424     -1,    79,    -1,    -1,    82,    -1,    -1,    -1,    -1,    -1,
1425     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1426     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1427     -1,    -1,    -1,    -1,    -1,    -1,   114,   115,     3,     4,
1428      5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
1429     15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
1430     25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
1431     35,    36,    37,    38,    39,    -1,    -1,    -1,    43,    44,
1432     45,    46,    47,    48,    49,    50,    -1,    52,    53,    54,
1433     55,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1434     -1,    -1,    -1,    -1,    -1,    70,    71,    72,    73,    74,
1435     75,    76,    77,    -1,    79,    -1,    -1,    82,    -1,    -1,
1436     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1437     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1438     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,
1439    115,     3,     4,     5,     6,     7,     8,     9,    10,    11,
1440     12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
1441     22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
1442     32,    33,    34,    35,    36,    37,    38,    39,    -1,    -1,
1443     -1,    43,    44,    45,    46,    47,    48,    49,    50,    -1,
1444     52,    53,    54,    55,    -1,    -1,    -1,    -1,    -1,    -1,
1445     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    71,
1446     72,    73,    74,    75,    76,    77,    -1,    79,    -1,    -1,
1447     82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1448     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1449     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1450     -1,    -1,   114,   115,     1,    -1,     3,     4,     5,     6,
1451      7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
1452     17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
1453     27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
1454     37,    38,    39,    -1,    -1,    -1,    43,    44,    45,    46,
1455     47,    48,    49,    50,    -1,    52,    53,    54,    55,    -1,
1456     -1,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1457     -1,    -1,    -1,    70,    71,    72,    73,    74,    75,    76,
1458     77,    -1,    -1,    -1,     1,    82,     3,     4,     5,     6,
1459      7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
1460     17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
1461     27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
1462     37,    38,    39,    -1,    -1,    -1,    43,    44,    45,    46,
1463     47,    48,    49,    50,    -1,    52,    53,    54,    55,    -1,
1464     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1465     -1,    -1,    -1,    70,    71,    72,    73,    74,    75,    76,
1466     77,    -1,    -1,    -1,     1,    82,     3,     4,     5,     6,
1467      7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
1468     17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
1469     27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
1470     37,    38,    39,    -1,    -1,    -1,    43,    44,    45,    46,
1471     47,    48,    49,    50,    -1,    52,    53,    54,    55,    -1,
1472     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1473     -1,    -1,    -1,    70,    71,    72,    73,    74,    75,    76,
1474     77,    -1,    -1,    -1,     1,    82,     3,     4,     5,     6,
1475      7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
1476     17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
1477     27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
1478     37,    38,    39,    -1,    -1,    -1,    43,    44,    45,    46,
1479     47,    48,    49,    50,    -1,    52,    53,    54,    55,    -1,
1480     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1481     -1,    -1,    -1,    70,    71,    72,    73,    74,    75,    76,
1482     77,    -1,    -1,    -1,     1,    82,     3,     4,     5,     6,
1483      7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
1484     17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
1485     27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
1486     37,    38,    39,    -1,    -1,    -1,    43,    44,    45,    46,
1487     47,    48,    49,    50,    -1,    52,    53,    54,    55,    -1,
1488     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1489     -1,    -1,    -1,    70,    71,    72,    73,    74,    75,    76,
1490     77,    -1,    -1,    -1,     1,    82,     3,     4,     5,     6,
1491      7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
1492     17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
1493     27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
1494     37,    38,    39,    -1,    -1,    -1,    43,    44,    45,    46,
1495     47,    48,    49,    50,    -1,    52,    53,    54,    55,    -1,
1496     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1497     -1,    -1,    -1,    70,    71,    72,    73,    74,    75,    76,
1498     77,    -1,    -1,    -1,    -1,    82,     3,     4,     5,     6,
1499      7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
1500     17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
1501     27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
1502     37,    38,    39,    -1,    -1,    -1,    43,    44,    45,    46,
1503     47,    48,    49,    50,    -1,    52,    53,    54,    55,    -1,
1504     -1,    -1,    -1,    -1,    61,    62,    -1,    -1,    -1,    -1,
1505     -1,    -1,    -1,    70,    71,    72,    73,    74,    75,    76,
1506     77,    -1,    -1,    -1,    -1,    82,     3,     4,     5,     6,
1507      7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
1508     17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
1509     27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
1510     37,    38,    39,    -1,    -1,    -1,    43,    44,    45,    46,
1511     47,    48,    49,    50,    -1,    52,    53,    54,    55,    -1,
1512     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1513     -1,    -1,    -1,    70,    71,    72,    73,    74,    75,    76,
1514     77,    -1,    -1,    -1,    -1,    82
1515 };
1516 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
1517 #line 3 "/usr/local/share/bison.simple"
1518 /* This file comes from bison-1.28.  */
1519 
1520 /* Skeleton output parser for bison,
1521    Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
1522 
1523    This program is free software; you can redistribute it and/or modify
1524    it under the terms of the GNU General Public License as published by
1525    the Free Software Foundation; either version 2, or (at your option)
1526    any later version.
1527 
1528    This program is distributed in the hope that it will be useful,
1529    but WITHOUT ANY WARRANTY; without even the implied warranty of
1530    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1531    GNU General Public License for more details.
1532 
1533    You should have received a copy of the GNU General Public License
1534    along with this program; if not, write to the Free Software
1535    Foundation, Inc., 59 Temple Place - Suite 330,
1536    Boston, MA 02111-1307, USA.  */
1537 
1538 /* As a special exception, when this file is copied by Bison into a
1539    Bison output file, you may use that output file without restriction.
1540    This special exception was added by the Free Software Foundation
1541    in version 1.24 of Bison.  */
1542 
1543 /* This is the parser code that is written into each bison parser
1544   when the %semantic_parser declaration is not specified in the grammar.
1545   It was written by Richard Stallman by simplifying the hairy parser
1546   used when %semantic_parser is specified.  */
1547 
1548 #ifndef YYSTACK_USE_ALLOCA
1549 #ifdef alloca
1550 #define YYSTACK_USE_ALLOCA
1551 #else /* alloca not defined */
1552 #ifdef __GNUC__
1553 #define YYSTACK_USE_ALLOCA
1554 #define alloca __builtin_alloca
1555 #else /* not GNU C.  */
1556 #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
1557 #define YYSTACK_USE_ALLOCA
1558 #include <alloca.h>
1559 #else /* not sparc */
1560 /* We think this test detects Watcom and Microsoft C.  */
1561 /* This used to test MSDOS, but that is a bad idea
1562    since that symbol is in the user namespace.  */
1563 #if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
1564 #if 0 /* No need for malloc.h, which pollutes the namespace;
1565          instead, just don't use alloca.  */
1566 #include <malloc.h>
1567 #endif
1568 #else /* not MSDOS, or __TURBOC__ */
1569 #if defined(_AIX)
1570 /* I don't know what this was needed for, but it pollutes the namespace.
1571    So I turned it off.   rms, 2 May 1997.  */
1572 /* #include <malloc.h>  */
1573  #pragma alloca
1574 #define YYSTACK_USE_ALLOCA
1575 #else /* not MSDOS, or __TURBOC__, or _AIX */
1576 #if 0
1577 #ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
1578                  and on HPUX 10.  Eventually we can turn this on.  */
1579 #define YYSTACK_USE_ALLOCA
1580 #define alloca __builtin_alloca
1581 #endif /* __hpux */
1582 #endif
1583 #endif /* not _AIX */
1584 #endif /* not MSDOS, or __TURBOC__ */
1585 #endif /* not sparc */
1586 #endif /* not GNU C */
1587 #endif /* alloca not defined */
1588 #endif /* YYSTACK_USE_ALLOCA not defined */
1589 
1590 #ifdef YYSTACK_USE_ALLOCA
1591 #define YYSTACK_ALLOC alloca
1592 #else
1593 #define YYSTACK_ALLOC malloc
1594 #endif
1595 
1596 /* Note: there must be only one dollar sign in this file.
1597    It is replaced by the list of actions, each action
1598    as one case of the switch.  */
1599 
1600 #define yyerrok         (yyerrstatus = 0)
1601 #define yyclearin       (yychar = YYEMPTY)
1602 #define YYEMPTY         -2
1603 #define YYEOF           0
1604 #define YYACCEPT        goto yyacceptlab
1605 #define YYABORT         goto yyabortlab
1606 #define YYERROR         goto yyerrlab1
1607 /* Like YYERROR except do call yyerror.
1608    This remains here temporarily to ease the
1609    transition to the new meaning of YYERROR, for GCC.
1610    Once GCC version 2 has supplanted version 1, this can go.  */
1611 #define YYFAIL          goto yyerrlab
1612 #define YYRECOVERING()  (!!yyerrstatus)
     /* [<][>][^][v][top][bottom][index][help] */
1613 #define YYBACKUP(token, value) \
     /* [<][>][^][v][top][bottom][index][help] */
1614 do                                                              \
1615   if (yychar == YYEMPTY && yylen == 1)                          \
1616     { yychar = (token), yylval = (value);                       \
1617       yychar1 = YYTRANSLATE (yychar);                           \
1618       YYPOPSTACK;                                               \
1619       goto yybackup;                                            \
1620     }                                                           \
1621   else                                                          \
1622     { yyerror ("syntax error: cannot back up"); YYERROR; }      \
1623 while (0)
1624 
1625 #define YYTERROR        1
1626 #define YYERRCODE       256
1627 
1628 #ifndef YYPURE
1629 #define YYLEX           yylex()
1630 #endif
1631 
1632 #ifdef YYPURE
1633 #ifdef YYLSP_NEEDED
1634 #ifdef YYLEX_PARAM
1635 #define YYLEX           yylex(&yylval, &yylloc, YYLEX_PARAM)
1636 #else
1637 #define YYLEX           yylex(&yylval, &yylloc)
1638 #endif
1639 #else /* not YYLSP_NEEDED */
1640 #ifdef YYLEX_PARAM
1641 #define YYLEX           yylex(&yylval, YYLEX_PARAM)
1642 #else
1643 #define YYLEX           yylex(&yylval)
1644 #endif
1645 #endif /* not YYLSP_NEEDED */
1646 #endif
1647 
1648 /* If nonreentrant, generate the variables here */
1649 
1650 #ifndef YYPURE
1651 
1652 int     yychar;                 /*  the lookahead symbol                */
1653 YYSTYPE yylval;                 /*  the semantic value of the           */
1654                                 /*  lookahead symbol                    */
1655 
1656 #ifdef YYLSP_NEEDED
1657 YYLTYPE yylloc;                 /*  location data for the lookahead     */
1658                                 /*  symbol                              */
1659 #endif
1660 
1661 int yynerrs;                    /*  number of parse errors so far       */
1662 #endif  /* not YYPURE */
1663 
1664 #if YYDEBUG != 0
1665 int yydebug;                    /*  nonzero means print parse trace     */
1666 /* Since this is uninitialized, it does not stop multiple parsers
1667    from coexisting.  */
1668 #endif
1669 
1670 /*  YYINITDEPTH indicates the initial size of the parser's stacks       */
1671 
1672 #ifndef YYINITDEPTH
1673 #define YYINITDEPTH 200
1674 #endif
1675 
1676 /*  YYMAXDEPTH is the maximum size the stacks can grow to
1677     (effective only if the built-in stack extension method is used).  */
1678 
1679 #if YYMAXDEPTH == 0
1680 #undef YYMAXDEPTH
1681 #endif
1682 
1683 #ifndef YYMAXDEPTH
1684 #define YYMAXDEPTH 10000
1685 #endif
1686 
1687 /* Define __yy_memcpy.  Note that the size argument
1688    should be passed with type unsigned int, because that is what the non-GCC
1689    definitions require.  With GCC, __builtin_memcpy takes an arg
1690    of type size_t, but it can handle unsigned int.  */
1691 
1692 #if __GNUC__ > 1                /* GNU C and GNU C++ define this.  */
1693 #define __yy_memcpy(TO,FROM,COUNT)      __builtin_memcpy(TO,FROM,COUNT)
     /* [<][>][^][v][top][bottom][index][help] */
1694 #else                           /* not GNU C or C++ */
1695 #ifndef __cplusplus
1696 
1697 /* This is the most reliable way to avoid incompatibilities
1698    in available built-in functions on various systems.  */
1699 static void
1700 __yy_memcpy (to, from, count)
     /* [<][>][^][v][top][bottom][index][help] */
1701      char *to;
1702      char *from;
1703      unsigned int count;
1704 {
1705   register char *f = from;
1706   register char *t = to;
1707   register int i = count;
1708 
1709   while (i-- > 0)
1710     *t++ = *f++;
1711 }
1712 
1713 #else /* __cplusplus */
1714 
1715 /* This is the most reliable way to avoid incompatibilities
1716    in available built-in functions on various systems.  */
1717 static void
1718 __yy_memcpy (char *to, char *from, unsigned int count)
     /* [<][>][^][v][top][bottom][index][help] */
1719 {
1720   register char *t = to;
1721   register char *f = from;
1722   register int i = count;
1723 
1724   while (i-- > 0)
1725     *t++ = *f++;
1726 }
1727 
1728 #endif
1729 #endif
1730 
1731 #line 217 "/usr/local/share/bison.simple"
1732 
1733 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
1734    into yyparse.  The argument should have type void *.
1735    It should actually point to an object.
1736    Grammar actions can access the variable by casting it
1737    to the proper pointer type.  */
1738 
1739 #ifdef YYPARSE_PARAM
1740 #ifdef __cplusplus
1741 #define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
1742 #define YYPARSE_PARAM_DECL
1743 #else /* not __cplusplus */
1744 #define YYPARSE_PARAM_ARG YYPARSE_PARAM
1745 #define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
1746 #endif /* not __cplusplus */
1747 #else /* not YYPARSE_PARAM */
1748 #define YYPARSE_PARAM_ARG
1749 #define YYPARSE_PARAM_DECL
1750 #endif /* not YYPARSE_PARAM */
1751 
1752 /* Prevent warning if -Wstrict-prototypes.  */
1753 #ifdef __GNUC__
1754 #ifdef YYPARSE_PARAM
1755 int yyparse (void *);
1756 #else
1757 int yyparse (void);
1758 #endif
1759 #endif
1760 
1761 int
1762 yyparse(YYPARSE_PARAM_ARG)
     /* [<][>][^][v][top][bottom][index][help] */
1763      YYPARSE_PARAM_DECL
1764 {
1765   register int yystate;
1766   register int yyn;
1767   register short *yyssp;
1768   register YYSTYPE *yyvsp;
1769   int yyerrstatus;      /*  number of tokens to shift before error messages enabled */
1770   int yychar1 = 0;              /*  lookahead token as an internal (translated) token number */
1771 
1772   short yyssa[YYINITDEPTH];     /*  the state stack                     */
1773   YYSTYPE yyvsa[YYINITDEPTH];   /*  the semantic value stack            */
1774 
1775   short *yyss = yyssa;          /*  refer to the stacks thru separate pointers */
1776   YYSTYPE *yyvs = yyvsa;        /*  to allow yyoverflow to reallocate them elsewhere */
1777 
1778 #ifdef YYLSP_NEEDED
1779   YYLTYPE yylsa[YYINITDEPTH];   /*  the location stack                  */
1780   YYLTYPE *yyls = yylsa;
1781   YYLTYPE *yylsp;
1782 
1783 #define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
1784 #else
1785 #define YYPOPSTACK   (yyvsp--, yyssp--)
1786 #endif
1787 
1788   int yystacksize = YYINITDEPTH;
1789   int yyfree_stacks = 0;
1790 
1791 #ifdef YYPURE
1792   int yychar;
1793   YYSTYPE yylval;
1794   int yynerrs;
1795 #ifdef YYLSP_NEEDED
1796   YYLTYPE yylloc;
1797 #endif
1798 #endif
1799 
1800   YYSTYPE yyval;                /*  the variable used to return         */
1801                                 /*  semantic values from the action     */
1802                                 /*  routines                            */
1803 
1804   int yylen;
1805 
1806 #if YYDEBUG != 0
1807   if (yydebug)
1808     fprintf(stderr, "Starting parse\n");
1809 #endif
1810 
1811   yystate = 0;
1812   yyerrstatus = 0;
1813   yynerrs = 0;
1814   yychar = YYEMPTY;             /* Cause a token to be read.  */
1815 
1816   /* Initialize stack pointers.
1817      Waste one element of value and location stack
1818      so that they stay on the same level as the state stack.
1819      The wasted elements are never initialized.  */
1820 
1821   yyssp = yyss - 1;
1822   yyvsp = yyvs;
1823 #ifdef YYLSP_NEEDED
1824   yylsp = yyls;
1825 #endif
1826 
1827 /* Push a new state, which is found in  yystate  .  */
1828 /* In all cases, when you get here, the value and location stacks
1829    have just been pushed. so pushing a state here evens the stacks.  */
1830 yynewstate:
1831 
1832   *++yyssp = yystate;
1833 
1834   if (yyssp >= yyss + yystacksize - 1)
1835     {
1836       /* Give user a chance to reallocate the stack */
1837       /* Use copies of these so that the &'s don't force the real ones into memory. */
1838       YYSTYPE *yyvs1 = yyvs;
1839       short *yyss1 = yyss;
1840 #ifdef YYLSP_NEEDED
1841       YYLTYPE *yyls1 = yyls;
1842 #endif
1843 
1844       /* Get the current used size of the three stacks, in elements.  */
1845       int size = yyssp - yyss + 1;
1846 
1847 #ifdef yyoverflow
1848       /* Each stack pointer address is followed by the size of
1849          the data in use in that stack, in bytes.  */
1850 #ifdef YYLSP_NEEDED
1851       /* This used to be a conditional around just the two extra args,
1852          but that might be undefined if yyoverflow is a macro.  */
1853       yyoverflow("parser stack overflow",
1854                  &yyss1, size * sizeof (*yyssp),
1855                  &yyvs1, size * sizeof (*yyvsp),
1856                  &yyls1, size * sizeof (*yylsp),
1857                  &yystacksize);
1858 #else
1859       yyoverflow("parser stack overflow",
1860                  &yyss1, size * sizeof (*yyssp),
1861                  &yyvs1, size * sizeof (*yyvsp),
1862                  &yystacksize);
1863 #endif
1864 
1865       yyss = yyss1; yyvs = yyvs1;
1866 #ifdef YYLSP_NEEDED
1867       yyls = yyls1;
1868 #endif
1869 #else /* no yyoverflow */
1870       /* Extend the stack our own way.  */
1871       if (yystacksize >= YYMAXDEPTH)
1872         {
1873           yyerror("parser stack overflow");
1874           if (yyfree_stacks)
1875             {
1876               free (yyss);
1877               free (yyvs);
1878 #ifdef YYLSP_NEEDED
1879               free (yyls);
1880 #endif
1881             }
1882           return 2;
1883         }
1884       yystacksize *= 2;
1885       if (yystacksize > YYMAXDEPTH)
1886         yystacksize = YYMAXDEPTH;
1887 #ifndef YYSTACK_USE_ALLOCA
1888       yyfree_stacks = 1;
1889 #endif
1890       yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
1891       __yy_memcpy ((char *)yyss, (char *)yyss1,
1892                    size * (unsigned int) sizeof (*yyssp));
1893       yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
1894       __yy_memcpy ((char *)yyvs, (char *)yyvs1,
1895                    size * (unsigned int) sizeof (*yyvsp));
1896 #ifdef YYLSP_NEEDED
1897       yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
1898       __yy_memcpy ((char *)yyls, (char *)yyls1,
1899                    size * (unsigned int) sizeof (*yylsp));
1900 #endif
1901 #endif /* no yyoverflow */
1902 
1903       yyssp = yyss + size - 1;
1904       yyvsp = yyvs + size - 1;
1905 #ifdef YYLSP_NEEDED
1906       yylsp = yyls + size - 1;
1907 #endif
1908 
1909 #if YYDEBUG != 0
1910       if (yydebug)
1911         fprintf(stderr, "Stack size increased to %d\n", yystacksize);
1912 #endif
1913 
1914       if (yyssp >= yyss + yystacksize - 1)
1915         YYABORT;
1916     }
1917 
1918 #if YYDEBUG != 0
1919   if (yydebug)
1920     fprintf(stderr, "Entering state %d\n", yystate);
1921 #endif
1922 
1923   goto yybackup;
1924  yybackup:
1925 
1926 /* Do appropriate processing given the current state.  */
1927 /* Read a lookahead token if we need one and don't already have one.  */
1928 /* yyresume: */
1929 
1930   /* First try to decide what to do without reference to lookahead token.  */
1931 
1932   yyn = yypact[yystate];
1933   if (yyn == YYFLAG)
1934     goto yydefault;
1935 
1936   /* Not known => get a lookahead token if don't already have one.  */
1937 
1938   /* yychar is either YYEMPTY or YYEOF
1939      or a valid token in external form.  */
1940 
1941   if (yychar == YYEMPTY)
1942     {
1943 #if YYDEBUG != 0
1944       if (yydebug)
1945         fprintf(stderr, "Reading a token: ");
1946 #endif
1947       yychar = YYLEX;
1948     }
1949 
1950   /* Convert token to internal form (in yychar1) for indexing tables with */
1951 
1952   if (yychar <= 0)              /* This means end of input. */
1953     {
1954       yychar1 = 0;
1955       yychar = YYEOF;           /* Don't call YYLEX any more */
1956 
1957 #if YYDEBUG != 0
1958       if (yydebug)
1959         fprintf(stderr, "Now at end of input.\n");
1960 #endif
1961     }
1962   else
1963     {
1964       yychar1 = YYTRANSLATE(yychar);
1965 
1966 #if YYDEBUG != 0
1967       if (yydebug)
1968         {
1969           fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
1970           /* Give the individual parser a way to print the precise meaning
1971              of a token, for further debugging info.  */
1972 #ifdef YYPRINT
1973           YYPRINT (stderr, yychar, yylval);
1974 #endif
1975           fprintf (stderr, ")\n");
1976         }
1977 #endif
1978     }
1979 
1980   yyn += yychar1;
1981   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
1982     goto yydefault;
1983 
1984   yyn = yytable[yyn];
1985 
1986   /* yyn is what to do for this token type in this state.
1987      Negative => reduce, -yyn is rule number.
1988      Positive => shift, yyn is new state.
1989        New state is final state => don't bother to shift,
1990        just return success.
1991      0, or most negative number => error.  */
1992 
1993   if (yyn < 0)
1994     {
1995       if (yyn == YYFLAG)
1996         goto yyerrlab;
1997       yyn = -yyn;
1998       goto yyreduce;
1999     }
2000   else if (yyn == 0)
2001     goto yyerrlab;
2002 
2003   if (yyn == YYFINAL)
2004     YYACCEPT;
2005 
2006   /* Shift the lookahead token.  */
2007 
2008 #if YYDEBUG != 0
2009   if (yydebug)
2010     fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
2011 #endif
2012 
2013   /* Discard the token being shifted unless it is eof.  */
2014   if (yychar != YYEOF)
2015     yychar = YYEMPTY;
2016 
2017   *++yyvsp = yylval;
2018 #ifdef YYLSP_NEEDED
2019   *++yylsp = yylloc;
2020 #endif
2021 
2022   /* count tokens shifted since error; after three, turn off error status.  */
2023   if (yyerrstatus) yyerrstatus--;
2024 
2025   yystate = yyn;
2026   goto yynewstate;
2027 
2028 /* Do the default action for the current state.  */
2029 yydefault:
2030 
2031   yyn = yydefact[yystate];
2032   if (yyn == 0)
2033     goto yyerrlab;
2034 
2035 /* Do a reduction.  yyn is the number of a rule to reduce with.  */
2036 yyreduce:
2037   yylen = yyr2[yyn];
2038   if (yylen > 0)
2039     yyval = yyvsp[1-yylen]; /* implement default value of the action */
2040 
2041 #if YYDEBUG != 0
2042   if (yydebug)
2043     {
2044       int i;
2045 
2046       fprintf (stderr, "Reducing via rule %d (line %d), ",
2047                yyn, yyrline[yyn]);
2048 
2049       /* Print the symbols being reduced, and their result.  */
2050       for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
2051         fprintf (stderr, "%s ", yytname[yyrhs[i]]);
2052       fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
2053     }
2054 #endif
2055 
2056 
2057   switch (yyn) {
2058 
2059 case 1:
2060 #line 385 "rpsl.y"
2061 {
2062    YYACCEPT;
2063 ;
2064     break;}
2065 case 2:
2066 #line 388 "rpsl.y"
2067 {
2068    YYACCEPT;
2069 ;
2070     break;}
2071 case 3:
2072 #line 391 "rpsl.y"
2073 {
2074    handle_object_error("Error: syntax error\n");
2075    YYABORT;
2076 ;
2077     break;}
2078 case 4:
2079 #line 395 "rpsl.y"
2080 { // end of file
2081    YYACCEPT;
2082 ;
2083     break;}
2084 case 5:
2085 #line 398 "rpsl.y"
2086 { // end of file
2087    YYACCEPT;
2088 ;
2089     break;}
2090 case 6:
2091 #line 401 "rpsl.y"
2092 { // end of file
2093    handle_object_error("Error: syntax error\n");
2094    YYABORT;
2095 ;
2096     break;}
2097 case 7:
2098 #line 405 "rpsl.y"
2099 { // end of file
2100    YYABORT;
2101 ;
2102     break;}
2103 case 8:
2104 #line 410 "rpsl.y"
2105 {
2106    (*current_object) += yyvsp[0].attr;
2107 ;
2108     break;}
2109 case 9:
2110 #line 413 "rpsl.y"
2111 {
2112    (*current_object) += yyvsp[0].attr;
2113 ;
2114     break;}
2115 case 39:
2116 #line 447 "rpsl.y"
2117 { // the current line started w/ non-attribute
2118    yyval.attr = changeCurrentAttr(new Attr);
2119    handle_error("Error: syntax error\n");
2120 ;
2121     break;}
2122 case 40:
2123 #line 451 "rpsl.y"
2124 {
2125    yyval.attr = changeCurrentAttr(new Attr);
2126    handle_error("Error: syntax error\n");
2127    yyerrok;
2128 ;
2129     break;}
2130 case 41:
2131 #line 460 "rpsl.y"
2132 {
2133    free(yyvsp[-2].string);
2134    yyval.attr = yyvsp[-3].attr;
2135 ;
2136     break;}
2137 case 42:
2138 #line 464 "rpsl.y"
2139 {
2140    free(yyvsp[-1].string);
2141    yyval.attr = yyvsp[-2].attr;
2142 ;
2143     break;}
2144 case 43:
2145 #line 468 "rpsl.y"
2146 {
2147    handle_error("Error: \"changed: <email> <YYYYMMDD>\" expected\n");
2148    yyerrok;
2149 ;
2150     break;}
2151 case 44:
2152 #line 475 "rpsl.y"
2153 {
2154   if(yyschema.validNICHandle(yyvsp[-1].string)){
2155     free(yyvsp[-1].string);
2156     yyval.attr = yyvsp[-2].attr;
2157   }else{
2158     free(yyvsp[-1].string);
2159     handle_error("Error: Invalid NIC handle\n");
2160     yyerrok;
2161   }
2162 ;
2163     break;}
2164 case 45:
2165 #line 485 "rpsl.y"
2166 {
2167   handle_error("Error: \"%s: <nic-handle>\" expected\n",yyvsp[-2].attr->type->name());
2168   yyerrok; 
2169 ;
2170     break;}
2171 case 46:
2172 #line 490 "rpsl.y"
2173 {
2174    yyval.attr = yyvsp[-2].attr;
2175 ;
2176     break;}
2177 case 47:
2178 #line 493 "rpsl.y"
2179 {
2180    free(yyvsp[-1].string);
2181    yyval.attr = yyvsp[-3].attr;
2182 ;
2183     break;}
2184 case 48:
2185 #line 497 "rpsl.y"
2186 {
2187    free(yyvsp[-1].string);
2188    yyval.attr = yyvsp[-3].attr; 
2189 ;
2190     break;}
2191 case 49:
2192 #line 501 "rpsl.y"
2193 {
2194    free(yyvsp[-1].string);
2195    yyval.attr = yyvsp[-2].attr;
2196 ;
2197     break;}
2198 case 50:
2199 #line 505 "rpsl.y"
2200 {
2201    handle_error("Error: \"auth: MAIL-FROM <regexp>\""
2202                 ", \"auth: NONE\", \"auth: CRYPT-PW <cryptedpaswd>\""
2203                 "  or \"auth: PGPKEY-<pgpid>\"  expected\n");
2204    yyerrok;
2205    
2206 ;
2207     break;}
2208 case 51:
2209 #line 516 "rpsl.y"
2210 {
2211   yyval.attr = yyvsp[-3].attr;
2212 ;
2213     break;}
2214 case 52:
2215 #line 519 "rpsl.y"
2216 {
2217   yyval.attr = yyvsp[-3].attr;
2218 ;
2219     break;}
2220 case 53:
2221 #line 522 "rpsl.y"
2222 {
2223   yyval.attr = yyvsp[-3].attr;
2224 ;
2225     break;}
2226 case 54:
2227 #line 525 "rpsl.y"
2228 {
2229   yyval.attr = yyvsp[-3].attr;
2230 ;
2231     break;}
2232 case 55:
2233 #line 528 "rpsl.y"
2234 {
2235   yyval.attr = yyvsp[-3].attr;
2236 ;
2237     break;}
2238 case 56:
2239 #line 531 "rpsl.y"
2240 {
2241    handle_error("Error: \"status\" attribute contains invalid keywords\n");
2242    yyerrok;  
2243 ;
2244     break;}
2245 case 57:
2246 #line 537 "rpsl.y"
2247 {
2248   yyval.attr = yyvsp[-3].attr;
2249 ;
2250     break;}
2251 case 58:
2252 #line 540 "rpsl.y"
2253 {
2254   yyval.attr = yyvsp[-7].attr; 
2255 ;
2256     break;}
2257 case 59:
2258 #line 543 "rpsl.y"
2259 {
2260   yyval.attr = yyvsp[-6].attr; 
2261 ;
2262     break;}
2263 case 60:
2264 #line 546 "rpsl.y"
2265 {
2266   yyval.attr = yyvsp[-10].attr; 
2267 ;
2268     break;}
2269 case 61:
2270 #line 549 "rpsl.y"
2271 {
2272    handle_error("Error: intn'l phone number expected (with a preceding '+')\n");
2273    yyerrok;
2274 ;
2275     break;}
2276 case 62:
2277 #line 555 "rpsl.y"
2278 {
2279   //sprintf($$, "%i", $1);
2280   yyval.string = strdup("phone"); // well, sprintf($$, "%i", $1) didn't work
2281 ;
2282     break;}
2283 case 63:
2284 #line 559 "rpsl.y"
2285 {
2286   yyval.string = yyvsp[-1].string;
2287 ;
2288     break;}
2289 case 64:
2290 #line 562 "rpsl.y"
2291 {
2292   yyval.string = yyvsp[-2].string;
2293 ;
2294     break;}
2295 case 65:
2296 #line 565 "rpsl.y"
2297 {
2298   yyval.string = yyvsp[-2].string;
2299 ;
2300     break;}
2301 case 66:
2302 #line 570 "rpsl.y"
2303 {
2304   if(yyschema.searchSource(yyvsp[-1].string)){
2305     free(yyvsp[-1].string);
2306     yyval.attr = yyvsp[-2].attr;
2307   }else{
2308     free(yyvsp[-1].string);
2309     handle_error("Error: No such source\n");
2310   }
2311 ;
2312     break;}
2313 case 67:
2314 #line 579 "rpsl.y"
2315 {
2316    handle_error("Error: invalid source attribute\n");
2317    yyerrok;
2318 ;
2319     break;}
2320 case 68:
2321 #line 584 "rpsl.y"
2322 {
2323    yyval.attr = yyvsp[-3].attr;
2324 ;
2325     break;}
2326 case 69:
2327 #line 587 "rpsl.y"
2328 {
2329    yyval.attr = yyvsp[-4].attr;
2330 ;
2331     break;}
2332 case 70:
2333 #line 590 "rpsl.y"
2334 {
2335    yyval.attr = yyvsp[-3].attr;
2336 ;
2337     break;}
2338 case 71:
2339 #line 593 "rpsl.y"
2340 {
2341    yyval.attr = yyvsp[-4].attr;
2342 ;
2343     break;}
2344 case 72:
2345 #line 596 "rpsl.y"
2346 {
2347    yyval.attr = yyvsp[-3].attr;
2348 ;
2349     break;}
2350 case 73:
2351 #line 599 "rpsl.y"
2352 {
2353    yyval.attr = yyvsp[-4].attr;
2354 ;
2355     break;}
2356 case 74:
2357 #line 602 "rpsl.y"
2358 {
2359    yyval.attr = yyvsp[-3].attr;
2360 ;
2361     break;}
2362 case 75:
2363 #line 605 "rpsl.y"
2364 {
2365    yyval.attr = yyvsp[-4].attr;
2366 ;
2367     break;}
2368 case 76:
2369 #line 608 "rpsl.y"
2370 {
2371    handle_error("Error: invalid refer attribute\n");
2372    yyerrok;
2373 ;
2374     break;}
2375 case 77:
2376 #line 613 "rpsl.y"
2377 {
2378   if(yyschema.searchCountry(yyvsp[-1].string)){
2379     free(yyvsp[-1].string);
2380     yyval.attr = yyvsp[-2].attr;
2381   }else{
2382     free(yyvsp[-1].string);
2383     handle_error("Error: No such country\n");
2384   }
2385 ;
2386     break;}
2387 case 78:
2388 #line 622 "rpsl.y"
2389 {
2390    handle_error("Error: invalid country attribute\n");
2391    yyerrok;
2392 ;
2393     break;}
2394 case 79:
2395 #line 627 "rpsl.y"
2396 {
2397   yyval.attr = yyvsp[-3].attr;
2398 ;
2399     break;}
2400 case 80:
2401 #line 630 "rpsl.y"
2402 {
2403   yyval.attr = yyvsp[-3].attr;
2404 ;
2405     break;}
2406 case 81:
2407 #line 633 "rpsl.y"
2408 {
2409   yyval.attr = yyvsp[-3].attr;
2410 ;
2411     break;}
2412 case 82:
2413 #line 636 "rpsl.y"
2414 {
2415   yyval.attr = yyvsp[-3].attr;
2416 ;
2417     break;}
2418 case 83:
2419 #line 639 "rpsl.y"
2420 {
2421    handle_error("Error: invalid %s attribute\n",yyvsp[-2].attr->type->name());
2422    yyerrok;
2423 ;
2424     break;}
2425 case 84:
2426 #line 644 "rpsl.y"
2427 {
2428   yyval.string = strdup(yyvsp[0].string);
2429 ;
2430     break;}
2431 case 85:
2432 #line 647 "rpsl.y"
2433 {
2434   yyval.string = strdup(yyvsp[0].sid);
2435 ;
2436     break;}
2437 case 86:
2438 #line 650 "rpsl.y"
2439 {
2440   yyval.string = strdup("and");
2441 ;
2442     break;}
2443 case 87:
2444 #line 653 "rpsl.y"
2445 {
2446   yyval.string = strdup("or");
2447 ;
2448     break;}
2449 case 88:
2450 #line 656 "rpsl.y"
2451 {
2452   yyval.string = strdup(yyvsp[0].string);
2453 ;
2454     break;}
2455 case 89:
2456 #line 659 "rpsl.y"
2457 {
2458   yyval.string = strdup(yyvsp[0].sid);
2459 ;
2460     break;}
2461 case 90:
2462 #line 662 "rpsl.y"
2463 {
2464   yyval.string = strdup("and");
2465 ;
2466     break;}
2467 case 91:
2468 #line 665 "rpsl.y"
2469 {
2470   yyval.string = strdup("or");
2471 ;
2472     break;}
2473 case 92:
2474 #line 668 "rpsl.y"
2475 {
2476   yyval.string = strdup(yyvsp[0].string);
2477 ;
2478     break;}
2479 case 93:
2480 #line 671 "rpsl.y"
2481 {
2482   yyval.string = strdup("or");
2483 ;
2484     break;}
2485 case 94:
2486 #line 674 "rpsl.y"
2487 {
2488   yyval.string = strdup("and");
2489 ;
2490     break;}
2491 case 95:
2492 #line 677 "rpsl.y"
2493 {
2494   yyval.string = strdup(yyvsp[0].sid);
2495 ;
2496     break;}
2497 case 96:
2498 #line 680 "rpsl.y"
2499 {
2500   yyval.string = strdup(yyvsp[0].string);
2501 ;
2502     break;}
2503 case 97:
2504 #line 683 "rpsl.y"
2505 {
2506   yyval.string = strdup(yyvsp[0].sid);
2507 ;
2508     break;}
2509 case 98:
2510 #line 686 "rpsl.y"
2511 {
2512   yyval.string = strdup("or");
2513 ;
2514     break;}
2515 case 99:
2516 #line 689 "rpsl.y"
2517 {
2518   yyval.string = strdup("and");
2519 ;
2520     break;}
2521 case 100:
2522 #line 692 "rpsl.y"
2523 {
2524   yyval.string = strdup(yyvsp[0].string);
2525 ;
2526     break;}
2527 case 101:
2528 #line 695 "rpsl.y"
2529 {
2530   yyval.string = strdup(yyvsp[0].sid);
2531 ;
2532     break;}
2533 case 102:
2534 #line 698 "rpsl.y"
2535 {
2536   yyval.string = strdup("or");
2537 ;
2538     break;}
2539 case 103:
2540 #line 701 "rpsl.y"
2541 {
2542   yyval.string = strdup("and");
2543 ;
2544     break;}
2545 case 104:
2546 #line 704 "rpsl.y"
2547 {
2548   yyval.string = strdup(yyvsp[-1].string);
2549 ;
2550     break;}
2551 case 105:
2552 #line 707 "rpsl.y"
2553 {
2554   yyval.string = strdup(yyvsp[-1].string);
2555 ;
2556     break;}
2557 case 106:
2558 #line 710 "rpsl.y"
2559 {
2560   yyval.string = strdup(yyvsp[-1].string);
2561 ;
2562     break;}
2563 case 107:
2564 #line 713 "rpsl.y"
2565 {
2566   yyval.string = strdup(yyvsp[-1].string);
2567 ;
2568     break;}
2569 case 108:
2570 #line 716 "rpsl.y"
2571 {
2572   yyval.string = strdup(yyvsp[-1].string);
2573 ;
2574     break;}
2575 case 109:
2576 #line 719 "rpsl.y"
2577 {
2578   yyval.string = strdup(yyvsp[-1].string);
2579 ;
2580     break;}
2581 case 110:
2582 #line 722 "rpsl.y"
2583 {
2584   yyval.string = strdup(yyvsp[-1].string);
2585 ;
2586     break;}
2587 case 111:
2588 #line 725 "rpsl.y"
2589 {
2590   yyval.string = strdup(yyvsp[-1].string);
2591 ;
2592     break;}
2593 case 112:
2594 #line 732 "rpsl.y"
2595 {
2596    char *start = strchr(yyvsp[-1].attr->object->contents + yyvsp[-1].attr->offset, ':') + 1;
2597    int len = yyvsp[-1].attr->object->contents + yyvsp[-1].attr->offset + yyvsp[-1].attr->len - start;
2598    ItemFREETEXT *ft = new ItemFREETEXT(start, len);
2599    ItemList *il = new ItemList;
2600    il->append(ft);
2601    
2602    yyval.attr = changeCurrentAttr(new AttrGeneric(yyvsp[-1].attr->type, il));
2603 ;
2604     break;}
2605 case 113:
2606 #line 743 "rpsl.y"
2607 {
2608    if (!yyvsp[-2].attr->type->subsyntax()->validate(yyvsp[-1].list)) {
2609       handle_error("Error: argument to %s should be %s.\n",
2610               yyvsp[-2].attr->type->name(), yyvsp[-2].attr->type->subsyntax()->name());
2611       delete yyvsp[-1].list;
2612       yyval.attr = changeCurrentAttr(new AttrGeneric(yyvsp[-2].attr->type, NULL));
2613    } else 
2614       yyval.attr = changeCurrentAttr(new AttrGeneric(yyvsp[-2].attr->type, yyvsp[-1].list));
2615 ;
2616     break;}
2617 case 114:
2618 #line 752 "rpsl.y"
2619 {
2620    yyval.attr = yyvsp[-2].attr;
2621    handle_error("Error: argument to %s should be %s.\n",
2622            yyvsp[-2].attr->type->name(), yyvsp[-2].attr->type->subsyntax()->name());
2623    yyerrok;
2624 ;
2625     break;}
2626 case 115:
2627 #line 760 "rpsl.y"
2628 {
2629    yyval.list = new ItemList;
2630 ;
2631     break;}
2632 case 117:
2633 #line 766 "rpsl.y"
2634 {       
2635    yyval.list = new ItemList;
2636    yyval.list->append(yyvsp[0].item);
2637 ;
2638     break;}
2639 case 118:
2640 #line 770 "rpsl.y"
2641 {
2642    yyval.list = yyvsp[-2].list;
2643    yyval.list->append(yyvsp[0].item);
2644 ;
2645     break;}
2646 case 119:
2647 #line 776 "rpsl.y"
2648 {
2649    yyval.attr = changeCurrentAttr(new AttrGeneric(yyvsp[-2].attr->type, yyvsp[-1].list));
2650 ;
2651     break;}
2652 case 120:
2653 #line 779 "rpsl.y"
2654 {
2655    yyval.attr = yyvsp[-2].attr;
2656    handle_error("Error: argument to %s should be blob sequence.\n",
2657            yyvsp[-2].attr->type->name());
2658    yyerrok;
2659 ;
2660     break;}
2661 case 121:
2662 #line 787 "rpsl.y"
2663 {       
2664    yyval.list = new ItemList;
2665    yyval.list->append(yyvsp[0].item);
2666 ;
2667     break;}
2668 case 122:
2669 #line 791 "rpsl.y"
2670 {
2671    yyval.list = yyvsp[-1].list;
2672    yyval.list->append(yyvsp[0].item);
2673 ;
2674     break;}
2675 case 123:
2676 #line 797 "rpsl.y"
2677 {
2678    yyval.item = yyvsp[0].item;
2679 ;
2680     break;}
2681 case 124:
2682 #line 800 "rpsl.y"
2683 {
2684    yyval.item = new ItemRange(yyvsp[-2].item, yyvsp[0].item);
2685 ;
2686     break;}
2687 case 125:
2688 #line 805 "rpsl.y"
2689 {
2690    yyval.item = new ItemASNO(yyvsp[0].i);
2691 ;
2692     break;}
2693 case 126:
2694 #line 808 "rpsl.y"
2695 {
2696    yyval.item = new ItemINT(yyvsp[0].i);
2697 ;
2698     break;}
2699 case 127:
2700 #line 811 "rpsl.y"
2701 {
2702    yyval.item = new ItemREAL(yyvsp[0].real);
2703 ;
2704     break;}
2705 case 128:
2706 #line 814 "rpsl.y"
2707 {
2708    yyval.item = new ItemSTRING(yyvsp[0].string);
2709 ;
2710     break;}
2711 case 129:
2712 #line 817 "rpsl.y"
2713 {
2714    yyval.item = new ItemTimeStamp(yyvsp[0].time);
2715 ;
2716     break;}
2717 case 130:
2718 #line 820 "rpsl.y"
2719 {
2720    yyval.item = new ItemIPV4(yyvsp[0].ip);
2721 ;
2722     break;}
2723 case 131:
2724 #line 823 "rpsl.y"
2725 {
2726    yyval.item = new ItemPRFXV4(yyvsp[0].prfx);
2727 ;
2728     break;}
2729 case 132:
2730 #line 826 "rpsl.y"
2731 {
2732    yyval.item = new ItemPRFXV6(yyvsp[0].string);
2733 ;
2734     break;}
2735 case 133:
2736 #line 829 "rpsl.y"
2737 {
2738    yyval.item = new ItemPRFXV4Range(yyvsp[0].prfxrng);
2739 ;
2740     break;}
2741 case 134:
2742 #line 832 "rpsl.y"
2743 {
2744    yyval.item = new ItemConnection(yyvsp[-2].ip, yyvsp[0].i);
2745 ;
2746     break;}
2747 case 135:
2748 #line 835 "rpsl.y"
2749 {
2750    yyval.item = new ItemConnection(yyvsp[-4].ip, yyvsp[-2].i, yyvsp[0].i);
2751 ;
2752     break;}
2753 case 136:
2754 #line 838 "rpsl.y"
2755 {
2756    yyval.item = new ItemConnection(yyvsp[-2].sid, yyvsp[0].i);
2757 ;
2758     break;}
2759 case 137:
2760 #line 841 "rpsl.y"
2761 {
2762    yyval.item = new ItemConnection(yyvsp[-4].sid, yyvsp[-2].i, yyvsp[0].i);
2763 ;
2764     break;}
2765 case 138:
2766 #line 844 "rpsl.y"
2767 {
2768    yyval.item = new ItemASNAME(yyvsp[0].sid);
2769 ;
2770     break;}
2771 case 139:
2772 #line 847 "rpsl.y"
2773 {
2774    yyval.item = new ItemRSNAME(yyvsp[0].sid);
2775 ;
2776     break;}
2777 case 140:
2778 #line 850 "rpsl.y"
2779 {
2780    yyval.item = new ItemRTRSNAME(yyvsp[0].sid);
2781 ;
2782     break;}
2783 case 141:
2784 #line 853 "rpsl.y"
2785 {
2786    yyval.item = new ItemPRNGNAME(yyvsp[0].sid);
2787 ;
2788     break;}
2789 case 142:
2790 #line 856 "rpsl.y"
2791 {
2792    yyval.item = new ItemFLTRNAME(yyvsp[0].sid);
2793 ;
2794     break;}
2795 case 143:
2796 #line 859 "rpsl.y"
2797 {
2798    yyval.item = new ItemBOOLEAN(yyvsp[0].i);
2799 ;
2800     break;}
2801 case 144:
2802 #line 862 "rpsl.y"
2803 {
2804    yyval.item = new ItemWORD(yyvsp[0].string);
2805 ;
2806     break;}
2807 case 145:
2808 #line 865 "rpsl.y"
2809 {
2810    yyval.item = new ItemWORD(yyvsp[0].string);
2811 ;
2812     break;}
2813 case 146:
2814 #line 868 "rpsl.y"
2815 {
2816    yyval.item = new ItemDNS(yyvsp[0].sid);
2817 ;
2818     break;}
2819 case 147:
2820 #line 871 "rpsl.y"
2821 {
2822    yyval.item = new ItemEMAIL(yyvsp[0].string);
2823 ;
2824     break;}
2825 case 148:
2826 #line 874 "rpsl.y"
2827 {
2828    yyval.item = new ItemKEYCRTNAME(yyvsp[0].string);
2829 ;
2830     break;}
2831 case 149:
2832 #line 877 "rpsl.y"
2833 {
2834    yyval.item = new ItemBLOB(yyvsp[0].string);
2835 ;
2836     break;}
2837 case 150:
2838 #line 880 "rpsl.y"
2839 {
2840    yyval.item = yyvsp[-1].list;
2841 ;
2842     break;}
2843 case 151:
2844 #line 883 "rpsl.y"
2845 {
2846    yyval.item = new ItemFilter(yyvsp[-1].filter);
2847 ;
2848     break;}
2849 case 152:
2850 #line 888 "rpsl.y"
2851 {
2852    yyval.string = yyvsp[0].string;
2853 ;
2854     break;}
2855 case 153:
2856 #line 891 "rpsl.y"
2857 {
2858    char buffer[64];
2859    sprintf(buffer, "AS%d", yyvsp[0].i);
2860    yyval.string = strdup(buffer);
2861 ;
2862     break;}
2863 case 154:
2864 #line 896 "rpsl.y"
2865 {
2866    yyval.string = strdup(yyvsp[0].sid);
2867 ;
2868     break;}
2869 case 155:
2870 #line 899 "rpsl.y"
2871 {
2872    yyval.string = strdup(yyvsp[0].sid);
2873 ;
2874     break;}
2875 case 156:
2876 #line 902 "rpsl.y"
2877 {
2878    yyval.string = strdup(yyvsp[0].sid);
2879 ;
2880     break;}
2881 case 157:
2882 #line 905 "rpsl.y"
2883 {
2884    yyval.string = strdup(yyvsp[0].sid);
2885 ;
2886     break;}
2887 case 158:
2888 #line 908 "rpsl.y"
2889 {
2890    yyval.string = strdup(yyvsp[0].sid);
2891 ;
2892     break;}
2893 case 159:
2894 #line 911 "rpsl.y"
2895 {
2896    yyval.string = strdup(yyvsp[0].string);
2897 ;
2898     break;}
2899 case 160:
2900 #line 914 "rpsl.y"
2901 {
2902    if (yyvsp[0].i)
2903       yyval.string = strdup("true");
2904    else
2905       yyval.string = strdup("false");
2906 ;
2907     break;}
2908 case 174:
2909 #line 935 "rpsl.y"
2910 {
2911    yyval.string = strdup("true");
2912 ;
2913     break;}
2914 case 175:
2915 #line 938 "rpsl.y"
2916 {
2917    yyval.string = strdup("false");
2918 ;
2919     break;}
2920 case 176:
2921 #line 941 "rpsl.y"
2922 {
2923    yyval.string = strdup("action");
2924 ;
2925     break;}
2926 case 177:
2927 #line 944 "rpsl.y"
2928 {
2929    yyval.string = strdup("accept");
2930 ;
2931     break;}
2932 case 178:
2933 #line 947 "rpsl.y"
2934 {
2935    yyval.string = strdup("announce");
2936 ;
2937     break;}
2938 case 179:
2939 #line 950 "rpsl.y"
2940 {
2941    yyval.string = strdup("from");
2942 ;
2943     break;}
2944 case 180:
2945 #line 953 "rpsl.y"
2946 {
2947    yyval.string = strdup("to");
2948 ;
2949     break;}
2950 case 181:
2951 #line 956 "rpsl.y"
2952 {
2953    yyval.string = strdup("at");
2954 ;
2955     break;}
2956 case 182:
2957 #line 959 "rpsl.y"
2958 {
2959    yyval.string = strdup("any");
2960 ;
2961     break;}
2962 case 183:
2963 #line 962 "rpsl.y"
2964 {
2965    yyval.string = strdup("refine");
2966 ;
2967     break;}
2968 case 184:
2969 #line 965 "rpsl.y"
2970 {
2971    yyval.string = strdup("except");
2972 ;
2973     break;}
2974 case 185:
2975 #line 968 "rpsl.y"
2976 {
2977    yyval.string = strdup("static");
2978 ;
2979     break;}
2980 case 186:
2981 #line 971 "rpsl.y"
2982 {
2983    yyval.string = strdup("networks");
2984 ;
2985     break;}
2986 case 187:
2987 #line 974 "rpsl.y"
2988 {
2989    yyval.string = strdup("masklen");
2990 ;
2991     break;}
2992 case 188:
2993 #line 977 "rpsl.y"
2994 {
2995    yyval.string = strdup("union");
2996 ;
2997     break;}
2998 case 189:
2999 #line 980 "rpsl.y"
3000 {
3001    yyval.string = strdup("range");
3002 ;
3003     break;}
3004 case 190:
3005 #line 983 "rpsl.y"
3006 {
3007    yyval.string = strdup("list");
3008 ;
3009     break;}
3010 case 191:
3011 #line 986 "rpsl.y"
3012 {
3013    yyval.string = strdup("of");
3014 ;
3015     break;}
3016 case 192:
3017 #line 989 "rpsl.y"
3018 {
3019    yyval.string = strdup("operator");
3020 ;
3021     break;}
3022 case 193:
3023 #line 992 "rpsl.y"
3024 {
3025    yyval.string = strdup("syntax");
3026 ;
3027     break;}
3028 case 194:
3029 #line 995 "rpsl.y"
3030 {
3031    yyval.string = strdup("special");
3032 ;
3033     break;}
3034 case 195:
3035 #line 998 "rpsl.y"
3036 {
3037    yyval.string = strdup("optional");
3038 ;
3039     break;}
3040 case 196:
3041 #line 1001 "rpsl.y"
3042 {
3043    yyval.string = strdup("mandatory");
3044 ;
3045     break;}
3046 case 197:
3047 #line 1004 "rpsl.y"
3048 {
3049    yyval.string = strdup("internal");
3050 ;
3051     break;}
3052 case 198:
3053 #line 1007 "rpsl.y"
3054 {
3055    yyval.string = strdup("deleted");
3056 ;
3057     break;}
3058 case 199:
3059 #line 1010 "rpsl.y"
3060 {
3061    yyval.string = strdup("singlevalued");
3062 ;
3063     break;}
3064 case 200:
3065 #line 1013 "rpsl.y"
3066 {
3067    yyval.string = strdup("generated");
3068 ;
3069     break;}
3070 case 201:
3071 #line 1016 "rpsl.y"
3072 {
3073    yyval.string = strdup("multivalued");
3074 ;
3075     break;}
3076 case 202:
3077 #line 1019 "rpsl.y"
3078 {
3079    yyval.string = strdup("lookup");
3080 ;
3081     break;}
3082 case 203:
3083 #line 1022 "rpsl.y"
3084 {
3085    yyval.string = strdup("key");
3086 ;
3087     break;}
3088 case 204:
3089 #line 1025 "rpsl.y"
3090 {
3091    yyval.string = strdup("obsolete");
3092 ;
3093     break;}
3094 case 205:
3095 #line 1028 "rpsl.y"
3096 {
3097    yyval.string = strdup("peeras");
3098 ;
3099     break;}
3100 case 206:
3101 #line 1031 "rpsl.y"
3102 {
3103    yyval.string = strdup("protocol");
3104 ;
3105     break;}
3106 case 207:
3107 #line 1034 "rpsl.y"
3108 {
3109    yyval.string = strdup("into");
3110 ;
3111     break;}
3112 case 208:
3113 #line 1037 "rpsl.y"
3114 {
3115    yyval.string = strdup("atomic");
3116 ;
3117     break;}
3118 case 209:
3119 #line 1040 "rpsl.y"
3120 {
3121    yyval.string = strdup("inbound");
3122 ;
3123     break;}
3124 case 210:
3125 #line 1043 "rpsl.y"
3126 {
3127    yyval.string = strdup("outbound");
3128 ;
3129     break;}
3130 case 211:
3131 #line 1048 "rpsl.y"
3132 {
3133    yyval.string = strdup("none");
3134 ;
3135     break;}
3136 case 212:
3137 #line 1052 "rpsl.y"
3138 {
3139    yyval.string = strdup("mail-from");
3140 ;
3141     break;}
3142 case 213:
3143 #line 1056 "rpsl.y"
3144 {
3145    yyval.string = strdup("crypt-pw");
3146 ;
3147     break;}
3148 case 214:
3149 #line 1060 "rpsl.y"
3150 {
3151    yyval.string = strdup("assigned");
3152 ;
3153     break;}
3154 case 215:
3155 #line 1064 "rpsl.y"
3156 {
3157    yyval.string = strdup("allocated");
3158 ;
3159     break;}
3160 case 216:
3161 #line 1068 "rpsl.y"
3162 {
3163    yyval.string = strdup("pi");
3164 ;
3165     break;}
3166 case 217:
3167 #line 1072 "rpsl.y"
3168 {
3169    yyval.string = strdup("pa");
3170 ;
3171     break;}
3172 case 218:
3173 #line 1076 "rpsl.y"
3174 {
3175    yyval.string = strdup("unspecified");
3176 ;
3177     break;}
3178 case 219:
3179 #line 1080 "rpsl.y"
3180 {
3181    yyval.string = strdup("ext");
3182 ;
3183     break;}
3184 case 220:
3185 #line 1084 "rpsl.y"
3186 {
3187    yyval.string = strdup("simple");
3188 ;
3189     break;}
3190 case 221:
3191 #line 1088 "rpsl.y"
3192 {
3193    yyval.string = strdup("ripe");
3194 ;
3195     break;}
3196 case 222:
3197 #line 1092 "rpsl.y"
3198 {
3199    yyval.string = strdup("internic");
3200 ;
3201     break;}
3202 case 223:
3203 #line 1096 "rpsl.y"
3204 {
3205    yyval.string = strdup("clientaddress");
3206 ;
3207     break;}
3208 case 224:
3209 #line 1105 "rpsl.y"
3210 {
3211    yyval.filter = new FilterASNAME(symbols.symID("AS-ANY"));
3212 ;
3213     break;}
3214 case 226:
3215 #line 1111 "rpsl.y"
3216 {
3217    yyval.filter = new FilterOR(yyvsp[-2].filter, yyvsp[0].filter);
3218 ;
3219     break;}
3220 case 228:
3221 #line 1117 "rpsl.y"
3222 {
3223    yyval.filter = new FilterAND(yyvsp[-2].filter, yyvsp[0].filter);
3224 ;
3225     break;}
3226 case 229:
3227 #line 1120 "rpsl.y"
3228 {
3229    yyval.filter = new FilterEXCEPT(yyvsp[-2].filter, yyvsp[0].filter);
3230 ;
3231     break;}
3232 case 231:
3233 #line 1126 "rpsl.y"
3234 {
3235    yyval.filter = yyvsp[-1].filter;
3236 ;
3237     break;}
3238 case 233:
3239 #line 1132 "rpsl.y"
3240 {
3241    yyval.filter = new FilterASNO(yyvsp[0].i);
3242 ;
3243     break;}
3244 case 234:
3245 #line 1135 "rpsl.y"
3246 {
3247    yyval.filter = new FilterASNAME(yyvsp[0].sid);
3248 ;
3249     break;}
3250 case 235:
3251 #line 1142 "rpsl.y"
3252 {
3253    yyval.filter = new FilterANY;
3254 ;
3255     break;}
3256 case 236:
3257 #line 1145 "rpsl.y"
3258 {
3259    yyval.filter = yyvsp[0].filter;
3260 ;
3261     break;}
3262 case 237:
3263 #line 1150 "rpsl.y"
3264 {
3265    yyval.filter = new FilterANY;
3266 ;
3267     break;}
3268 case 238:
3269 #line 1153 "rpsl.y"
3270 {
3271    yyval.filter = yyvsp[0].filter;
3272 ;
3273     break;}
3274 case 239:
3275 #line 1158 "rpsl.y"
3276 {
3277    yyval.filter = new FilterOR(yyvsp[-2].filter, yyvsp[0].filter);
3278 ;
3279     break;}
3280 case 241:
3281 #line 1164 "rpsl.y"
3282 {
3283    yyval.filter = new FilterAND(yyvsp[-2].filter, yyvsp[0].filter);
3284 ;
3285     break;}
3286 case 242:
3287 #line 1167 "rpsl.y"
3288 {
3289    yyval.filter = new FilterEXCEPT(yyvsp[-2].filter, yyvsp[0].filter);
3290 ;
3291     break;}
3292 case 244:
3293 #line 1173 "rpsl.y"
3294 {
3295    yyval.filter = yyvsp[-1].filter;
3296 ;
3297     break;}
3298 case 246:
3299 #line 1179 "rpsl.y"
3300 {
3301    yyval.filter = new FilterRouter(yyvsp[0].ip);
3302 ;
3303     break;}
3304 case 247:
3305 #line 1182 "rpsl.y"
3306 {
3307    yyval.filter = new FilterRouterName(yyvsp[0].sid);
3308 ;
3309     break;}
3310 case 248:
3311 #line 1185 "rpsl.y"
3312 {
3313    yyval.filter = new FilterRTRSNAME(yyvsp[0].sid);
3314 ;
3315     break;}
3316 case 249:
3317 #line 1192 "rpsl.y"
3318 {
3319    yyval.peering = new PolicyPeering(yyvsp[-2].filter, yyvsp[-1].filter, yyvsp[0].filter);
3320 ;
3321     break;}
3322 case 250:
3323 #line 1195 "rpsl.y"
3324 {
3325    yyval.peering = new PolicyPeering(yyvsp[0].sid);
3326 ;
3327     break;}
3328 case 251:
3329 #line 1202 "rpsl.y"
3330 {
3331    yyval.actionList = new PolicyActionList;
3332 ;
3333     break;}
3334 case 252:
3335 #line 1205 "rpsl.y"
3336 {
3337    yyval.actionList = yyvsp[0].actionList;
3338 ;
3339     break;}
3340 case 253:
3341 #line 1210 "rpsl.y"
3342 {
3343    yyval.actionList = new PolicyActionList;
3344    if (yyvsp[0].actionNode)
3345       yyval.actionList->append(yyvsp[0].actionNode);  
3346 ;
3347     break;}
3348 case 254:
3349 #line 1215 "rpsl.y"
3350 {
3351    yyval.actionList = yyvsp[-1].actionList;
3352    if (yyvsp[0].actionNode)
3353       yyval.actionList->append(yyvsp[0].actionNode);  
3354 ;
3355     break;}
3356 case 255:
3357 #line 1222 "rpsl.y"
3358 {
3359    const AttrMethod *mtd = searchMethod(yyvsp[-6].rp_attr, yyvsp[-4].string, yyvsp[-2].list);
3360    if (mtd)
3361       yyval.actionNode = new PolicyAction(yyvsp[-6].rp_attr, mtd, yyvsp[-2].list);
3362    else {
3363       delete yyvsp[-2].list;
3364       yyval.actionNode = NULL;
3365    }
3366    free(yyvsp[-4].string);
3367 ;
3368     break;}
3369 case 256:
3370 #line 1232 "rpsl.y"
3371 {
3372    ItemList *plist = new ItemList;
3373    plist->append(yyvsp[-1].item);
3374 
3375    const AttrMethod *mtd = searchMethod(yyvsp[-3].rp_attr, yyvsp[-2].string, plist);
3376    if (mtd)
3377       yyval.actionNode = new PolicyAction(yyvsp[-3].rp_attr, mtd, plist);
3378    else {
3379       delete plist;
3380       yyval.actionNode = NULL;
3381    }
3382    // Added by wlee
3383    free(yyvsp[-2].string);
3384 ;
3385     break;}
3386 case 257:
3387 #line 1246 "rpsl.y"
3388 {
3389    const AttrMethod *mtd = searchMethod(yyvsp[-4].rp_attr, "()", yyvsp[-2].list);
3390    if (mtd)
3391       yyval.actionNode = new PolicyAction(yyvsp[-4].rp_attr, mtd, yyvsp[-2].list);
3392    else {
3393       delete yyvsp[-2].list;
3394       yyval.actionNode = NULL;
3395    }
3396 ;
3397     break;}
3398 case 258:
3399 #line 1255 "rpsl.y"
3400 {
3401    const AttrMethod *mtd = searchMethod(yyvsp[-4].rp_attr, "[]", yyvsp[-2].list);
3402    if (mtd)
3403       yyval.actionNode = new PolicyAction(yyvsp[-4].rp_attr, mtd, yyvsp[-2].list);
3404    else {
3405       delete yyvsp[-2].list;
3406       yyval.actionNode = NULL;
3407    }
3408 ;
3409     break;}
3410 case 259:
3411 #line 1264 "rpsl.y"
3412 {
3413    yyval.actionNode = NULL;
3414 ;
3415     break;}
3416 case 260:
3417 #line 1271 "rpsl.y"
3418 {
3419    yyval.filter = new FilterOR(yyvsp[-2].filter, yyvsp[0].filter);
3420 ;
3421     break;}
3422 case 261:
3423 #line 1274 "rpsl.y"
3424 {
3425    yyval.filter = new FilterOR(yyvsp[-1].filter, yyvsp[0].filter);
3426 ;
3427     break;}
3428 case 263:
3429 #line 1280 "rpsl.y"
3430 {
3431    yyval.filter = new FilterAND(yyvsp[-2].filter, yyvsp[0].filter);
3432 ;
3433     break;}
3434 case 265:
3435 #line 1286 "rpsl.y"
3436 {
3437    yyval.filter = new FilterNOT(yyvsp[0].filter);
3438 ;
3439     break;}
3440 case 266:
3441 #line 1289 "rpsl.y"
3442 {
3443    yyval.filter = yyvsp[-1].filter;
3444 ;
3445     break;}
3446 case 268:
3447 #line 1295 "rpsl.y"
3448 {
3449    yyval.filter = new FilterANY;
3450 ;
3451     break;}
3452 case 269:
3453 #line 1298 "rpsl.y"
3454 {
3455    yyval.filter = new FilterASPath(yyvsp[-1].re);
3456 ;
3457     break;}
3458 case 270:
3459 #line 1301 "rpsl.y"
3460 {
3461    if (yyvsp[0].filter)
3462       yyval.filter = yyvsp[0].filter;
3463    else
3464       yyval.filter = new FilterNOT(new FilterANY);
3465 ;
3466     break;}
3467 case 271:
3468 #line 1307 "rpsl.y"
3469 {
3470    yyval.filter = new FilterFLTRNAME(yyvsp[0].sid);
3471 ;
3472     break;}
3473 case 273:
3474 #line 1313 "rpsl.y"
3475 {
3476    yyvsp[0].moreSpecOp->f1 = yyvsp[-1].filter;
3477    yyval.filter = yyvsp[0].moreSpecOp;
3478 ;
3479     break;}
3480 case 275:
3481 #line 1320 "rpsl.y"
3482 {
3483    yyval.filter = new FilterASNO(yyvsp[0].i);
3484 ;
3485     break;}
3486 case 276:
3487 #line 1323 "rpsl.y"
3488 {
3489    yyval.filter = new FilterPeerAS;
3490 ;
3491     break;}
3492 case 277:
3493 #line 1326 "rpsl.y"
3494 {
3495    yyval.filter = new FilterASNAME(yyvsp[0].sid);
3496 ;
3497     break;}
3498 case 278:
3499 #line 1329 "rpsl.y"
3500 {
3501    yyval.filter = new FilterRSNAME(yyvsp[0].sid);
3502 ;
3503     break;}
3504 case 279:
3505 #line 1332 "rpsl.y"
3506 { 
3507    yyval.filter = yyvsp[-1].filter; 
3508 ;
3509     break;}
3510 case 280:
3511 #line 1337 "rpsl.y"
3512 {
3513    yyval.filter = new FilterPRFXList;
3514 ;
3515     break;}
3516 case 282:
3517 #line 1343 "rpsl.y"
3518 {
3519    ((FilterPRFXList *) (yyval.filter = new FilterPRFXList))->add_high(*yyvsp[0].prfxrng);
3520    delete yyvsp[0].prfxrng;
3521 ;
3522     break;}
3523 case 283:
3524 #line 1347 "rpsl.y"
3525 {
3526    yyval.filter = yyvsp[-2].filter;
3527    ((FilterPRFXList *) (yyval.filter))->add_high(*yyvsp[0].prfxrng);
3528    delete yyvsp[0].prfxrng;
3529 ;
3530     break;}
3531 case 284:
3532 #line 1354 "rpsl.y"
3533 {
3534    yyval.prfxrng = yyvsp[0].prfx;
3535 ;
3536     break;}
3537 case 285:
3538 #line 1357 "rpsl.y"
3539 {
3540    yyval.prfxrng = yyvsp[0].prfxrng;
3541 ;
3542     break;}
3543 case 286:
3544 #line 1362 "rpsl.y"
3545 {
3546    yyval.re = new regexp_or(yyvsp[-2].re, yyvsp[0].re);
3547 ;
3548     break;}
3549 case 288:
3550 #line 1368 "rpsl.y"
3551 {
3552    yyval.re = new regexp_cat(yyvsp[-1].re, yyvsp[0].re);
3553 ;
3554     break;}
3555 case 290:
3556 #line 1374 "rpsl.y"
3557 {
3558    yyval.re = new regexp_star(yyvsp[-1].re);
3559 ;
3560     break;}
3561 case 291:
3562 #line 1377 "rpsl.y"
3563 {
3564    yyval.re = new regexp_question(yyvsp[-1].re);
3565 ;
3566     break;}
3567 case 292:
3568 #line 1380 "rpsl.y"
3569 {
3570    yyval.re = new regexp_plus(yyvsp[-1].re);
3571 ;
3572     break;}
3573 case 294:
3574 #line 1386 "rpsl.y"
3575 {
3576    yyval.re = new regexp_bol;
3577 ;
3578     break;}
3579 case 295:
3580 #line 1389 "rpsl.y"
3581 {
3582    yyval.re = new regexp_eol;
3583 ;
3584     break;}
3585 case 296:
3586 #line 1392 "rpsl.y"
3587 {
3588    yyval.re = yyvsp[-1].re;
3589 ;
3590     break;}
3591 case 298:
3592 #line 1398 "rpsl.y"
3593 {
3594    yyval.re = new regexp_symbol(yyvsp[0].i);
3595 ;
3596     break;}
3597 case 299:
3598 #line 1401 "rpsl.y"
3599 {
3600    yyval.re = new regexp_symbol(symbols.symID("PEERAS"));
3601 ;
3602     break;}
3603 case 300:
3604 #line 1404 "rpsl.y"
3605 {
3606    yyval.re = new regexp_symbol(yyvsp[0].sid);
3607 ;
3608     break;}
3609 case 301:
3610 #line 1407 "rpsl.y"
3611 {
3612    yyval.re = new regexp_symbol(regexp_symbol::MIN_AS, regexp_symbol::MAX_AS);
3613 ;
3614     break;}
3615 case 302:
3616 #line 1410 "rpsl.y"
3617 {
3618    yyval.re = yyvsp[-1].re;
3619 ;
3620     break;}
3621 case 303:
3622 #line 1413 "rpsl.y"
3623 {
3624    yyval.re = yyvsp[-1].re;
3625    ((regexp_symbol *) yyval.re)->complement();
3626 ;
3627     break;}
3628 case 304:
3629 #line 1419 "rpsl.y"
3630 {
3631    yyval.re = new regexp_symbol;
3632 ;
3633     break;}
3634 case 305:
3635 #line 1422 "rpsl.y"
3636 {
3637    ((regexp_symbol *) (yyval.re = yyvsp[-1].re))->add(yyvsp[0].i);
3638 ;
3639     break;}
3640 case 306:
3641 #line 1425 "rpsl.y"
3642 {
3643    ((regexp_symbol *) (yyval.re = yyvsp[-1].re))->add(symbols.symID("PEERAS"));
3644 ;
3645     break;}
3646 case 307:
3647 #line 1428 "rpsl.y"
3648 {
3649    ((regexp_symbol *) (yyval.re = yyvsp[-1].re))->add(regexp_symbol::MIN_AS, regexp_symbol::MAX_AS);
3650 ;
3651     break;}
3652 case 308:
3653 #line 1431 "rpsl.y"
3654 {
3655    ((regexp_symbol *) (yyval.re = yyvsp[-3].re))->add(yyvsp[-2].i, yyvsp[0].i);
3656 ;
3657     break;}
3658 case 309:
3659 #line 1434 "rpsl.y"
3660 {
3661    ((regexp_symbol *) (yyval.re = yyvsp[-1].re))->add(yyvsp[0].sid);
3662 ;
3663     break;}
3664 case 310:
3665 #line 1439 "rpsl.y"
3666 {
3667    const AttrMethod *mtd = searchMethod(yyvsp[-5].rp_attr, yyvsp[-3].string, yyvsp[-1].list);
3668    if (mtd)
3669       yyval.filter = new FilterRPAttribute(yyvsp[-5].rp_attr, mtd, yyvsp[-1].list);
3670    else {
3671       delete yyvsp[-1].list;
3672       yyval.filter = NULL;
3673    }
3674    free(yyvsp[-3].string);
3675 ;
3676     break;}
3677 case 311:
3678 #line 1449 "rpsl.y"
3679 {
3680    ItemList *plist = new ItemList;
3681    plist->append(yyvsp[0].item);
3682 
3683    const AttrMethod *mtd = searchMethod(yyvsp[-2].rp_attr, yyvsp[-1].string, plist);
3684    if (mtd)
3685       yyval.filter = new FilterRPAttribute(yyvsp[-2].rp_attr, mtd, plist);
3686    else {
3687       delete plist;
3688       yyval.filter = NULL;
3689    }
3690    // Added by wlee
3691    free(yyvsp[-1].string);
3692 ;
3693     break;}
3694 case 312:
3695 #line 1463 "rpsl.y"
3696 {
3697    const AttrMethod *mtd = searchMethod(yyvsp[-3].rp_attr, "()", yyvsp[-1].list);
3698    if (mtd)
3699       yyval.filter = new FilterRPAttribute(yyvsp[-3].rp_attr, mtd, yyvsp[-1].list);
3700    else {
3701       delete yyvsp[-1].list;
3702       yyval.filter = NULL;
3703    }
3704 ;
3705     break;}
3706 case 313:
3707 #line 1472 "rpsl.y"
3708 {
3709    const AttrMethod *mtd = searchMethod(yyvsp[-3].rp_attr, "[]", yyvsp[-1].list);
3710    if (mtd)
3711       yyval.filter = new FilterRPAttribute(yyvsp[-3].rp_attr, mtd, yyvsp[-1].list);
3712    else {
3713       delete yyvsp[-1].list;
3714       yyval.filter = NULL;
3715    }
3716 ;
3717     break;}
3718 case 314:
3719 #line 1485 "rpsl.y"
3720 {
3721    yyval.peeringActionList = new List<PolicyPeeringAction>;
3722    yyval.peeringActionList->append(new PolicyPeeringAction(yyvsp[-1].peering, yyvsp[0].actionList));
3723 ;
3724     break;}
3725 case 315:
3726 #line 1489 "rpsl.y"
3727 {
3728    yyval.peeringActionList = yyvsp[-3].peeringActionList;
3729    yyval.peeringActionList->append(new PolicyPeeringAction(yyvsp[-1].peering, yyvsp[0].actionList));
3730 ;
3731     break;}
3732 case 316:
3733 #line 1495 "rpsl.y"
3734 {
3735    yyval.peeringActionList = new List<PolicyPeeringAction>;
3736    yyval.peeringActionList->append(new PolicyPeeringAction(yyvsp[-1].peering, yyvsp[0].actionList));
3737 ;
3738     break;}
3739 case 317:
3740 #line 1499 "rpsl.y"
3741 {
3742    yyval.peeringActionList = yyvsp[-3].peeringActionList;
3743    yyval.peeringActionList->append(new PolicyPeeringAction(yyvsp[-1].peering, yyvsp[0].actionList));
3744 ;
3745     break;}
3746 case 318:
3747 #line 1507 "rpsl.y"
3748 {
3749    yyval.policyFactor = new PolicyFactor(yyvsp[-2].peeringActionList, yyvsp[0].filter);
3750 ;
3751     break;}
3752 case 319:
3753 #line 1512 "rpsl.y"
3754 {
3755    yyval.policyTerm = new PolicyTerm;
3756    yyval.policyTerm->append(yyvsp[-1].policyFactor);
3757 ;
3758     break;}
3759 case 320:
3760 #line 1516 "rpsl.y"
3761 {
3762    yyval.policyTerm = yyvsp[-2].policyTerm;
3763    yyval.policyTerm->append(yyvsp[-1].policyFactor);
3764 ;
3765     break;}
3766 case 321:
3767 #line 1522 "rpsl.y"
3768 {
3769    yyval.policyFactor = new PolicyFactor(yyvsp[-2].peeringActionList, yyvsp[0].filter);
3770 ;
3771     break;}
3772 case 322:
3773 #line 1527 "rpsl.y"
3774 {
3775    yyval.policyTerm = new PolicyTerm;
3776    yyval.policyTerm->append(yyvsp[-1].policyFactor);
3777 ;
3778     break;}
3779 case 323:
3780 #line 1531 "rpsl.y"
3781 {
3782    yyval.policyTerm = yyvsp[-2].policyTerm;
3783    yyval.policyTerm->append(yyvsp[-1].policyFactor);
3784 ;
3785     break;}
3786 case 324:
3787 #line 1539 "rpsl.y"
3788 {
3789    PolicyTerm *term = new PolicyTerm;
3790    term->append(yyvsp[-1].policyFactor);
3791    yyval.policyTerm = term;
3792 ;
3793     break;}
3794 case 325:
3795 #line 1544 "rpsl.y"
3796 {
3797    yyval.policyTerm = yyvsp[-1].policyTerm;
3798 ;
3799     break;}
3800 case 326:
3801 #line 1549 "rpsl.y"
3802 {
3803    PolicyTerm *term = new PolicyTerm;
3804    term->append(yyvsp[-1].policyFactor);
3805    yyval.policyTerm = term;
3806 ;
3807     break;}
3808 case 327:
3809 #line 1554 "rpsl.y"
3810 {
3811    yyval.policyTerm = yyvsp[-1].policyTerm;
3812 ;
3813     break;}
3814 case 328:
3815 #line 1561 "rpsl.y"
3816 {
3817    yyval.policyExpr = yyvsp[0].policyTerm;
3818 ;
3819     break;}
3820 case 329:
3821 #line 1564 "rpsl.y"
3822 {
3823    yyval.policyExpr = new PolicyRefine(yyvsp[-2].policyTerm, yyvsp[0].policyExpr);
3824 ;
3825     break;}
3826 case 330:
3827 #line 1567 "rpsl.y"
3828 {
3829    yyval.policyExpr = new PolicyExcept(yyvsp[-2].policyTerm, yyvsp[0].policyExpr);
3830 ;
3831     break;}
3832 case 331:
3833 #line 1572 "rpsl.y"
3834 {
3835    yyval.policyExpr = yyvsp[0].policyTerm;
3836 ;
3837     break;}
3838 case 332:
3839 #line 1575 "rpsl.y"
3840 {
3841    yyval.policyExpr = new PolicyRefine(yyvsp[-2].policyTerm, yyvsp[0].policyExpr);
3842 ;
3843     break;}
3844 case 333:
3845 #line 1578 "rpsl.y"
3846 {
3847    yyval.policyExpr = new PolicyExcept(yyvsp[-2].policyTerm, yyvsp[0].policyExpr);
3848 ;
3849     break;}
3850 case 334:
3851 #line 1585 "rpsl.y"
3852 {
3853    yyval.protocol = schema.searchProtocol("BGP4");
3854 ;
3855     break;}
3856 case 335:
3857 #line 1588 "rpsl.y"
3858 {
3859    yyval.protocol = schema.searchProtocol(yyvsp[0].string);
3860    if (!yyval.protocol) {
3861       handle_warning("Warning: unknown protocol %s, BGP4 assumed.\n", yyvsp[0].string);
3862       yyval.protocol = schema.searchProtocol("BGP4");
3863    }
3864    free(yyvsp[0].string);
3865 ;
3866     break;}
3867 case 336:
3868 #line 1598 "rpsl.y"
3869 {
3870    yyval.protocol = schema.searchProtocol("BGP4");
3871 ;
3872     break;}
3873 case 337:
3874 #line 1601 "rpsl.y"
3875 {
3876    yyval.protocol = schema.searchProtocol(yyvsp[0].string);
3877    if (!yyval.protocol) {
3878       handle_warning("Warning: unknown protocol %s, BGP4 assumed.\n", yyvsp[0].string);
3879       yyval.protocol = schema.searchProtocol("BGP4");
3880    }
3881    free(yyvsp[0].string);;
3882 ;
3883     break;}
3884 case 338:
3885 #line 1615 "rpsl.y"
3886 {
3887    yyval.attr = changeCurrentAttr(new AttrImport(yyvsp[-3].protocol, yyvsp[-2].protocol, yyvsp[-1].policyExpr));
3888 ;
3889     break;}
3890 case 339:
3891 #line 1618 "rpsl.y"
3892 {
3893    PolicyTerm *term = new PolicyTerm;
3894    term->append(yyvsp[-1].policyFactor);
3895 
3896    yyval.attr = changeCurrentAttr(new AttrImport(yyvsp[-3].protocol, yyvsp[-2].protocol, term));
3897 ;
3898     break;}
3899 case 340:
3900 #line 1624 "rpsl.y"
3901 {
3902    yyval.attr = yyvsp[-2].attr;
3903    handle_error("Error: from <peering> expected.\n");
3904    yyerrok;
3905 ;
3906     break;}
3907 case 341:
3908 #line 1633 "rpsl.y"
3909 {
3910    yyval.attr = changeCurrentAttr(new AttrExport(yyvsp[-3].protocol, yyvsp[-2].protocol, yyvsp[-1].policyExpr));
3911 ;
3912     break;}
3913 case 342:
3914 #line 1636 "rpsl.y"
3915 {
3916    PolicyTerm *term = new PolicyTerm;
3917    term->append(yyvsp[-1].policyFactor);
3918 
3919    yyval.attr = changeCurrentAttr(new AttrExport(yyvsp[-3].protocol, yyvsp[-2].protocol, term));
3920 ;
3921     break;}
3922 case 343:
3923 #line 1642 "rpsl.y"
3924 {
3925    yyval.attr = yyvsp[-2].attr;
3926    handle_error("Error: to <peering> expected.\n");
3927    yyerrok;
3928 ;
3929     break;}
3930 case 344:
3931 #line 1649 "rpsl.y"
3932 {
3933    yyval.filter = new FilterANY;
3934 ;
3935     break;}
3936 case 345:
3937 #line 1652 "rpsl.y"
3938 {
3939    yyval.filter = yyvsp[0].filter;
3940 ;
3941     break;}
3942 case 346:
3943 #line 1659 "rpsl.y"
3944 {
3945    yyval.attr = changeCurrentAttr(new AttrDefault(yyvsp[-3].peering, yyvsp[-2].actionList, yyvsp[-1].filter));
3946 ;
3947     break;}
3948 case 347:
3949 #line 1662 "rpsl.y"
3950 {
3951    if (yyvsp[-2].peering)
3952       delete yyvsp[-2].peering;
3953    handle_error("Error: badly formed filter/action or keyword NETWORKS/ACTION missing.\n");
3954    yyerrok;
3955 ;
3956     break;}
3957 case 348:
3958 #line 1668 "rpsl.y"
3959 {
3960    handle_error("Error: TO <peer> missing.\n");
3961    yyerrok;
3962 ;
3963     break;}
3964 case 349:
3965 #line 1674 "rpsl.y"
3966 {
3967    yyval.attr = changeCurrentAttr(new AttrFilter(yyvsp[-1].filter));
3968 ;
3969     break;}
3970 case 350:
3971 #line 1677 "rpsl.y"
3972 {
3973    yyval.attr = yyvsp[-2].attr;
3974    handle_error("Error: badly formed filter.\n");
3975    yyerrok;
3976 ;
3977     break;}
3978 case 351:
3979 #line 1684 "rpsl.y"
3980 {
3981    yyval.attr = changeCurrentAttr(new AttrPeering(yyvsp[-1].peering));
3982 ;
3983     break;}
3984 case 352:
3985 #line 1687 "rpsl.y"
3986 {
3987    yyval.attr = yyvsp[-2].attr;
3988    handle_error("Error: badly formed filter.\n");
3989    yyerrok;
3990 ;
3991     break;}
3992 case 353:
3993 #line 1696 "rpsl.y"
3994 {
3995    yyval.attr = changeCurrentAttr(new AttrIfAddr(yyvsp[-4].ip->get_ipaddr(), yyvsp[-2].i, yyvsp[-1].actionList));
3996    delete yyvsp[-4].ip;
3997 ;
3998     break;}
3999 case 354:
4000 #line 1700 "rpsl.y"
4001 {
4002    delete yyvsp[-4].ip;
4003    yyval.attr = yyvsp[-5].attr;
4004    handle_error("Error: in action specification.\n");
4005    yyerrok;
4006 ;
4007     break;}
4008 case 355:
4009 #line 1706 "rpsl.y"
4010 {
4011    delete yyvsp[-3].ip;
4012    yyval.attr = yyvsp[-4].attr;
4013    handle_error("Error: integer mask length expected.\n");
4014    yyerrok;
4015 ;
4016     break;}
4017 case 356:
4018 #line 1712 "rpsl.y"
4019 {
4020    delete yyvsp[-2].ip;
4021    yyval.attr = yyvsp[-3].attr;
4022    handle_error("Error: MASKLEN <length> expected.\n");
4023    yyerrok;
4024 ;
4025     break;}
4026 case 357:
4027 #line 1718 "rpsl.y"
4028 {
4029    yyval.attr = yyvsp[-2].attr;
4030    handle_error("Error: <ip_address> MASKLEN <length> [<action>] expected.\n");
4031    yyerrok;
4032 ;
4033     break;}
4034 case 358:
4035 #line 1727 "rpsl.y"
4036 {
4037    yyval.peer_option_list = new List<AttrPeerOption>;
4038 ;
4039     break;}
4040 case 359:
4041 #line 1730 "rpsl.y"
4042 {
4043    yyval.peer_option_list = yyvsp[0].peer_option_list;
4044 ;
4045     break;}
4046 case 360:
4047 #line 1735 "rpsl.y"
4048 {
4049    yyval.peer_option_list = new List<AttrPeerOption>;
4050    yyval.peer_option_list->append(yyvsp[0].peer_option);
4051 ;
4052     break;}
4053 case 361:
4054 #line 1739 "rpsl.y"
4055 {
4056    yyval.peer_option_list = yyvsp[-2].peer_option_list;
4057    yyval.peer_option_list->append(yyvsp[0].peer_option);
4058 ;
4059     break;}
4060 case 362:
4061 #line 1745 "rpsl.y"
4062 {
4063    yyval.peer_option = new AttrPeerOption(yyvsp[-3].string, yyvsp[-1].list);
4064 ;
4065     break;}
4066 case 364:
4067 #line 1751 "rpsl.y"
4068 {
4069    yyval.ip = new IPAddr;
4070 ;
4071     break;}
4072 case 365:
4073 #line 1754 "rpsl.y"
4074 {
4075    yyval.ip = new IPAddr;
4076 ;
4077     break;}
4078 case 366:
4079 #line 1757 "rpsl.y"
4080 {
4081    yyval.ip = new IPAddr;
4082 ;
4083     break;}
4084 case 367:
4085 #line 1762 "rpsl.y"
4086 {
4087    const AttrProtocol *protocol = schema.searchProtocol(yyvsp[-3].string);
4088    int position;
4089    const RPType *correctType;
4090    bool error = false;
4091 
4092    if (!protocol) {
4093       handle_error("Error: unknown protocol %s.\n", yyvsp[-3].string);
4094       error = true;
4095    } else {
4096       ((AttrProtocol *) protocol)->startMandatoryCheck();
4097       for (AttrPeerOption *opt = yyvsp[-1].peer_option_list->head(); opt; opt = yyvsp[-1].peer_option_list->next(opt)) {
4098          const AttrProtocolOption *decl = protocol->searchOption(opt->option);
4099          if (!decl)  {
4100             handle_error("Error: protocol %s does not have option %s.\n", 
4101                          yyvsp[-3].string, opt->option);
4102             error = true;
4103          } else {
4104             for (; decl; decl = protocol->searchNextOption(decl))
4105                if (decl->option->validateArgs(opt->args, position, correctType))
4106                   break;
4107             if (! decl) {
4108                handleArgumentTypeError(yyvsp[-3].string, opt->option, position, correctType);
4109                error = true;
4110             }
4111          }
4112       }
4113    }
4114 
4115    if (! error) {
4116       const AttrProtocolOption *missing = 
4117          ((AttrProtocol *) protocol)->missingMandatoryOption();
4118       if (missing) {
4119          handle_error("Error: mandatory option %s of protocol %s is missing.\n", 
4120                       missing->option->name, yyvsp[-3].string);
4121          error = true;
4122       }
4123    }
4124       
4125    if (!error)
4126       yyval.attr = changeCurrentAttr(new AttrPeer(protocol, yyvsp[-2].ip, yyvsp[-1].peer_option_list));
4127    else {
4128       free(yyvsp[-3].string);
4129       delete yyvsp[-2].ip;
4130       delete yyvsp[-1].peer_option_list;
4131    }
4132 ;
4133     break;}
4134 case 368:
4135 #line 1809 "rpsl.y"
4136 {
4137    yyval.attr = yyvsp[-4].attr;
4138    free(yyvsp[-3].string);
4139    delete yyvsp[-2].ip;
4140    handle_error("Error: in peer option.\n");
4141    yyerrok;
4142 ;
4143     break;}
4144 case 369:
4145 #line 1816 "rpsl.y"
4146 {
4147    yyval.attr = yyvsp[-3].attr;
4148    free(yyvsp[-2].string);
4149    handle_error("Error: missing peer ip_address.\n");
4150    yyerrok;
4151 ;
4152     break;}
4153 case 370:
4154 #line 1822 "rpsl.y"
4155 {
4156    yyval.attr = yyvsp[-2].attr;
4157    handle_error("Error: missing protocol name.\n");
4158    yyerrok;
4159 ;
4160     break;}
4161 case 371:
4162 #line 1831 "rpsl.y"
4163 {
4164    yyval.attr = yyvsp[-2].attr;
4165    delete yyvsp[-1].filter;
4166 ;
4167     break;}
4168 case 372:
4169 #line 1835 "rpsl.y"
4170 {
4171    yyval.attr = yyvsp[-2].attr;
4172    handle_error("Error: <as-expression> expected.\n");
4173    yyerrok;
4174 ;
4175     break;}
4176 case 373:
4177 #line 1842 "rpsl.y"
4178 {
4179    yyval.attr = yyvsp[-2].attr;
4180 ;
4181     break;}
4182 case 374:
4183 #line 1845 "rpsl.y"
4184 {
4185    delete yyvsp[-1].filter;
4186 ;
4187     break;}
4188 case 375:
4189 #line 1848 "rpsl.y"
4190 {
4191    yyval.attr = yyvsp[-3].attr;
4192    handle_error("Error: OUTBOUND <as-expression> expected.\n");
4193    yyerrok;
4194 ;
4195     break;}
4196 case 376:
4197 #line 1853 "rpsl.y"
4198 {
4199    yyval.attr = yyvsp[-3].attr;
4200    handle_error("Error: INBOUND can not be followed by anything.\n");
4201    yyerrok;
4202 ;
4203     break;}
4204 case 377:
4205 #line 1858 "rpsl.y"
4206 {
4207    yyval.attr = yyvsp[-2].attr;
4208    handle_error("Error: keyword INBOUND or OUTBOUND expected.\n");
4209    yyerrok;
4210 ;
4211     break;}
4212 case 378:
4213 #line 1867 "rpsl.y"
4214 {
4215    yyval.filter = new FilterANY;
4216 ;
4217     break;}
4218 case 379:
4219 #line 1870 "rpsl.y"
4220 {
4221    yyval.filter = yyvsp[0].filter;
4222 ;
4223     break;}
4224 case 380:
4225 #line 1875 "rpsl.y"
4226 {
4227    yyval.filter = new FilterOR(yyvsp[-2].filter, yyvsp[0].filter);
4228 ;
4229     break;}
4230 case 382:
4231 #line 1881 "rpsl.y"
4232 {
4233    yyval.filter = new FilterAND(yyvsp[-2].filter, yyvsp[0].filter);
4234 ;
4235     break;}
4236 case 384:
4237 #line 1887 "rpsl.y"
4238 {
4239    yyval.filter = yyvsp[-1].filter;
4240 ;
4241     break;}
4242 case 386:
4243 #line 1893 "rpsl.y"
4244 {
4245    yyval.filter = new FilterANY;
4246 ;
4247     break;}
4248 case 387:
4249 #line 1896 "rpsl.y"
4250 { 
4251    yyval.filter = new FilterHAVE_COMPONENTS((FilterPRFXList *) yyvsp[-1].filter); 
4252 ;
4253     break;}
4254 case 388:
4255 #line 1899 "rpsl.y"
4256 { 
4257    yyval.filter = new FilterEXCLUDE((FilterPRFXList *) yyvsp[-1].filter); 
4258 ;
4259     break;}
4260 case 389:
4261 #line 1904 "rpsl.y"
4262 {
4263    yyval.attr = yyvsp[-4].attr;
4264    delete yyvsp[-3].filter;
4265    delete yyvsp[-2].actionList;
4266    delete yyvsp[-1].filter;
4267 ;
4268     break;}
4269 case 390:
4270 #line 1910 "rpsl.y"
4271 {
4272    yyval.attr = yyvsp[-2].attr;
4273    handle_error("Error: [at <router-exp>] [action <action>] [upon <condition>] expected.\n");
4274    yyerrok;
4275 ;
4276     break;}
4277 case 393:
4278 #line 1923 "rpsl.y"
4279 {
4280 ;
4281     break;}
4282 case 394:
4283 #line 1925 "rpsl.y"
4284 {
4285    delete yyvsp[0].filter;
4286 ;
4287     break;}
4288 case 395:
4289 #line 1928 "rpsl.y"
4290 {
4291    free(yyvsp[-1].string);
4292    delete yyvsp[0].filter;
4293 ;
4294     break;}
4295 case 396:
4296 #line 1934 "rpsl.y"
4297 {
4298    yyval.attr = yyvsp[-3].attr;
4299 ;
4300     break;}
4301 case 397:
4302 #line 1937 "rpsl.y"
4303 {
4304    yyval.attr = yyvsp[-2].attr;
4305    handle_error("Error: [ATOMIC] [[<filter>] [PROTOCOL <protocol> <filter>] ...] expected.\n");
4306    yyerrok;
4307 ;
4308     break;}
4309 case 398:
4310 #line 1946 "rpsl.y"
4311 {
4312    yyval.list = new ItemList;
4313 ;
4314     break;}
4315 case 400:
4316 #line 1952 "rpsl.y"
4317 {       
4318    yyval.list = new ItemList;
4319    yyval.list->append(yyvsp[0].item);
4320 ;
4321     break;}
4322 case 401:
4323 #line 1956 "rpsl.y"
4324 {
4325    yyval.list = yyvsp[-2].list;
4326    yyval.list->append(yyvsp[0].item);
4327 ;
4328     break;}
4329 case 402:
4330 #line 1962 "rpsl.y"
4331 {
4332    yyval.item = new ItemASNO(yyvsp[0].i);
4333 ;
4334     break;}
4335 case 403:
4336 #line 1965 "rpsl.y"
4337 {
4338    yyval.item = new ItemMSItem(new ItemASNO(yyvsp[-1].i), yyvsp[0].moreSpecOp->code, yyvsp[0].moreSpecOp->n, yyvsp[0].moreSpecOp->m);
4339    delete yyvsp[0].moreSpecOp;
4340 ;
4341     break;}
4342 case 404:
4343 #line 1969 "rpsl.y"
4344 {
4345    yyval.item = new ItemASNAME(yyvsp[0].sid);
4346 ;
4347     break;}
4348 case 405:
4349 #line 1972 "rpsl.y"
4350 {
4351    yyval.item = new ItemMSItem(new ItemASNAME(yyvsp[-1].sid), yyvsp[0].moreSpecOp->code, yyvsp[0].moreSpecOp->n, yyvsp[0].moreSpecOp->m);
4352    delete yyvsp[0].moreSpecOp;
4353 ;
4354     break;}
4355 case 406:
4356 #line 1976 "rpsl.y"
4357 {
4358    yyval.item = new ItemRSNAME(yyvsp[0].sid);
4359 ;
4360     break;}
4361 case 407:
4362 #line 1979 "rpsl.y"
4363 {
4364    yyval.item = new ItemMSItem(new ItemRSNAME(yyvsp[-1].sid), yyvsp[0].moreSpecOp->code, yyvsp[0].moreSpecOp->n, yyvsp[0].moreSpecOp->m);
4365    delete yyvsp[0].moreSpecOp;
4366 ;
4367     break;}
4368 case 408:
4369 #line 1983 "rpsl.y"
4370 {
4371    yyval.item = new ItemPRFXV4(yyvsp[0].prfx);
4372 ;
4373     break;}
4374 case 409:
4375 #line 1986 "rpsl.y"
4376 {
4377    yyval.item = new ItemPRFXV4Range(yyvsp[0].prfxrng);
4378 ;
4379     break;}
4380 case 410:
4381 #line 1991 "rpsl.y"
4382 {
4383    yyval.attr = changeCurrentAttr(new AttrGeneric(yyvsp[-2].attr->type, yyvsp[-1].list));
4384 ;
4385     break;}
4386 case 411:
4387 #line 1994 "rpsl.y"
4388 {
4389    yyval.attr = yyvsp[-2].attr;
4390    handle_error("Error: invalid member\n");
4391    yyerrok;
4392 ;
4393     break;}
4394 case 412:
4395 #line 2003 "rpsl.y"
4396 {
4397    yyval.attr = changeCurrentAttr(new AttrRPAttr(yyvsp[-2].string, yyvsp[-1].methodlist));
4398 ;
4399     break;}
4400 case 413:
4401 #line 2006 "rpsl.y"
4402 {
4403    yyval.attr = changeCurrentAttr(new AttrRPAttr(yyvsp[-2].rp_attr->name, yyvsp[-1].methodlist));
4404 ;
4405     break;}
4406 case 414:
4407 #line 2009 "rpsl.y"
4408 {
4409    yyval.attr = yyvsp[-2].attr;
4410    handle_error("Error: invalid rp-attribute specification\n");
4411    yyerrok;
4412 ;
4413     break;}
4414 case 415:
4415 #line 2016 "rpsl.y"
4416 {
4417    yyval.methodlist = new List<AttrMethod>;
4418    if (yyvsp[0].method)
4419       yyval.methodlist->append(yyvsp[0].method);
4420 ;
4421     break;}
4422 case 416:
4423 #line 2021 "rpsl.y"
4424 {
4425    yyval.methodlist = yyvsp[-1].methodlist;
4426    if (yyvsp[0].method)
4427       yyval.methodlist->append(yyvsp[0].method);
4428 ;
4429     break;}
4430 case 417:
4431 #line 2028 "rpsl.y"
4432 {
4433    yyval.method = new AttrMethod(yyvsp[-2].string, new List<RPTypeNode>, false);
4434 ;
4435     break;}
4436 case 418:
4437 #line 2031 "rpsl.y"
4438 {
4439    yyval.method = new AttrMethod(yyvsp[-3].string, yyvsp[-1].typelist, false);
4440 ;
4441     break;}
4442 case 419:
4443 #line 2034 "rpsl.y"
4444 {
4445    yyval.method = new AttrMethod(yyvsp[-5].string, yyvsp[-3].typelist, true);
4446 ;
4447     break;}
4448 case 420:
4449 #line 2037 "rpsl.y"
4450 {
4451    char buffer[16];
4452    strcpy(buffer, "operator");
4453    strcat(buffer, yyvsp[-3].string);
4454    yyval.method = new AttrMethod(strdup(buffer), yyvsp[-1].typelist, false, true);
4455    free(yyvsp[-3].string);
4456 ;
4457     break;}
4458 case 421:
4459 #line 2044 "rpsl.y"
4460 {
4461    char buffer[16];
4462    strcpy(buffer, "operator");
4463    strcat(buffer, yyvsp[-5].string);
4464    yyval.method = new AttrMethod(strdup(buffer), yyvsp[-3].typelist, true, true);
4465    free(yyvsp[-5].string);
4466 ;
4467     break;}
4468 case 422:
4469 #line 2051 "rpsl.y"
4470 {
4471    free(yyvsp[-2].string);
4472    yyval.method = NULL;
4473    handle_error("Error: invalid method specification for %s\n", yyvsp[-2].string);
4474 ;
4475     break;}
4476 case 423:
4477 #line 2056 "rpsl.y"
4478 {
4479    yyval.method = NULL;
4480    handle_error("Error: invalid operator specification for %s\n", yyvsp[-2].string);
4481    free(yyvsp[-2].string);
4482 ;
4483     break;}
4484 case 424:
4485 #line 2061 "rpsl.y"
4486 {
4487    yyval.method = NULL;
4488    handle_error("Error: invalid operator\n");
4489 ;
4490     break;}
4491 case 425:
4492 #line 2065 "rpsl.y"
4493 {
4494    yyval.method = NULL;
4495    handle_error("Error: method specification expected\n");
4496 ;
4497     break;}
4498 case 426:
4499 #line 2073 "rpsl.y"
4500 {
4501    yyval.attr = changeCurrentAttr(new AttrTypedef(yyvsp[-2].string, yyvsp[-1].typenode));
4502 ;
4503     break;}
4504 case 427:
4505 #line 2076 "rpsl.y"
4506 {
4507    yyval.attr = yyvsp[-2].attr;
4508    handle_error("Error: invalid typedef specification\n");
4509    yyerrok;
4510 ;
4511     break;}
4512 case 428:
4513 #line 2083 "rpsl.y"
4514 {
4515    yyval.typelist = new List<RPTypeNode>;
4516    if (yyvsp[0].typenode)
4517       yyval.typelist->append(new RPTypeNode(yyvsp[0].typenode));
4518 ;
4519     break;}
4520 case 429:
4521 #line 2088 "rpsl.y"
4522 {
4523    yyval.typelist = yyvsp[-2].typelist;
4524    if (yyvsp[0].typenode)
4525       yyval.typelist->append(new RPTypeNode(yyvsp[0].typenode));
4526 ;
4527     break;}
4528 case 430:
4529 #line 2095 "rpsl.y"
4530 {
4531    yyval.typenode = RPType::newRPType("union", yyvsp[0].typelist);
4532    if (!yyval.typenode) {
4533       handle_error("Error: empty union specification\n");
4534       delete yyvsp[0].typelist;
4535    }
4536 ;
4537     break;}
4538 case 431:
4539 #line 2102 "rpsl.y"
4540 {
4541    if (yyvsp[0].typenode)
4542       yyval.typenode = new RPTypeRange(yyvsp[0].typenode);
4543    else {
4544       yyval.typenode = NULL;
4545    }
4546 ;
4547     break;}
4548 case 432:
4549 #line 2109 "rpsl.y"
4550 {
4551    yyval.typenode = RPType::newRPType(yyvsp[0].string);
4552    if (!yyval.typenode) {
4553       handle_error("Error: invalid type %s\n", yyvsp[0].string);
4554    }
4555    free(yyvsp[0].string);
4556 ;
4557     break;}
4558 case 433:
4559 #line 2116 "rpsl.y"
4560 {
4561    yyval.typenode = RPType::newRPType(yyvsp[-5].string, yyvsp[-3].i, yyvsp[-1].i);
4562    if (!yyval.typenode) {
4563       handle_error("Error: invalid type %s[%d,%d]\n", yyvsp[-5].string, yyvsp[-3].i, yyvsp[-1].i);
4564    }
4565    free(yyvsp[-5].string);
4566 ;
4567     break;}
4568 case 434:
4569 #line 2123 "rpsl.y"
4570 {
4571    yyval.typenode = RPType::newRPType(yyvsp[-5].string, yyvsp[-3].real, yyvsp[-1].real);
4572    if (!yyval.typenode) {
4573       handle_error("Error: invalid type %s[%f,%f]\n", yyvsp[-5].string, yyvsp[-3].real, yyvsp[-1].real);
4574    }
4575    free(yyvsp[-5].string);
4576 ;
4577     break;}
4578 case 435:
4579 #line 2130 "rpsl.y"
4580 {
4581    yyval.typenode = RPType::newRPType(yyvsp[-3].string, yyvsp[-1].wordlist);
4582    if (!yyval.typenode) {
4583       handle_error("Error: invalid type %s, enum expected\n", yyvsp[-3].string);
4584       delete yyvsp[-1].wordlist;
4585    }
4586    free(yyvsp[-3].string);
4587 ;
4588     break;}
4589 case 436:
4590 #line 2138 "rpsl.y"
4591 {
4592    if (yyvsp[0].typenode)
4593       if (yyvsp[-5].i < yyvsp[-3].i)
4594          yyval.typenode = new RPTypeList(yyvsp[0].typenode, yyvsp[-5].i, yyvsp[-3].i);
4595       else
4596          yyval.typenode = new RPTypeList(yyvsp[0].typenode, yyvsp[-3].i, yyvsp[-5].i);
4597    else {
4598       yyval.typenode = NULL;
4599       delete yyvsp[0].typenode;
4600    }
4601 ;
4602     break;}
4603 case 437:
4604 #line 2149 "rpsl.y"
4605 {
4606    if (yyvsp[0].typenode)
4607       yyval.typenode = new RPTypeList(yyvsp[0].typenode);
4608    else {
4609       yyval.typenode = NULL;
4610    }
4611 ;
4612     break;}
4613 case 438:
4614 #line 2156 "rpsl.y"
4615 {
4616    yyval.typenode = NULL;
4617    delete yyvsp[0].typenode;
4618    handle_error("Error: invalid list size\n");
4619 ;
4620     break;}
4621 case 439:
4622 #line 2163 "rpsl.y"
4623 {
4624    yyval.wordlist = new List<WordNode>;
4625    yyval.wordlist->append(new WordNode(yyvsp[0].string));
4626 ;
4627     break;}
4628 case 440:
4629 #line 2167 "rpsl.y"
4630 {
4631    yyval.wordlist = yyvsp[-2].wordlist;
4632    yyval.wordlist->append(new WordNode(yyvsp[0].string));
4633 ;
4634     break;}
4635 case 441:
4636 #line 2175 "rpsl.y"
4637 {
4638    yyval.attr = changeCurrentAttr(new AttrProtocol(yyvsp[-2].string, yyvsp[-1].protocol_option_list));
4639 ;
4640     break;}
4641 case 442:
4642 #line 2178 "rpsl.y"
4643 {
4644    yyval.attr = yyvsp[-3].attr;
4645    handle_error("Error: invalid protocol option\n");
4646    yyerrok;
4647 ;
4648     break;}
4649 case 443:
4650 #line 2183 "rpsl.y"
4651 {
4652    yyval.attr = yyvsp[-2].attr;
4653    handle_error("Error: invalid protocol name\n");
4654    yyerrok;
4655 ;
4656     break;}
4657 case 444:
4658 #line 2190 "rpsl.y"
4659 {
4660    yyval.protocol_option_list = new List<AttrProtocolOption>;
4661 ;
4662     break;}
4663 case 445:
4664 #line 2193 "rpsl.y"
4665 {
4666    yyval.protocol_option_list = yyvsp[-1].protocol_option_list;
4667    yyval.protocol_option_list->append(yyvsp[0].protocol_option);
4668 ;
4669     break;}
4670 case 446:
4671 #line 2199 "rpsl.y"
4672 {
4673    yyval.protocol_option = new AttrProtocolOption(false, yyvsp[0].method);
4674 ;
4675     break;}
4676 case 447:
4677 #line 2202 "rpsl.y"
4678 {
4679    yyval.protocol_option = new AttrProtocolOption(true, yyvsp[0].method);
4680 ;
4681     break;}
4682 case 448:
4683 #line 2209 "rpsl.y"
4684 {
4685    yyval.rpslattr = new AttrAttr(ATTR_GENERIC, RPType::newRPType("free_text"));
4686 ;
4687     break;}
4688 case 449:
4689 #line 2212 "rpsl.y"
4690 {
4691    yyval.rpslattr = new AttrAttr(ATTR_GENERIC, RPType::newRPType("free_text"));
4692    *yyval.rpslattr |= *yyvsp[0].rpslattr;
4693    delete yyvsp[0].rpslattr;
4694 ;
4695     break;}
4696 case 450:
4697 #line 2219 "rpsl.y"
4698 {
4699    yyval.rpslattr = yyvsp[0].rpslattr;
4700 ;
4701     break;}
4702 case 451:
4703 #line 2222 "rpsl.y"
4704 {
4705    yyval.rpslattr = yyvsp[-2].rpslattr;
4706    *yyval.rpslattr |= *yyvsp[0].rpslattr;
4707    delete yyvsp[0].rpslattr;
4708 ;
4709     break;}
4710 case 452:
4711 #line 2227 "rpsl.y"
4712 {
4713    yyval.rpslattr = yyvsp[0].rpslattr;
4714    handle_error("Error: in attr option specification.\n");
4715 ;
4716     break;}
4717 case 453:
4718 #line 2233 "rpsl.y"
4719 {
4720    yyval.rpslattr = new AttrAttr(ATTR_GENERIC, yyvsp[-1].typenode);
4721 ;
4722     break;}
4723 case 454:
4724 #line 2236 "rpsl.y"
4725 {
4726    int syntax = schema.searchAttrSyntax(yyvsp[-1].string);
4727    if (syntax < 0) {
4728       handle_error("Error: no known syntax rule for %s.\n", yyvsp[-1].string);
4729       yyval.rpslattr = new AttrAttr;
4730    } else
4731       yyval.rpslattr = new AttrAttr(syntax, NULL);
4732    free(yyvsp[-1].string);
4733 ;
4734     break;}
4735 case 455:
4736 #line 2245 "rpsl.y"
4737 {
4738    yyval.rpslattr = new AttrAttr(AttrAttr::OPTIONAL);
4739 ;
4740     break;}
4741 case 456:
4742 #line 2248 "rpsl.y"
4743 {
4744    yyval.rpslattr = new AttrAttr;
4745 ;
4746     break;}
4747 case 457:
4748 #line 2251 "rpsl.y"
4749 {
4750    yyval.rpslattr = new AttrAttr(AttrAttr::DELETED)
4751 ;
4752     break;}
4753 case 458:
4754 #line 2254 "rpsl.y"
4755 {
4756    yyval.rpslattr = new AttrAttr;
4757 ;
4758     break;}
4759 case 459:
4760 #line 2257 "rpsl.y"
4761 {
4762    yyval.rpslattr = new AttrAttr(AttrAttr::MULTIVALUED);
4763 ;
4764     break;}
4765 case 460:
4766 #line 2260 "rpsl.y"
4767 {
4768    yyval.rpslattr = new AttrAttr(AttrAttr::LOOKUP);
4769 ;
4770     break;}
4771 case 461:
4772 #line 2263 "rpsl.y"
4773 {
4774    yyval.rpslattr = new AttrAttr(AttrAttr::KEY);
4775 ;
4776     break;}
4777 case 462:
4778 #line 2266 "rpsl.y"
4779 {
4780    yyval.rpslattr = new AttrAttr(AttrAttr::OBSOLETE);
4781 ;
4782     break;}
4783 case 463:
4784 #line 2269 "rpsl.y"
4785 {
4786    yyval.rpslattr = new AttrAttr(AttrAttr::INTERNAL);
4787 ;
4788     break;}
4789 case 464:
4790 #line 2272 "rpsl.y"
4791 {
4792   yyval.rpslattr = new AttrAttr(AttrAttr::GENERATED);
4793 ;
4794     break;}
4795 case 465:
4796 #line 2277 "rpsl.y"
4797 {
4798    yyvsp[-1].rpslattr->setName(yyvsp[-2].string);
4799    yyval.attr = changeCurrentAttr(yyvsp[-1].rpslattr);
4800 ;
4801     break;}
4802 case 466:
4803 #line 2281 "rpsl.y"
4804 {
4805    yyval.attr = yyvsp[-3].attr;
4806    free(yyvsp[-2].string);
4807    handle_error("Error: in attr option specification.\n");
4808    yyerrok;
4809 ;
4810     break;}
4811 case 467:
4812 #line 2287 "rpsl.y"
4813 {
4814    yyval.attr = yyvsp[-2].attr;
4815    handle_error("Error: attr name expected.\n");
4816    yyerrok;
4817 ;
4818     break;}
4819 case 468:
4820 #line 2296 "rpsl.y"
4821 {
4822    yyval.attr = changeCurrentAttr(new AttrMntRoutes(yyvsp[-1].listMntPrfxPair));
4823 ;
4824     break;}
4825 case 469:
4826 #line 2301 "rpsl.y"
4827 {
4828    yyval.listMntPrfxPair = new List<AttrMntRoutes::MntPrfxPair>;
4829    yyval.listMntPrfxPair->append(yyvsp[0].mntPrfxPair);
4830 ;
4831     break;}
4832 case 470:
4833 #line 2305 "rpsl.y"
4834 {
4835    yyval.listMntPrfxPair = yyvsp[-2].listMntPrfxPair;
4836    yyval.listMntPrfxPair->append(yyvsp[0].mntPrfxPair);
4837 ;
4838     break;}
4839 case 471:
4840 #line 2311 "rpsl.y"
4841 {
4842    yyval.mntPrfxPair = new AttrMntRoutes::MntPrfxPair(yyvsp[0].string, NULL);
4843 ;
4844     break;}
4845 case 472:
4846 #line 2314 "rpsl.y"
4847 {
4848    yyval.mntPrfxPair = new AttrMntRoutes::MntPrfxPair(yyvsp[-1].string, NULL);
4849 ;
4850     break;}
4851 case 473:
4852 #line 2317 "rpsl.y"
4853 {
4854    yyval.mntPrfxPair = new AttrMntRoutes::MntPrfxPair(yyvsp[-3].string, (FilterPRFXList *) yyvsp[-1].filter);
4855 ;
4856     break;}
4857 }
4858    /* the action file gets copied in in place of this dollarsign */
4859 #line 543 "/usr/local/share/bison.simple"
4860 
4861   yyvsp -= yylen;
4862   yyssp -= yylen;
4863 #ifdef YYLSP_NEEDED
4864   yylsp -= yylen;
4865 #endif
4866 
4867 #if YYDEBUG != 0
4868   if (yydebug)
4869     {
4870       short *ssp1 = yyss - 1;
4871       fprintf (stderr, "state stack now");
4872       while (ssp1 != yyssp)
4873         fprintf (stderr, " %d", *++ssp1);
4874       fprintf (stderr, "\n");
4875     }
4876 #endif
4877 
4878   *++yyvsp = yyval;
4879 
4880 #ifdef YYLSP_NEEDED
4881   yylsp++;
4882   if (yylen == 0)
4883     {
4884       yylsp->first_line = yylloc.first_line;
4885       yylsp->first_column = yylloc.first_column;
4886       yylsp->last_line = (yylsp-1)->last_line;
4887       yylsp->last_column = (yylsp-1)->last_column;
4888       yylsp->text = 0;
4889     }
4890   else
4891     {
4892       yylsp->last_line = (yylsp+yylen-1)->last_line;
4893       yylsp->last_column = (yylsp+yylen-1)->last_column;
4894     }
4895 #endif
4896 
4897   /* Now "shift" the result of the reduction.
4898      Determine what state that goes to,
4899      based on the state we popped back to
4900      and the rule number reduced by.  */
4901 
4902   yyn = yyr1[yyn];
4903 
4904   yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
4905   if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
4906     yystate = yytable[yystate];
4907   else
4908     yystate = yydefgoto[yyn - YYNTBASE];
4909 
4910   goto yynewstate;
4911 
4912 yyerrlab:   /* here on detecting error */
4913 
4914   if (! yyerrstatus)
4915     /* If not already recovering from an error, report this error.  */
4916     {
4917       ++yynerrs;
4918 
4919 #ifdef YYERROR_VERBOSE
4920       yyn = yypact[yystate];
4921 
4922       if (yyn > YYFLAG && yyn < YYLAST)
4923         {
4924           int size = 0;
4925           char *msg;
4926           int x, count;
4927 
4928           count = 0;
4929           /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
4930           for (x = (yyn < 0 ? -yyn : 0);
4931                x < (sizeof(yytname) / sizeof(char *)); x++)
4932             if (yycheck[x + yyn] == x)
4933               size += strlen(yytname[x]) + 15, count++;
4934           msg = (char *) malloc(size + 15);
4935           if (msg != 0)
4936             {
4937               strcpy(msg, "parse error");
4938 
4939               if (count < 5)
4940                 {
4941                   count = 0;
4942                   for (x = (yyn < 0 ? -yyn : 0);
4943                        x < (sizeof(yytname) / sizeof(char *)); x++)
4944                     if (yycheck[x + yyn] == x)
4945                       {
4946                         strcat(msg, count == 0 ? ", expecting `" : " or `");
4947                         strcat(msg, yytname[x]);
4948                         strcat(msg, "'");
4949                         count++;
4950                       }
4951                 }
4952               yyerror(msg);
4953               free(msg);
4954             }
4955           else
4956             yyerror ("parse error; also virtual memory exceeded");
4957         }
4958       else
4959 #endif /* YYERROR_VERBOSE */
4960         yyerror("parse error");
4961     }
4962 
4963   goto yyerrlab1;
4964 yyerrlab1:   /* here on error raised explicitly by an action */
4965 
4966   if (yyerrstatus == 3)
4967     {
4968       /* if just tried and failed to reuse lookahead token after an error, discard it.  */
4969 
4970       /* return failure if at end of input */
4971       if (yychar == YYEOF)
4972         YYABORT;
4973 
4974 #if YYDEBUG != 0
4975       if (yydebug)
4976         fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
4977 #endif
4978 
4979       yychar = YYEMPTY;
4980     }
4981 
4982   /* Else will try to reuse lookahead token
4983      after shifting the error token.  */
4984 
4985   yyerrstatus = 3;              /* Each real token shifted decrements this */
4986 
4987   goto yyerrhandle;
4988 
4989 yyerrdefault:  /* current state does not do anything special for the error token. */
4990 
4991 #if 0
4992   /* This is wrong; only states that explicitly want error tokens
4993      should shift them.  */
4994   yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
4995   if (yyn) goto yydefault;
4996 #endif
4997 
4998 yyerrpop:   /* pop the current state because it cannot handle the error token */
4999 
5000   if (yyssp == yyss) YYABORT;
5001   yyvsp--;
5002   yystate = *--yyssp;
5003 #ifdef YYLSP_NEEDED
5004   yylsp--;
5005 #endif
5006 
5007 #if YYDEBUG != 0
5008   if (yydebug)
5009     {
5010       short *ssp1 = yyss - 1;
5011       fprintf (stderr, "Error: state stack now");
5012       while (ssp1 != yyssp)
5013         fprintf (stderr, " %d", *++ssp1);
5014       fprintf (stderr, "\n");
5015     }
5016 #endif
5017 
5018 yyerrhandle:
5019 
5020   yyn = yypact[yystate];
5021   if (yyn == YYFLAG)
5022     goto yyerrdefault;
5023 
5024   yyn += YYTERROR;
5025   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
5026     goto yyerrdefault;
5027 
5028   yyn = yytable[yyn];
5029   if (yyn < 0)
5030     {
5031       if (yyn == YYFLAG)
5032         goto yyerrpop;
5033       yyn = -yyn;
5034       goto yyreduce;
5035     }
5036   else if (yyn == 0)
5037     goto yyerrpop;
5038 
5039   if (yyn == YYFINAL)
5040     YYACCEPT;
5041 
5042 #if YYDEBUG != 0
5043   if (yydebug)
5044     fprintf(stderr, "Shifting error token, ");
5045 #endif
5046 
5047   *++yyvsp = yylval;
5048 #ifdef YYLSP_NEEDED
5049   *++yylsp = yylloc;
5050 #endif
5051 
5052   yystate = yyn;
5053   goto yynewstate;
5054 
5055  yyacceptlab:
5056   /* YYACCEPT comes here.  */
5057   if (yyfree_stacks)
5058     {
5059       free (yyss);
5060       free (yyvs);
5061 #ifdef YYLSP_NEEDED
5062       free (yyls);
5063 #endif
5064     }
5065   return 0;
5066 
5067  yyabortlab:
5068   /* YYABORT comes here.  */
5069   if (yyfree_stacks)
5070     {
5071       free (yyss);
5072       free (yyvs);
5073 #ifdef YYLSP_NEEDED
5074       free (yyls);
5075 #endif
5076     }
5077   return 1;
5078 }
5079 #line 2322 "rpsl.y"
5080 
5081 
5082 void enable_yy_parser_debugging() {
     /* [<][>][^][v][top][bottom][index][help] */
5083 #if YYDEBUG != 0
5084    yydebug = 1;
5085 #endif
5086 }
5087 
5088 void handleArgumentTypeError(char *attr, char *method, int position,
     /* [<][>][^][v][top][bottom][index][help] */
5089                              const RPType *correctType, 
5090                              bool isOperator = false) {
5091    if (isOperator)
5092       if (position)
5093          handle_error("Error: argument %d to %s.operator%s should be %s.\n",
5094                    position, attr, method, ((RPType *) correctType)->name());
5095       else
5096          handle_error("Error: wrong number of arguments to %s.operator%s.\n",
5097                       attr, method);
5098    else
5099       if (position)
5100          handle_error("Error: argument %d to %s.%s should be %s.\n",
5101                    position, attr, method, ((RPType *) correctType)->name());
5102       else
5103          handle_error("Error: wrong number of arguments to %s.%s.\n",
5104                       attr, method);
5105 }
5106 
5107 const AttrMethod *searchMethod(const AttrRPAttr *rp_attr, char *method, ItemList *args) {
     /* [<][>][^][v][top][bottom][index][help] */
5108    const AttrMethod *mtd = rp_attr->searchMethod(method);
5109    int position;
5110    const RPType *correctType;
5111    
5112    if (!mtd) {
5113       handle_error("Error: rp-attribute %s does not have %s defined.\n",
5114                    rp_attr->name, method);
5115       return NULL;
5116    }
5117    
5118    for (; mtd; mtd = rp_attr->searchNextMethod(mtd))
5119       if (mtd->validateArgs(args, position, correctType))
5120          return mtd;
5121 
5122    handleArgumentTypeError(rp_attr->name, method, position, correctType);
5123    
5124    return NULL;
5125 }

/* [<][>][^][v][top][bottom][index][help] */