modules/up/src/rpsl/rpsl/rpsl.y.cc
/* [<][>][^][v][top][bottom][index][help] */
FUNCTIONS
This source file includes following functions.
- YYTRANSLATE
- YYRECOVERING
- YYBACKUP
- __yy_memcpy
- __yy_memcpy
- __yy_memcpy
- yyparse
- enable_yy_parser_debugging
- handleArgumentTypeError
- 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 }