NHDT->ANH, nethack->anethack, nhdat->anhdat
[aNetHack.git] / sys / share / lev_yacc.c
blob42a7217e8418c81cea2bbf317c0c82f3419a2fb3
1 #ifndef lint
2 /* static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; */
3 /* static char nhsccsid[] = "@(#)yaccpar 1.9.0-nh (aNetHack) 12/03/2015"; */
4 #endif
5 #define YYBYACC 1
6 #define YYMAJOR 1
7 #define YYMINOR 9
8 #define YYSUBMINOR "0-nh"
10 #define yyclearin (yychar=(-1))
11 #define yyerrok (yyerrflag=0)
12 #define YYRECOVERING (yyerrflag!=0)
13 #define YYPREFIX "yy"
14 /* aNetHack 0.0.1 lev_comp.y $ANH-Date: 1455747019 2016/02/17 22:10:19 $ $ANH-Branch: aNetHack-3.6.0 $:$ANH-Revision: 1.22 $ */
15 /* Copyright (c) 1989 by Jean-Christophe Collet */
16 /* aNetHack may be freely redistributed. See license for details. */
19 * This file contains the Level Compiler code
20 * It may handle special mazes & special room-levels
23 /* In case we're using bison in AIX. This definition must be
24 * placed before any other C-language construct in the file
25 * excluding comments and preprocessor directives (thanks IBM
26 * for this wonderful feature...).
28 * Note: some cpps barf on this 'undefined control' (#pragma).
29 * Addition of the leading space seems to prevent barfage for now,
30 * and AIX will still see the directive.
32 #ifdef _AIX
33 #pragma alloca /* keep leading space! */
34 #endif
36 #define SPEC_LEV /* for USE_OLDARGS (sp_lev.h) */
37 #include "hack.h"
38 #include "sp_lev.h"
40 #define ERR (-1)
41 /* many types of things are put in chars for transference to aNetHack.
42 * since some systems will use signed chars, limit everybody to the
43 * same number for portability.
45 #define MAX_OF_TYPE 128
47 #define MAX_NESTED_IFS 20
48 #define MAX_SWITCH_CASES 20
50 #define New(type) \
51 (type *) memset((genericptr_t) alloc(sizeof (type)), 0, sizeof (type))
52 #define NewTab(type, size) (type **) alloc(sizeof (type *) * size)
53 #define Free(ptr) free((genericptr_t) ptr)
55 extern void VDECL(lc_error, (const char *, ...));
56 extern void VDECL(lc_warning, (const char *, ...));
57 extern void FDECL(yyerror, (const char *));
58 extern void FDECL(yywarning, (const char *));
59 extern int NDECL(yylex);
60 int NDECL(yyparse);
62 extern int FDECL(get_floor_type, (CHAR_P));
63 extern int FDECL(get_room_type, (char *));
64 extern int FDECL(get_trap_type, (char *));
65 extern int FDECL(get_monster_id, (char *,CHAR_P));
66 extern int FDECL(get_object_id, (char *,CHAR_P));
67 extern boolean FDECL(check_monster_char, (CHAR_P));
68 extern boolean FDECL(check_object_char, (CHAR_P));
69 extern char FDECL(what_map_char, (CHAR_P));
70 extern void FDECL(scan_map, (char *, sp_lev *));
71 extern void FDECL(add_opcode, (sp_lev *, int, genericptr_t));
72 extern genericptr_t FDECL(get_last_opcode_data1, (sp_lev *, int));
73 extern genericptr_t FDECL(get_last_opcode_data2, (sp_lev *, int, int));
74 extern boolean FDECL(check_subrooms, (sp_lev *));
75 extern boolean FDECL(write_level_file, (char *,sp_lev *));
76 extern struct opvar *FDECL(set_opvar_int, (struct opvar *, long));
77 extern void VDECL(add_opvars, (sp_lev *, const char *, ...));
78 extern void FDECL(start_level_def, (sp_lev * *, char *));
80 extern struct lc_funcdefs *FDECL(funcdef_new, (long,char *));
81 extern void FDECL(funcdef_free_all, (struct lc_funcdefs *));
82 extern struct lc_funcdefs *FDECL(funcdef_defined, (struct lc_funcdefs *,
83 char *, int));
84 extern char *FDECL(funcdef_paramtypes, (struct lc_funcdefs *));
85 extern char *FDECL(decode_parm_str, (char *));
87 extern struct lc_vardefs *FDECL(vardef_new, (long,char *));
88 extern void FDECL(vardef_free_all, (struct lc_vardefs *));
89 extern struct lc_vardefs *FDECL(vardef_defined, (struct lc_vardefs *,
90 char *, int));
92 extern void NDECL(break_stmt_start);
93 extern void FDECL(break_stmt_end, (sp_lev *));
94 extern void FDECL(break_stmt_new, (sp_lev *, long));
96 extern void FDECL(splev_add_from, (sp_lev *, sp_lev *));
98 extern void FDECL(check_vardef_type, (struct lc_vardefs *, char *, long));
99 extern void FDECL(vardef_used, (struct lc_vardefs *, char *));
100 extern struct lc_vardefs *FDECL(add_vardef_type, (struct lc_vardefs *,
101 char *, long));
103 extern int FDECL(reverse_jmp_opcode, (int));
105 struct coord {
106 long x;
107 long y;
110 struct forloopdef {
111 char *varname;
112 long jmp_point;
114 static struct forloopdef forloop_list[MAX_NESTED_IFS];
115 static short n_forloops = 0;
118 sp_lev *splev = NULL;
120 static struct opvar *if_list[MAX_NESTED_IFS];
122 static short n_if_list = 0;
124 unsigned int max_x_map, max_y_map;
125 int obj_containment = 0;
127 int in_container_obj = 0;
129 /* integer value is possibly an inconstant value (eg. dice notation or a variable) */
130 int is_inconstant_number = 0;
132 int in_switch_statement = 0;
133 static struct opvar *switch_check_jump = NULL;
134 static struct opvar *switch_default_case = NULL;
135 static struct opvar *switch_case_list[MAX_SWITCH_CASES];
136 static long switch_case_value[MAX_SWITCH_CASES];
137 int n_switch_case_list = 0;
139 int allow_break_statements = 0;
140 struct lc_breakdef *break_list = NULL;
142 extern struct lc_vardefs *variable_definitions;
145 struct lc_vardefs *function_tmp_var_defs = NULL;
146 extern struct lc_funcdefs *function_definitions;
147 struct lc_funcdefs *curr_function = NULL;
148 struct lc_funcdefs_parm * curr_function_param = NULL;
149 int in_function_definition = 0;
150 sp_lev *function_splev_backup = NULL;
152 extern int fatal_error;
153 extern int got_errors;
154 extern int line_number;
155 extern const char *fname;
157 extern char curr_token[512];
159 typedef union
161 long i;
162 char* map;
163 struct {
164 long room;
165 long wall;
166 long door;
167 } corpos;
168 struct {
169 long area;
170 long x1;
171 long y1;
172 long x2;
173 long y2;
174 } lregn;
175 struct {
176 long x;
177 long y;
178 } crd;
179 struct {
180 long ter;
181 long lit;
182 } terr;
183 struct {
184 long height;
185 long width;
186 } sze;
187 struct {
188 long die;
189 long num;
190 } dice;
191 struct {
192 long cfunc;
193 char *varstr;
194 } meth;
195 } YYSTYPE;
196 #define CHAR 257
197 #define INTEGER 258
198 #define BOOLEAN 259
199 #define PERCENT 260
200 #define SPERCENT 261
201 #define MINUS_INTEGER 262
202 #define PLUS_INTEGER 263
203 #define MAZE_GRID_ID 264
204 #define SOLID_FILL_ID 265
205 #define MINES_ID 266
206 #define ROGUELEV_ID 267
207 #define MESSAGE_ID 268
208 #define MAZE_ID 269
209 #define LEVEL_ID 270
210 #define LEV_INIT_ID 271
211 #define GEOMETRY_ID 272
212 #define NOMAP_ID 273
213 #define OBJECT_ID 274
214 #define COBJECT_ID 275
215 #define MONSTER_ID 276
216 #define TRAP_ID 277
217 #define DOOR_ID 278
218 #define DRAWBRIDGE_ID 279
219 #define object_ID 280
220 #define monster_ID 281
221 #define terrain_ID 282
222 #define MAZEWALK_ID 283
223 #define WALLIFY_ID 284
224 #define REGION_ID 285
225 #define FILLING 286
226 #define IRREGULAR 287
227 #define JOINED 288
228 #define ALTAR_ID 289
229 #define LADDER_ID 290
230 #define STAIR_ID 291
231 #define NON_DIGGABLE_ID 292
232 #define NON_PASSWALL_ID 293
233 #define ROOM_ID 294
234 #define PORTAL_ID 295
235 #define TELEPRT_ID 296
236 #define BRANCH_ID 297
237 #define LEV 298
238 #define MINERALIZE_ID 299
239 #define CORRIDOR_ID 300
240 #define GOLD_ID 301
241 #define ENGRAVING_ID 302
242 #define FOUNTAIN_ID 303
243 #define POOL_ID 304
244 #define SINK_ID 305
245 #define NONE 306
246 #define RAND_CORRIDOR_ID 307
247 #define DOOR_STATE 308
248 #define LIGHT_STATE 309
249 #define CURSE_TYPE 310
250 #define ENGRAVING_TYPE 311
251 #define DIRECTION 312
252 #define RANDOM_TYPE 313
253 #define RANDOM_TYPE_BRACKET 314
254 #define A_REGISTER 315
255 #define ALIGNMENT 316
256 #define LEFT_OR_RIGHT 317
257 #define CENTER 318
258 #define TOP_OR_BOT 319
259 #define ALTAR_TYPE 320
260 #define UP_OR_DOWN 321
261 #define SUBROOM_ID 322
262 #define NAME_ID 323
263 #define FLAGS_ID 324
264 #define FLAG_TYPE 325
265 #define MON_ATTITUDE 326
266 #define MON_ALERTNESS 327
267 #define MON_APPEARANCE 328
268 #define ROOMDOOR_ID 329
269 #define IF_ID 330
270 #define ELSE_ID 331
271 #define TERRAIN_ID 332
272 #define HORIZ_OR_VERT 333
273 #define REPLACE_TERRAIN_ID 334
274 #define EXIT_ID 335
275 #define SHUFFLE_ID 336
276 #define QUANTITY_ID 337
277 #define BURIED_ID 338
278 #define LOOP_ID 339
279 #define FOR_ID 340
280 #define TO_ID 341
281 #define SWITCH_ID 342
282 #define CASE_ID 343
283 #define BREAK_ID 344
284 #define DEFAULT_ID 345
285 #define ERODED_ID 346
286 #define TRAPPED_STATE 347
287 #define RECHARGED_ID 348
288 #define INVIS_ID 349
289 #define GREASED_ID 350
290 #define FEMALE_ID 351
291 #define CANCELLED_ID 352
292 #define REVIVED_ID 353
293 #define AVENGE_ID 354
294 #define FLEEING_ID 355
295 #define BLINDED_ID 356
296 #define PARALYZED_ID 357
297 #define STUNNED_ID 358
298 #define CONFUSED_ID 359
299 #define SEENTRAPS_ID 360
300 #define ALL_ID 361
301 #define MONTYPE_ID 362
302 #define GRAVE_ID 363
303 #define ERODEPROOF_ID 364
304 #define FUNCTION_ID 365
305 #define MSG_OUTPUT_TYPE 366
306 #define COMPARE_TYPE 367
307 #define UNKNOWN_TYPE 368
308 #define rect_ID 369
309 #define fillrect_ID 370
310 #define line_ID 371
311 #define randline_ID 372
312 #define grow_ID 373
313 #define selection_ID 374
314 #define flood_ID 375
315 #define rndcoord_ID 376
316 #define circle_ID 377
317 #define ellipse_ID 378
318 #define filter_ID 379
319 #define complement_ID 380
320 #define gradient_ID 381
321 #define GRADIENT_TYPE 382
322 #define LIMITED 383
323 #define HUMIDITY_TYPE 384
324 #define STRING 385
325 #define MAP_ID 386
326 #define NQSTRING 387
327 #define VARSTRING 388
328 #define CFUNC 389
329 #define CFUNC_INT 390
330 #define CFUNC_STR 391
331 #define CFUNC_COORD 392
332 #define CFUNC_REGION 393
333 #define VARSTRING_INT 394
334 #define VARSTRING_INT_ARRAY 395
335 #define VARSTRING_STRING 396
336 #define VARSTRING_STRING_ARRAY 397
337 #define VARSTRING_VAR 398
338 #define VARSTRING_VAR_ARRAY 399
339 #define VARSTRING_COORD 400
340 #define VARSTRING_COORD_ARRAY 401
341 #define VARSTRING_REGION 402
342 #define VARSTRING_REGION_ARRAY 403
343 #define VARSTRING_MAPCHAR 404
344 #define VARSTRING_MAPCHAR_ARRAY 405
345 #define VARSTRING_MONST 406
346 #define VARSTRING_MONST_ARRAY 407
347 #define VARSTRING_OBJ 408
348 #define VARSTRING_OBJ_ARRAY 409
349 #define VARSTRING_SEL 410
350 #define VARSTRING_SEL_ARRAY 411
351 #define METHOD_INT 412
352 #define METHOD_INT_ARRAY 413
353 #define METHOD_STRING 414
354 #define METHOD_STRING_ARRAY 415
355 #define METHOD_VAR 416
356 #define METHOD_VAR_ARRAY 417
357 #define METHOD_COORD 418
358 #define METHOD_COORD_ARRAY 419
359 #define METHOD_REGION 420
360 #define METHOD_REGION_ARRAY 421
361 #define METHOD_MAPCHAR 422
362 #define METHOD_MAPCHAR_ARRAY 423
363 #define METHOD_MONST 424
364 #define METHOD_MONST_ARRAY 425
365 #define METHOD_OBJ 426
366 #define METHOD_OBJ_ARRAY 427
367 #define METHOD_SEL 428
368 #define METHOD_SEL_ARRAY 429
369 #define DICE 430
370 #define YYERRCODE 256
371 short yylhs[] = { -1,
372 0, 0, 73, 73, 74, 57, 57, 56, 56, 76,
373 76, 76, 76, 55, 55, 54, 54, 46, 46, 14,
374 14, 75, 75, 26, 26, 22, 22, 23, 78, 78,
375 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
376 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
377 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
378 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
379 78, 78, 59, 59, 59, 59, 59, 59, 59, 59,
380 59, 58, 58, 58, 58, 58, 58, 58, 58, 58,
381 60, 60, 60, 61, 61, 85, 84, 84, 84, 84,
382 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
383 84, 38, 38, 44, 44, 43, 43, 42, 42, 41,
384 41, 39, 39, 40, 40, 129, 130, 100, 101, 98,
385 45, 45, 31, 31, 31, 131, 133, 93, 134, 134,
386 136, 135, 137, 135, 99, 138, 138, 139, 140, 94,
387 141, 95, 142, 97, 144, 96, 143, 145, 143, 79,
388 110, 110, 110, 83, 83, 65, 146, 147, 113, 148,
389 112, 10, 10, 68, 68, 69, 69, 70, 70, 71,
390 71, 87, 87, 15, 15, 13, 13, 16, 16, 11,
391 11, 103, 103, 103, 1, 1, 2, 2, 105, 150,
392 105, 149, 20, 20, 21, 21, 21, 21, 21, 21,
393 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
394 35, 35, 35, 106, 152, 106, 151, 18, 18, 19,
395 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
396 19, 19, 19, 19, 120, 88, 104, 104, 121, 121,
397 102, 117, 118, 109, 119, 82, 17, 17, 91, 114,
398 108, 72, 72, 116, 115, 86, 107, 154, 111, 24,
399 24, 80, 81, 81, 81, 92, 89, 90, 90, 3,
400 3, 4, 4, 29, 29, 28, 28, 27, 27, 27,
401 5, 5, 6, 6, 7, 7, 7, 12, 12, 12,
402 8, 8, 9, 155, 155, 155, 132, 77, 77, 77,
403 77, 32, 32, 32, 30, 30, 127, 127, 127, 33,
404 124, 124, 124, 34, 34, 125, 125, 125, 36, 36,
405 36, 36, 126, 126, 126, 37, 37, 37, 37, 123,
406 123, 122, 122, 122, 122, 122, 122, 122, 122, 122,
407 122, 122, 50, 50, 157, 158, 158, 128, 128, 64,
408 64, 63, 63, 62, 62, 49, 49, 49, 49, 49,
409 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
410 49, 49, 49, 49, 48, 48, 156, 47, 47, 47,
411 153, 153, 153, 153, 51, 51, 52, 52, 53, 53,
412 25, 25, 67, 67, 66,
414 short yylen[] = { 2,
415 0, 1, 1, 2, 3, 3, 5, 1, 1, 5,
416 5, 3, 16, 0, 2, 0, 2, 0, 2, 1,
417 1, 0, 3, 3, 1, 0, 2, 3, 1, 1,
418 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
419 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
420 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
421 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
422 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
423 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
424 1, 1, 1, 1, 1, 3, 3, 5, 3, 5,
425 5, 5, 3, 3, 5, 5, 5, 7, 7, 7,
426 5, 1, 3, 1, 3, 1, 3, 1, 3, 1,
427 3, 1, 3, 1, 3, 0, 0, 8, 4, 1,
428 0, 1, 1, 5, 3, 0, 0, 9, 0, 2,
429 0, 5, 0, 4, 1, 2, 1, 6, 0, 3,
430 0, 6, 0, 4, 0, 4, 1, 0, 4, 3,
431 1, 3, 3, 5, 5, 7, 4, 0, 10, 0,
432 12, 0, 2, 5, 1, 5, 1, 5, 1, 5,
433 1, 9, 5, 1, 1, 1, 1, 1, 3, 1,
434 1, 1, 7, 5, 1, 1, 1, 1, 3, 0,
435 5, 4, 0, 3, 1, 1, 1, 1, 2, 1,
436 1, 1, 1, 1, 3, 3, 3, 1, 1, 3,
437 1, 1, 3, 3, 0, 5, 2, 0, 3, 1,
438 3, 1, 3, 3, 1, 1, 3, 1, 1, 1,
439 3, 1, 1, 1, 5, 7, 5, 8, 1, 3,
440 5, 5, 7, 7, 6, 5, 0, 2, 3, 3,
441 3, 1, 5, 9, 5, 3, 3, 0, 10, 0,
442 1, 7, 5, 5, 3, 5, 7, 9, 1, 1,
443 1, 1, 1, 0, 2, 1, 3, 1, 1, 1,
444 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
445 1, 1, 4, 1, 1, 4, 1, 1, 4, 1,
446 4, 5, 1, 3, 1, 3, 1, 1, 4, 9,
447 1, 1, 4, 1, 5, 1, 1, 4, 1, 1,
448 5, 1, 1, 1, 4, 1, 1, 5, 1, 1,
449 3, 1, 1, 3, 1, 4, 3, 3, 3, 3,
450 3, 3, 1, 1, 3, 1, 3, 0, 1, 1,
451 1, 1, 3, 0, 1, 1, 2, 2, 4, 6,
452 4, 6, 6, 6, 6, 2, 6, 8, 8, 10,
453 14, 2, 1, 3, 1, 3, 1, 1, 1, 1,
454 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
455 1, 1, 1, 10, 9,
457 short yydefred[] = { 0,
458 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
459 4, 0, 6, 0, 133, 0, 0, 0, 192, 0,
460 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
461 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
462 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
463 130, 0, 0, 0, 136, 145, 0, 0, 0, 0,
464 93, 82, 73, 83, 74, 84, 75, 85, 76, 86,
465 77, 87, 78, 88, 79, 89, 80, 90, 81, 5,
466 0, 92, 91, 0, 30, 0, 29, 31, 32, 33,
467 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
468 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
469 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
470 64, 65, 66, 67, 68, 69, 70, 71, 72, 149,
471 0, 0, 23, 0, 0, 0, 0, 0, 0, 0,
472 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
473 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
474 0, 0, 0, 0, 155, 0, 0, 0, 0, 94,
475 95, 0, 0, 0, 0, 342, 0, 345, 0, 387,
476 0, 343, 0, 153, 0, 27, 0, 9, 8, 7,
477 0, 304, 305, 0, 0, 340, 0, 0, 0, 12,
478 313, 0, 195, 196, 0, 0, 310, 0, 0, 308,
479 0, 337, 339, 0, 336, 334, 0, 333, 228, 224,
480 225, 330, 332, 0, 329, 327, 0, 326, 0, 0,
481 281, 280, 0, 291, 292, 0, 0, 0, 0, 0,
482 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
483 383, 250, 0, 366, 0, 318, 0, 317, 0, 0,
484 0, 0, 0, 403, 0, 0, 266, 267, 283, 282,
485 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
486 0, 0, 259, 261, 260, 390, 388, 389, 163, 162,
487 0, 184, 185, 0, 0, 0, 0, 96, 0, 0,
488 0, 0, 126, 0, 0, 0, 0, 135, 0, 0,
489 0, 0, 0, 0, 0, 362, 0, 0, 0, 396,
490 398, 395, 397, 399, 400, 0, 0, 0, 0, 0,
491 0, 103, 0, 0, 104, 0, 150, 24, 0, 0,
492 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
493 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
494 0, 0, 0, 367, 368, 0, 0, 0, 376, 0,
495 0, 0, 382, 0, 0, 0, 0, 0, 0, 0,
496 0, 0, 0, 0, 0, 132, 0, 0, 0, 0,
497 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
498 156, 0, 0, 151, 0, 0, 0, 0, 344, 352,
499 0, 0, 0, 0, 349, 350, 351, 129, 0, 154,
500 0, 0, 120, 118, 0, 0, 0, 0, 0, 0,
501 0, 0, 0, 0, 0, 341, 11, 262, 0, 10,
502 0, 0, 314, 0, 0, 0, 198, 197, 0, 173,
503 194, 0, 0, 0, 226, 0, 0, 203, 201, 245,
504 183, 0, 0, 0, 0, 0, 0, 0, 0, 0,
505 324, 0, 0, 322, 0, 321, 0, 0, 0, 384,
506 386, 0, 0, 293, 294, 0, 297, 0, 295, 0,
507 296, 251, 0, 0, 0, 252, 0, 175, 0, 0,
508 0, 0, 0, 256, 0, 0, 165, 164, 276, 401,
509 402, 0, 177, 0, 0, 0, 0, 0, 265, 0,
510 0, 147, 0, 0, 137, 274, 0, 0, 0, 356,
511 0, 346, 134, 363, 98, 0, 0, 105, 0, 111,
512 0, 106, 0, 107, 0, 102, 0, 101, 0, 100,
513 28, 306, 0, 0, 316, 309, 0, 311, 0, 0,
514 335, 393, 391, 392, 239, 236, 230, 0, 0, 235,
515 0, 240, 0, 242, 243, 0, 238, 229, 244, 232,
516 394, 0, 328, 0, 0, 0, 369, 0, 0, 0,
517 371, 0, 0, 0, 0, 0, 0, 0, 0, 0,
518 319, 0, 0, 0, 0, 0, 0, 167, 0, 0,
519 0, 0, 0, 255, 0, 0, 0, 0, 0, 0,
520 0, 0, 152, 146, 0, 0, 0, 127, 0, 0,
521 0, 0, 121, 119, 112, 0, 114, 0, 116, 0,
522 0, 0, 312, 193, 338, 0, 0, 0, 0, 0,
523 331, 0, 246, 0, 0, 189, 0, 0, 0, 0,
524 0, 0, 0, 0, 0, 0, 0, 0, 302, 301,
525 272, 0, 0, 253, 0, 179, 0, 0, 254, 258,
526 0, 0, 0, 0, 181, 0, 0, 187, 0, 186,
527 159, 0, 0, 353, 354, 355, 0, 357, 0, 110,
528 0, 109, 0, 108, 0, 0, 0, 234, 237, 241,
529 231, 0, 298, 206, 207, 0, 211, 210, 212, 213,
530 214, 0, 0, 0, 218, 219, 0, 299, 208, 204,
531 0, 0, 248, 0, 372, 0, 377, 0, 373, 0,
532 323, 374, 375, 0, 0, 0, 268, 303, 0, 0,
533 0, 0, 0, 0, 190, 191, 0, 0, 0, 168,
534 0, 0, 0, 0, 0, 0, 128, 113, 115, 117,
535 263, 0, 0, 0, 0, 0, 0, 0, 19, 0,
536 0, 325, 0, 0, 288, 289, 290, 0, 285, 0,
537 0, 0, 174, 0, 0, 278, 166, 176, 0, 0,
538 182, 264, 0, 143, 138, 140, 0, 300, 215, 216,
539 217, 222, 0, 220, 378, 0, 379, 0, 0, 0,
540 271, 269, 0, 0, 0, 170, 0, 169, 141, 0,
541 0, 0, 0, 0, 0, 320, 287, 0, 405, 178,
542 0, 180, 0, 144, 0, 223, 380, 15, 0, 404,
543 171, 142, 0, 0, 0, 0, 20, 21, 0, 0,
544 0, 13, 17, 381,
546 short yydgoto[] = { 3,
547 209, 449, 233, 271, 236, 486, 490, 671, 491, 351,
548 757, 729, 689, 859, 294, 467, 614, 354, 578, 584,
549 730, 80, 337, 822, 512, 133, 788, 789, 747, 345,
550 81, 210, 258, 476, 814, 228, 218, 636, 425, 426,
551 427, 428, 640, 638, 387, 733, 290, 375, 253, 696,
552 329, 330, 331, 861, 835, 190, 4, 82, 83, 84,
553 172, 314, 315, 316, 280, 264, 265, 500, 515, 678,
554 687, 440, 5, 6, 10, 85, 254, 86, 87, 88,
555 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
556 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
557 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
558 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
559 129, 277, 318, 478, 229, 219, 259, 529, 408, 697,
560 173, 278, 626, 765, 766, 843, 830, 524, 130, 187,
561 521, 319, 401, 295, 517, 272, 800, 841, 230, 359,
562 220, 355, 580, 790, 196, 182, 530, 531,
564 short yysindex[] = { 68,
565 17, 31, 0, -217, 0, 68, -257, -226, 112, 5680,
566 0, 136, 0, -136, 0, 170, 185, 201, 0, 225,
567 229, 238, 244, 248, 251, 255, 266, 272, 275, 283,
568 304, 309, 346, 366, 378, 380, 382, 383, 396, 397,
569 398, 400, 401, 404, 405, 413, 415, -46, 417, 420,
570 0, 426, 108, 489, 0, 0, 428, 101, -35, 449,
571 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
572 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
573 432, 0, 0, 430, 0, 5680, 0, 0, 0, 0,
574 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
575 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
576 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
577 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
578 -190, 450, 0, -234, 62, -13, 41, 41, 40, -252,
579 -121, 109, 109, 1644, -34, 109, 109, 92, -34, -34,
580 -249, -20, -20, -20, -35, 458, -35, 109, 1644, 1644,
581 1644, -160, -249, -174, 0, 1644, -34, 288, -35, 0,
582 0, 439, 414, 109, 467, 0, -22, 0, 421, 0,
583 -9, 0, -14, 0, 163, 0, 385, 0, 0, 0,
584 -136, 0, 0, 423, 465, 0, 471, 473, 475, 0,
585 0, 137, 0, 0, 490, 271, 0, 441, 496, 0,
586 503, 0, 0, 276, 0, 0, 452, 0, 0, 0,
587 0, 0, 0, 292, 0, 0, 470, 0, 512, 0,
588 0, 0, 518, 0, 0, 523, 524, 526, -34, -34,
589 109, 109, 540, 109, 542, 544, 545, 1644, 548, 5537,
590 0, 0, 533, 0, 331, 0, 500, 0, 555, 558,
591 559, 564, 347, 0, 571, 582, 0, 0, 0, 0,
592 367, 584, 379, 592, 594, 595, 141, 596, 402, 597,
593 588, 611, 0, 0, 0, 0, 0, 0, 0, 0,
594 617, 0, 0, 628, 385, 638, 640, 0, 593, -35,
595 -35, 644, 0, 649, 159, -35, -35, 0, -35, -35,
596 -35, -35, -35, 651, 650, 0, 141, 465, 5680, 0,
597 0, 0, 0, 0, 0, 642, -1, 4, 643, 647,
598 653, 0, 141, 465, 0, 5680, 0, 0, -35, -234,
599 445, 14, 455, 654, 614, 1644, 678, -35, 38, 476,
600 338, 682, -35, 688, 385, 690, -35, 109, 385, 109,
601 1644, 424, 431, 0, 0, 694, 696, 1298, 0, 109,
602 109, 5435, 0, 360, 704, 1644, 702, -35, -165, -83,
603 429, 491, 703, -20, 433, 0, 707, -24, 708, -20,
604 -20, -20, -35, 709, 10, 109, -91, -19, -121, 0,
605 0, 9, 9, 0, 45, 655, -254, 560, 0, 0,
606 75, 148, 79, 79, 0, 0, 0, 0, -14, 0,
607 1644, 711, 0, 0, 16, 25, 27, 29, 141, 465,
608 22, -10, -28, 631, 427, 0, 0, 0, 501, 0,
609 715, 137, 0, 719, 505, 459, 0, 0, 503, 0,
610 0, 381, 499, 2, 0, 403, 508, 0, 0, 0,
611 0, 721, 723, 109, 109, 662, 743, 748, 746, 749,
612 0, 750, 5448, 0, 701, 0, 751, 752, 753, 0,
613 0, 554, 536, 0, 0, 754, 0, 726, 0, 774,
614 0, 0, 775, 579, 785, 0, -165, 0, 581, 796,
615 583, 798, 800, 0, 802, 535, 0, 0, 0, 0,
616 0, 804, 0, 591, 806, 807, 521, 598, 0, 810,
617 385, 0, 811, -35, 0, 0, 465, 801, 815, 0,
618 814, 0, 0, 0, 0, 604, -35, 0, -234, 0,
619 -21, 0, 824, 0, 57, 0, 98, 0, 23, 0,
620 0, 0, 825, 621, 0, 0, 827, 0, 493, 839,
621 0, 0, 0, 0, 0, 0, 0, 823, 826, 0,
622 828, 0, 830, 0, 0, 832, 0, 0, 0, 0,
623 0, 841, 0, 848, -121, 641, 0, 857, 590, 1644,
624 0, -35, -35, 1644, 859, -35, 1644, 1644, 864, 861,
625 0, -249, 648, -148, 652, 135, 586, 0, 867, -5,
626 868, 528, 587, 0, -35, 870, -234, 871, 6, 72,
627 385, 9, 0, 0, 141, 793, 1, 0, 560, 166,
628 141, 465, 0, 0, 0, 32, 0, 33, 0, 35,
629 -165, 873, 0, 0, 0, -234, -35, -35, -35, 40,
630 0, 5526, 0, 876, -35, 0, 880, 174, 686, 881,
631 -165, 569, 882, 883, -35, 685, 900, 852, 0, 0,
632 0, 902, 691, 0, 693, 0, 110, 908, 0, 0,
633 928, -184, 465, 716, 0, 717, 900, 0, 929, 0,
634 0, 932, 90, 0, 0, 0, 385, 0, 57, 0,
635 98, 0, 23, 0, 936, 722, 465, 0, 0, 0,
636 0, 56, 0, 0, 0, -234, 0, 0, 0, 0,
637 0, 920, 921, 924, 0, 0, 925, 0, 0, 0,
638 465, 727, 0, 141, 0, 699, 0, -35, 0, 945,
639 0, 0, 0, 481, 943, 59, 0, 0, 744, 957,
640 965, 963, 6, -35, 0, 0, 967, 977, 982, 0,
641 -184, 767, -50, 971, 905, 90, 0, 0, 0, 0,
642 0, 987, 724, 465, -35, -35, -35, -261, 0, 991,
643 576, 0, -35, 777, 0, 0, 0, 989, 0, 385,
644 992, 780, 0, 38, 900, 0, 0, 0, 781, 385,
645 0, 0, 983, 0, 0, 0, 784, 0, 0, 0,
646 0, 0, 916, 0, 0, 758, 0, 93, 1004, 59,
647 0, 0, 788, 1006, 1007, 0, 1010, 0, 0, 5680,
648 1009, -261, 1016, 675, 1020, 0, 0, 1025, 0, 0,
649 385, 0, 5680, 0, -165, 0, 0, 0, 1023, 0,
650 0, 0, 1024, 109, -149, 1026, 0, 0, 876, 109,
651 1028, 0, 0, 0,
653 short yyrindex[] = { 1071,
654 0, 0, 0, 5225, 0, 1072, 0, 0, 0, 53,
655 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
656 0, 0, 0, 0, 0, 0, 2985, 0, 0, 0,
657 0, 0, 0, 0, 0, 0, 0, 3174, 0, 0,
658 0, 0, 0, 0, 3331, 0, 0, 0, 0, 0,
659 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
660 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
661 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
662 0, 0, 0, 0, 0, 182, 0, 0, 0, 0,
663 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
664 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
665 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
666 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
667 0, 5382, 0, 0, 0, 0, 0, 0, 0, 0,
668 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
669 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
670 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
671 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
672 0, 0, 1032, 0, 0, 0, 0, 0, 0, 0,
673 0, 0, 0, 0, 3520, 0, 0, 0, 0, 0,
674 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
675 689, 0, 0, 0, 0, 0, 0, 0, 0, 0,
676 0, 0, 0, 0, 0, 0, 0, 0, 0, 1947,
677 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
678 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
679 0, 0, 1098, 0, 0, 0, 0, 0, 0, 0,
680 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
681 136, 0, 0, 0, 0, 0, 720, 0, 0, 0,
682 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
683 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
684 0, 3677, 0, 0, 0, 0, 0, 0, 0, 0,
685 0, 0, 0, 0, 1033, 0, 241, 247, 0, 0,
686 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
687 0, 0, 3866, 4023, 0, 951, 0, 0, 0, 0,
688 0, 0, 0, 984, 0, 0, 0, 0, 0, 0,
689 0, 0, 0, 2136, 0, 0, 0, 0, 0, 0,
690 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
691 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
692 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
693 0, 0, 0, 0, 0, 0, 0, 0, 0, 2293,
694 0, 0, 0, 0, 0, 0, 0, 1037, 0, 0,
695 0, 0, 374, 531, 0, 0, 0, 0, 0, 0,
696 0, 553, 0, 0, 0, 0, 0, 0, 42, 49,
697 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
698 0, 0, 0, 0, 0, 0, 0, 0, 689, 0,
699 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
700 0, 0, 4212, 0, 0, 1035, 0, 0, 0, 0,
701 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
702 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
703 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
704 0, 0, 4369, 0, 0, 0, 0, 0, 0, 0,
705 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
706 0, 0, 0, 0, 0, 0, 4558, 0, 0, 0,
707 1039, 0, 0, 0, 0, 0, 0, 0, 0, 0,
708 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
709 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
710 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
711 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
712 0, 0, 0, 2482, 0, 0, 0, 0, 0, 0,
713 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
714 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
715 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
716 0, 0, 0, 0, 958, 0, 0, 0, 0, 0,
717 50, 52, 0, 0, 0, 0, 0, 0, 0, 0,
718 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
719 0, 0, 0, 4715, 0, 0, 0, 0, 0, 0,
720 0, 0, 0, 0, 0, 0, 2639, 0, 0, 0,
721 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
722 0, 0, 4904, 0, 0, 0, 959, 0, 0, 0,
723 0, 0, 961, 0, 0, 0, 0, 0, 0, 0,
724 0, 0, 0, 0, 0, 0, 1255, 0, 0, 0,
725 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
726 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
727 1444, 0, 0, 909, 0, 0, 0, 0, 0, 0,
728 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
729 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
730 0, 0, 0, 0, 0, 961, 0, 0, 0, 0,
731 0, 0, 0, 1601, 0, 0, 0, 0, 0, 0,
732 0, 0, 0, 0, 0, 0, 0, 2828, 0, 5061,
733 0, 0, 0, 0, 959, 0, 0, 0, 0, 0,
734 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
735 0, 0, 1790, 0, 0, 0, 0, 128, 0, 0,
736 0, 0, 0, 0, 0, 0, 0, 0, 0, -69,
737 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
738 0, 0, -69, 0, 0, 0, 0, 0, 0, 0,
739 0, 0, 0, 0, 0, 1043, 0, 0, 4715, 0,
740 0, 0, 0, 0,
742 short yygindex[] = { 0,
743 410, 294, 0, 487, -329, -480, 0, 0, 438, 645,
744 330, 0, 0, 0, 0, -474, 0, 0, 0, 0,
745 0, -86, -287, 0, 0, 901, 0, 273, -629, 657,
746 1047, -296, -297, -509, 264, -504, -494, 0, 0, 0,
747 0, 0, 0, 0, 0, 242, -384, -137, 849, 0,
748 0, 0, 0, 0, 0, 0, 0, 1046, 934, -371,
749 0, 0, 0, 684, 710, 0, -48, 0, 0, 0,
750 351, 0, 1100, 0, 0, 0, -133, 790, 0, 0,
751 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
752 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
753 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
754 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
755 0, -58, -130, -355, -375, 679, -84, 0, 0, 0,
756 0, -167, 0, 345, 0, 0, 0, 0, 0, 0,
757 0, 0, 0, 0, 0, 949, 0, 0, 0, 0,
758 975, 0, 0, 0, 792, 680, 504, 0,
760 #define YYTABLESIZE 6091
761 short yytable[] = { 186,
762 181, 299, 211, 195, 177, 255, 252, 400, 237, 238,
763 507, 518, 260, 261, 266, 499, 608, 177, 206, 273,
764 514, 283, 284, 285, 282, 177, 206, 313, 296, 224,
765 424, 423, 311, 309, 677, 310, 528, 312, 177, 639,
766 302, 206, 637, 327, 59, 686, 519, 520, 518, 279,
767 635, 332, 26, 439, 334, 26, 548, 760, 526, 537,
768 231, 214, 518, 269, 267, 268, 188, 455, 539, 516,
769 541, 459, 543, 755, 7, 699, 701, 550, 703, 224,
770 214, 313, 297, 308, 292, 122, 311, 309, 8, 310,
771 523, 312, 124, 123, 549, 125, 214, 286, 281, 812,
772 335, 287, 288, 274, 275, 276, 9, 366, 367, 857,
773 369, 313, 547, 773, 656, 313, 311, 309, 305, 310,
774 311, 312, 189, 813, 317, 312, 333, 12, 756, 313,
775 192, 263, 232, 406, 311, 270, 834, 224, 293, 312,
776 538, 193, 194, 484, 545, 690, 603, 485, 206, 540,
777 192, 542, 289, 544, 364, 365, 700, 702, 13, 704,
778 705, 193, 194, 858, 669, 826, 122, 532, 14, 14,
779 348, 670, 348, 124, 123, 643, 125, 313, 673, 131,
780 740, 26, 311, 309, 313, 310, 234, 312, 132, 311,
781 309, 235, 310, 770, 312, 313, 769, 430, 169, 410,
782 311, 309, 327, 310, 768, 312, 643, 286, 444, 666,
783 313, 287, 288, 15, 737, 311, 309, 736, 310, 510,
784 312, 511, 176, 461, 458, 505, 460, 134, 471, 487,
785 468, 488, 489, 623, 477, 176, 469, 470, 481, 304,
786 533, 405, 135, 176, 633, 634, 222, 411, 412, 434,
787 413, 414, 415, 416, 417, 653, 422, 528, 136, 562,
788 304, 176, 509, 563, 564, 471, 692, 286, 305, 429,
789 438, 287, 288, 26, 711, 26, 527, 262, 212, 471,
790 435, 360, 137, 535, 360, 328, 138, 361, 498, 446,
791 361, 201, 202, 513, 453, 139, 222, 212, 457, 201,
792 202, 140, 223, 203, 204, 141, 26, 676, 142, 565,
793 566, 567, 143, 212, 201, 202, 201, 202, 685, 483,
794 579, 26, 26, 144, 568, 197, 198, 199, 200, 145,
795 587, 588, 146, 691, 213, 495, 1, 2, 569, 570,
796 147, 502, 503, 504, 785, 786, 787, 571, 572, 573,
797 574, 575, 223, 213, 222, 447, 448, 307, 178, 179,
798 317, 148, 205, 576, 853, 577, 149, 256, 257, 213,
799 192, 178, 179, 347, 225, 474, 475, 205, 803, 178,
800 179, 193, 194, 466, 688, 522, 207, 208, 192, 262,
801 694, 695, 178, 179, 180, 226, 227, 178, 179, 193,
802 194, 207, 208, 150, 201, 202, 215, 180, 632, 767,
803 223, 347, 474, 475, 347, 180, 347, 347, 347, 347,
804 176, 201, 202, 151, 225, 215, 203, 204, 180, 216,
805 217, 180, 763, 180, 764, 152, 320, 153, 321, 154,
806 155, 215, 322, 323, 324, 226, 227, 681, 216, 217,
807 26, 26, 657, 156, 157, 158, 660, 159, 160, 663,
808 664, 161, 162, 313, 347, 625, 347, 205, 311, 309,
809 163, 310, 164, 312, 166, 201, 202, 167, 631, 708,
810 709, 710, 225, 168, 205, 174, 683, 175, 183, 184,
811 185, 207, 208, 191, 325, 313, 347, 279, 347, 300,
812 311, 309, 821, 310, 301, 312, 303, 336, 207, 208,
813 340, 306, 828, 339, 341, 707, 342, 313, 343, 552,
814 344, 731, 311, 309, 26, 783, 26, 312, 347, 346,
815 348, 348, 352, 658, 659, 313, 326, 662, 205, 349,
816 311, 309, 353, 310, 313, 312, 350, 192, 356, 311,
817 309, 558, 310, 851, 312, 358, 178, 179, 193, 194,
818 357, 360, 207, 208, 256, 257, 361, 362, 348, 363,
819 376, 348, 313, 348, 348, 348, 348, 311, 309, 368,
820 310, 370, 312, 371, 372, 774, 796, 374, 377, 342,
821 378, 561, 180, 342, 342, 342, 734, 342, 379, 342,
822 583, 380, 381, 382, 383, 313, 744, 809, 810, 811,
823 311, 309, 313, 310, 384, 312, 817, 311, 309, 816,
824 310, 348, 312, 348, 313, 385, 386, 388, 601, 311,
825 309, 396, 310, 347, 312, 390, 389, 391, 392, 393,
826 395, 347, 347, 347, 347, 347, 347, 347, 347, 347,
827 347, 347, 347, 348, 397, 348, 347, 347, 347, 394,
828 398, 741, 347, 347, 347, 347, 347, 347, 347, 347,
829 347, 399, 347, 347, 347, 347, 347, 347, 347, 781,
830 347, 402, 63, 403, 65, 404, 67, 407, 69, 409,
831 71, 418, 73, 419, 75, 347, 77, 442, 79, 421,
832 431, 437, 347, 347, 432, 347, 443, 347, 347, 347,
833 433, 441, 347, 347, 347, 347, 347, 347, 347, 307,
834 856, 445, 313, 451, 818, 452, 863, 311, 309, 738,
835 310, 454, 312, 456, 450, 462, 347, 464, 347, 465,
836 347, 479, 463, 844, 480, 482, 494, 525, 493, 492,
837 497, 501, 506, 496, 536, 551, 852, 553, 554, 556,
838 347, 347, 557, 307, 585, 560, 586, 347, 347, 347,
839 347, 347, 347, 347, 347, 347, 347, 347, 347, 347,
840 347, 347, 347, 347, 347, 589, 590, 582, 591, 592,
841 348, 596, 593, 594, 597, 598, 599, 602, 348, 348,
842 348, 348, 348, 348, 348, 348, 348, 348, 348, 348,
843 307, 600, 307, 348, 348, 348, 603, 604, 605, 348,
844 348, 348, 348, 348, 348, 348, 348, 348, 607, 348,
845 348, 348, 348, 348, 348, 348, 606, 348, 609, 610,
846 611, 612, 307, 613, 307, 615, 616, 617, 618, 619,
847 620, 621, 348, 622, 595, 628, 624, 629, 627, 348,
848 348, 630, 348, 255, 348, 348, 348, 643, 641, 348,
849 348, 348, 348, 348, 348, 348, 170, 642, 644, 645,
850 646, 651, 62, 647, 64, 648, 66, 649, 68, 650,
851 70, 652, 72, 348, 74, 348, 76, 348, 78, 654,
852 655, 466, 661, 665, 666, 668, 674, 680, 370, 672,
853 675, 673, 679, 682, 684, 693, 706, 348, 348, 732,
854 735, 739, 742, 743, 348, 348, 348, 348, 348, 348,
855 348, 348, 348, 348, 348, 348, 348, 348, 348, 348,
856 348, 348, 745, 746, 748, 749, 370, 61, 750, 370,
857 751, 753, 370, 62, 63, 64, 65, 66, 67, 68,
858 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
859 79, 754, 761, 758, 759, 762, 771, 775, 776, 307,
860 772, 777, 778, 779, 780, 782, 784, 307, 307, 307,
861 307, 307, 307, 307, 307, 307, 307, 307, 307, 370,
862 792, 791, 307, 307, 307, 793, 794, 797, 307, 307,
863 307, 307, 307, 307, 307, 307, 307, 798, 307, 307,
864 307, 307, 307, 307, 307, 799, 307, 802, 804, 805,
865 807, 815, 820, 370, 819, 823, 808, 824, 827, 832,
866 829, 307, 831, 833, 836, 838, 839, 840, 307, 307,
867 842, 307, 845, 307, 307, 307, 847, 848, 307, 307,
868 849, 307, 307, 307, 307, 850, 854, 855, 864, 860,
869 1, 3, 364, 365, 172, 26, 315, 358, 188, 359,
870 148, 284, 307, 16, 307, 139, 752, 825, 667, 728,
871 801, 338, 837, 559, 165, 846, 373, 385, 555, 171,
872 862, 298, 534, 795, 508, 11, 307, 307, 420, 546,
873 806, 291, 221, 307, 307, 307, 307, 307, 307, 307,
874 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
875 307, 436, 698, 581, 0, 0, 0, 0, 385, 0,
876 0, 385, 0, 0, 0, 0, 0, 0, 0, 0,
877 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
878 0, 0, 0, 0, 0, 0, 0, 0, 370, 0,
879 0, 0, 0, 0, 0, 0, 370, 370, 370, 370,
880 370, 370, 370, 370, 370, 370, 370, 370, 385, 0,
881 0, 370, 370, 370, 0, 0, 0, 370, 370, 370,
882 370, 370, 370, 370, 370, 370, 0, 370, 370, 370,
883 370, 370, 370, 370, 0, 370, 0, 0, 0, 0,
884 0, 0, 385, 0, 0, 0, 0, 0, 0, 0,
885 370, 0, 0, 0, 0, 0, 0, 370, 370, 0,
886 370, 0, 370, 370, 370, 0, 0, 370, 370, 0,
887 370, 370, 370, 370, 233, 0, 0, 0, 0, 0,
888 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
889 0, 370, 0, 370, 0, 0, 0, 0, 0, 0,
890 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
891 0, 0, 0, 0, 0, 370, 370, 0, 233, 0,
892 0, 0, 370, 370, 370, 370, 370, 370, 370, 370,
893 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
894 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
895 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
896 0, 0, 0, 0, 0, 233, 0, 0, 0, 0,
897 0, 0, 0, 0, 0, 0, 0, 385, 0, 0,
898 0, 0, 0, 0, 0, 385, 385, 385, 385, 385,
899 385, 385, 385, 385, 385, 385, 385, 233, 0, 233,
900 385, 385, 385, 0, 0, 0, 385, 385, 385, 385,
901 385, 385, 385, 385, 385, 0, 385, 385, 385, 385,
902 385, 385, 385, 0, 385, 0, 0, 0, 0, 0,
903 0, 0, 0, 0, 0, 0, 0, 0, 0, 385,
904 0, 0, 0, 0, 0, 0, 385, 385, 0, 385,
905 0, 385, 385, 385, 0, 0, 385, 385, 0, 385,
906 385, 385, 385, 205, 0, 0, 0, 0, 0, 0,
907 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
908 385, 0, 385, 0, 0, 0, 0, 0, 0, 0,
909 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
910 0, 0, 0, 0, 385, 385, 0, 205, 0, 0,
911 0, 385, 385, 385, 385, 385, 385, 385, 385, 385,
912 385, 385, 385, 385, 385, 385, 385, 385, 385, 0,
913 0, 0, 0, 0, 233, 0, 0, 0, 0, 0,
914 0, 0, 233, 233, 233, 233, 233, 233, 233, 233,
915 233, 233, 233, 233, 205, 0, 0, 233, 233, 233,
916 0, 0, 0, 233, 233, 233, 233, 233, 233, 233,
917 233, 233, 0, 233, 233, 233, 233, 233, 233, 233,
918 0, 233, 0, 0, 0, 0, 205, 0, 205, 0,
919 0, 0, 0, 0, 0, 0, 233, 0, 0, 0,
920 0, 0, 0, 233, 233, 0, 233, 0, 233, 233,
921 233, 0, 0, 233, 233, 0, 233, 233, 233, 233,
922 209, 0, 0, 0, 0, 0, 0, 0, 0, 466,
923 201, 202, 0, 0, 0, 0, 0, 233, 0, 233,
924 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
925 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
926 0, 233, 233, 0, 209, 0, 0, 0, 233, 233,
927 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
928 233, 233, 233, 233, 233, 233, 239, 240, 241, 242,
929 243, 0, 244, 205, 245, 246, 247, 248, 249, 0,
930 0, 0, 0, 250, 0, 0, 0, 0, 0, 0,
931 0, 209, 0, 0, 0, 0, 0, 207, 208, 0,
932 0, 0, 0, 205, 0, 0, 0, 251, 0, 0,
933 0, 205, 205, 205, 205, 205, 205, 205, 205, 205,
934 205, 205, 205, 209, 0, 209, 205, 205, 205, 0,
935 0, 0, 205, 205, 205, 205, 205, 205, 205, 205,
936 205, 0, 205, 205, 205, 205, 205, 205, 205, 0,
937 205, 0, 0, 0, 0, 0, 0, 0, 0, 0,
938 0, 0, 0, 0, 0, 205, 0, 0, 0, 0,
939 0, 0, 205, 205, 0, 205, 0, 205, 205, 205,
940 0, 0, 205, 205, 0, 205, 205, 205, 205, 221,
941 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
942 0, 0, 0, 0, 0, 0, 205, 0, 205, 0,
943 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
944 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
945 205, 205, 0, 221, 0, 0, 0, 205, 205, 205,
946 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
947 205, 205, 205, 205, 205, 0, 0, 0, 0, 0,
948 209, 0, 0, 0, 0, 0, 0, 0, 209, 209,
949 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
950 221, 0, 0, 209, 209, 209, 0, 0, 0, 209,
951 209, 209, 209, 209, 209, 209, 209, 209, 0, 209,
952 209, 209, 209, 209, 209, 209, 0, 209, 0, 0,
953 0, 0, 221, 0, 221, 0, 0, 0, 0, 0,
954 0, 0, 209, 0, 0, 0, 0, 0, 0, 209,
955 209, 0, 209, 0, 209, 209, 209, 0, 0, 209,
956 209, 0, 209, 209, 209, 209, 199, 0, 0, 0,
957 0, 0, 0, 0, 0, 0, 201, 202, 0, 0,
958 0, 0, 0, 209, 0, 209, 0, 0, 0, 0,
959 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
960 0, 0, 0, 0, 0, 0, 0, 209, 209, 0,
961 0, 0, 0, 0, 209, 209, 209, 209, 209, 209,
962 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
963 209, 209, 239, 240, 241, 242, 243, 0, 244, 205,
964 245, 246, 247, 248, 249, 0, 0, 0, 0, 0,
965 0, 0, 0, 0, 0, 0, 0, 199, 0, 0,
966 0, 0, 0, 207, 208, 0, 0, 0, 0, 221,
967 0, 0, 0, 251, 0, 0, 0, 221, 221, 221,
968 221, 221, 221, 221, 221, 221, 221, 221, 221, 200,
969 0, 199, 221, 221, 221, 0, 0, 0, 221, 221,
970 221, 221, 221, 221, 221, 221, 221, 0, 221, 221,
971 221, 221, 221, 221, 221, 0, 221, 0, 0, 0,
972 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
973 0, 221, 0, 0, 0, 0, 0, 0, 221, 221,
974 0, 221, 0, 221, 221, 221, 0, 0, 221, 221,
975 0, 221, 221, 221, 221, 227, 0, 0, 0, 0,
976 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
977 0, 0, 221, 0, 221, 0, 0, 0, 0, 0,
978 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
979 0, 0, 0, 0, 0, 0, 221, 221, 0, 0,
980 0, 0, 0, 221, 221, 221, 221, 221, 221, 221,
981 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
982 221, 0, 0, 0, 0, 0, 199, 0, 0, 0,
983 0, 0, 0, 0, 199, 199, 199, 199, 199, 199,
984 199, 199, 199, 199, 199, 199, 227, 0, 0, 199,
985 199, 199, 0, 0, 0, 199, 199, 199, 199, 199,
986 199, 199, 199, 199, 0, 199, 199, 199, 199, 199,
987 199, 199, 0, 199, 0, 0, 0, 0, 227, 0,
988 227, 0, 0, 0, 0, 0, 0, 0, 199, 0,
989 0, 0, 0, 0, 0, 199, 199, 0, 199, 0,
990 199, 199, 199, 0, 0, 199, 199, 0, 199, 199,
991 199, 199, 157, 0, 0, 0, 0, 0, 0, 0,
992 0, 0, 0, 0, 0, 0, 0, 0, 0, 199,
993 0, 199, 0, 0, 0, 0, 0, 0, 0, 0,
994 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
995 0, 0, 0, 199, 199, 0, 0, 0, 0, 0,
996 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
997 199, 199, 199, 199, 199, 199, 199, 199, 0, 0,
998 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
999 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1000 0, 0, 0, 157, 0, 0, 0, 0, 0, 0,
1001 0, 0, 0, 0, 0, 227, 0, 0, 0, 0,
1002 0, 0, 0, 227, 227, 227, 227, 227, 227, 227,
1003 227, 227, 227, 227, 227, 0, 0, 157, 227, 227,
1004 227, 0, 0, 0, 227, 227, 227, 227, 227, 227,
1005 227, 227, 227, 0, 227, 227, 227, 227, 227, 227,
1006 227, 0, 227, 0, 0, 0, 0, 0, 0, 0,
1007 0, 0, 0, 0, 0, 0, 0, 227, 0, 0,
1008 0, 0, 0, 0, 227, 227, 0, 227, 0, 227,
1009 227, 227, 0, 0, 227, 227, 0, 227, 227, 227,
1010 227, 202, 0, 0, 0, 0, 0, 0, 0, 0,
1011 0, 0, 0, 0, 0, 0, 0, 0, 227, 0,
1012 227, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1013 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1014 0, 0, 227, 227, 0, 0, 0, 0, 0, 227,
1015 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1016 227, 227, 227, 227, 227, 227, 227, 0, 0, 0,
1017 0, 0, 157, 0, 0, 0, 0, 0, 0, 0,
1018 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1019 157, 157, 202, 0, 0, 157, 157, 157, 0, 0,
1020 0, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1021 0, 157, 157, 157, 157, 157, 157, 157, 0, 157,
1022 0, 0, 0, 0, 202, 0, 202, 0, 0, 0,
1023 0, 0, 0, 0, 157, 0, 0, 0, 0, 0,
1024 0, 157, 157, 158, 157, 0, 157, 157, 157, 0,
1025 0, 157, 157, 0, 157, 157, 157, 157, 284, 0,
1026 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1027 0, 0, 0, 0, 0, 157, 0, 157, 0, 0,
1028 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1029 0, 0, 0, 0, 0, 0, 0, 0, 0, 157,
1030 157, 0, 0, 0, 0, 0, 157, 157, 157, 157,
1031 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1032 157, 157, 157, 157, 0, 0, 0, 0, 0, 0,
1033 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1034 0, 0, 0, 0, 0, 0, 0, 0, 0, 284,
1035 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1036 0, 202, 0, 0, 0, 0, 0, 0, 0, 202,
1037 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
1038 202, 284, 0, 284, 202, 202, 202, 0, 0, 0,
1039 202, 202, 202, 202, 202, 202, 202, 202, 202, 0,
1040 202, 202, 202, 202, 202, 202, 202, 0, 202, 0,
1041 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1042 0, 0, 0, 202, 0, 0, 0, 0, 0, 0,
1043 202, 202, 0, 202, 0, 202, 202, 202, 0, 0,
1044 202, 202, 0, 202, 202, 202, 202, 286, 0, 0,
1045 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1046 0, 0, 0, 0, 202, 0, 202, 0, 0, 0,
1047 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1048 0, 0, 0, 0, 0, 0, 0, 0, 202, 202,
1049 0, 0, 0, 0, 0, 202, 202, 202, 202, 202,
1050 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
1051 202, 202, 202, 0, 0, 0, 0, 0, 284, 0,
1052 0, 0, 0, 0, 0, 0, 284, 284, 284, 284,
1053 284, 284, 284, 284, 284, 284, 284, 284, 286, 0,
1054 0, 284, 284, 284, 0, 0, 0, 284, 284, 284,
1055 284, 284, 284, 284, 284, 284, 0, 284, 284, 284,
1056 284, 284, 284, 284, 0, 284, 0, 0, 0, 0,
1057 286, 0, 286, 0, 0, 0, 0, 0, 0, 0,
1058 284, 0, 0, 0, 0, 0, 0, 284, 284, 0,
1059 284, 0, 284, 284, 284, 0, 0, 284, 284, 0,
1060 284, 284, 284, 284, 249, 0, 0, 0, 0, 0,
1061 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1062 0, 284, 0, 284, 0, 0, 0, 0, 0, 0,
1063 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1064 0, 0, 0, 0, 0, 284, 284, 0, 0, 0,
1065 0, 0, 284, 284, 284, 284, 284, 284, 284, 284,
1066 284, 284, 284, 284, 284, 284, 284, 284, 284, 284,
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, 249, 0, 0, 0, 0,
1070 0, 0, 0, 0, 0, 0, 0, 286, 0, 0,
1071 0, 0, 0, 0, 0, 286, 286, 286, 286, 286,
1072 286, 286, 286, 286, 286, 286, 286, 0, 0, 249,
1073 286, 286, 286, 0, 0, 0, 286, 286, 286, 286,
1074 286, 286, 286, 286, 286, 0, 286, 286, 286, 286,
1075 286, 286, 286, 0, 286, 0, 0, 0, 0, 0,
1076 0, 0, 0, 0, 0, 0, 0, 0, 0, 286,
1077 0, 0, 0, 0, 0, 0, 286, 286, 0, 286,
1078 0, 286, 286, 286, 0, 0, 286, 286, 0, 286,
1079 286, 286, 286, 279, 0, 0, 0, 0, 0, 0,
1080 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1081 286, 0, 286, 0, 0, 0, 0, 0, 0, 0,
1082 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1083 0, 0, 0, 0, 286, 286, 0, 0, 0, 0,
1084 0, 286, 286, 286, 286, 286, 286, 286, 286, 286,
1085 286, 286, 286, 286, 286, 286, 286, 286, 286, 0,
1086 0, 0, 0, 0, 249, 0, 0, 0, 0, 0,
1087 0, 0, 249, 249, 249, 249, 249, 249, 249, 249,
1088 249, 249, 249, 249, 279, 0, 0, 249, 249, 249,
1089 0, 0, 0, 249, 249, 249, 249, 249, 249, 249,
1090 249, 249, 0, 249, 249, 249, 249, 249, 249, 249,
1091 0, 249, 0, 0, 0, 0, 0, 0, 279, 0,
1092 0, 0, 0, 0, 0, 0, 249, 0, 0, 0,
1093 0, 0, 0, 249, 249, 0, 249, 0, 249, 249,
1094 249, 0, 0, 249, 249, 0, 249, 249, 249, 249,
1095 161, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1096 0, 0, 0, 0, 0, 0, 0, 249, 0, 249,
1097 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1098 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1099 0, 249, 249, 0, 0, 0, 0, 0, 249, 249,
1100 249, 249, 249, 249, 249, 249, 249, 249, 249, 249,
1101 249, 249, 249, 249, 249, 249, 0, 0, 0, 0,
1102 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1103 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1104 0, 161, 0, 0, 0, 0, 0, 0, 0, 0,
1105 0, 0, 0, 279, 0, 0, 0, 0, 0, 0,
1106 0, 279, 279, 279, 279, 279, 279, 279, 279, 279,
1107 279, 279, 279, 0, 0, 161, 279, 279, 279, 0,
1108 0, 0, 279, 279, 279, 279, 279, 279, 279, 279,
1109 279, 0, 279, 279, 279, 279, 279, 279, 279, 0,
1110 279, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1111 0, 0, 0, 0, 0, 279, 0, 0, 0, 0,
1112 0, 0, 279, 279, 0, 279, 0, 279, 279, 279,
1113 0, 0, 279, 279, 0, 279, 279, 279, 279, 160,
1114 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1115 0, 0, 0, 0, 0, 0, 279, 0, 279, 0,
1116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1117 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1118 279, 279, 0, 0, 0, 0, 0, 279, 279, 279,
1119 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
1120 279, 279, 279, 279, 279, 0, 0, 0, 0, 0,
1121 161, 0, 0, 0, 0, 0, 0, 0, 161, 161,
1122 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
1123 160, 0, 0, 161, 161, 161, 0, 0, 0, 161,
1124 161, 161, 161, 161, 161, 161, 161, 161, 0, 161,
1125 161, 161, 161, 161, 161, 161, 0, 161, 0, 0,
1126 0, 0, 0, 0, 160, 0, 0, 0, 0, 0,
1127 0, 0, 161, 0, 0, 0, 0, 0, 0, 161,
1128 161, 0, 161, 0, 161, 161, 161, 0, 0, 161,
1129 161, 0, 161, 161, 161, 161, 275, 0, 0, 0,
1130 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1131 0, 0, 0, 161, 0, 161, 0, 0, 0, 0,
1132 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1133 0, 0, 0, 0, 0, 0, 0, 161, 161, 0,
1134 0, 0, 0, 0, 161, 161, 161, 161, 161, 161,
1135 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
1136 161, 161, 0, 0, 0, 0, 0, 0, 0, 0,
1137 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1138 0, 0, 0, 0, 0, 0, 0, 275, 0, 0,
1139 0, 0, 0, 0, 0, 0, 0, 0, 0, 160,
1140 0, 0, 0, 0, 0, 0, 0, 160, 160, 160,
1141 160, 160, 160, 160, 160, 160, 160, 160, 160, 0,
1142 0, 275, 160, 160, 160, 0, 0, 0, 160, 160,
1143 160, 160, 160, 160, 160, 160, 160, 0, 160, 160,
1144 160, 160, 160, 160, 160, 0, 160, 0, 0, 0,
1145 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1146 0, 160, 0, 0, 0, 0, 0, 0, 160, 160,
1147 0, 160, 0, 160, 160, 160, 0, 0, 160, 160,
1148 0, 160, 160, 160, 160, 97, 0, 0, 0, 0,
1149 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1150 0, 0, 160, 0, 160, 0, 0, 0, 0, 0,
1151 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1152 0, 0, 0, 0, 0, 0, 160, 160, 0, 0,
1153 0, 0, 0, 160, 160, 160, 160, 160, 160, 160,
1154 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
1155 160, 0, 0, 0, 0, 0, 275, 0, 0, 0,
1156 0, 0, 0, 0, 275, 275, 275, 275, 275, 275,
1157 275, 275, 275, 275, 275, 275, 97, 0, 0, 275,
1158 275, 275, 0, 0, 0, 275, 275, 275, 275, 275,
1159 275, 275, 275, 275, 0, 275, 275, 275, 275, 275,
1160 275, 275, 0, 275, 0, 0, 0, 0, 0, 0,
1161 97, 0, 0, 0, 0, 0, 0, 0, 275, 0,
1162 0, 0, 0, 0, 0, 275, 275, 0, 275, 0,
1163 275, 275, 275, 0, 0, 275, 275, 0, 275, 275,
1164 275, 275, 99, 0, 0, 0, 0, 0, 0, 0,
1165 0, 0, 0, 0, 0, 0, 0, 0, 0, 275,
1166 0, 275, 0, 0, 0, 0, 0, 0, 0, 0,
1167 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1168 0, 0, 0, 275, 275, 0, 0, 0, 0, 0,
1169 275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
1170 275, 275, 275, 275, 275, 275, 275, 275, 0, 0,
1171 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1172 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1173 0, 0, 0, 99, 0, 0, 0, 0, 0, 0,
1174 0, 0, 0, 0, 0, 97, 0, 0, 0, 0,
1175 0, 0, 0, 97, 97, 97, 97, 97, 97, 97,
1176 97, 97, 97, 97, 97, 0, 0, 99, 97, 97,
1177 97, 0, 0, 0, 97, 97, 97, 97, 97, 97,
1178 97, 97, 97, 0, 97, 97, 97, 97, 97, 97,
1179 97, 0, 97, 0, 0, 0, 0, 0, 0, 0,
1180 0, 0, 0, 0, 0, 0, 0, 97, 0, 0,
1181 0, 0, 0, 0, 97, 97, 0, 97, 0, 97,
1182 97, 97, 0, 0, 97, 97, 0, 97, 97, 97,
1183 97, 247, 0, 0, 0, 0, 0, 0, 0, 0,
1184 0, 0, 0, 0, 0, 0, 0, 0, 97, 0,
1185 97, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1186 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1187 0, 0, 97, 97, 0, 0, 0, 0, 0, 97,
1188 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
1189 97, 97, 97, 97, 97, 97, 97, 0, 0, 0,
1190 0, 0, 99, 0, 0, 0, 0, 0, 0, 0,
1191 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1192 99, 99, 247, 0, 0, 99, 99, 99, 0, 0,
1193 0, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1194 0, 99, 99, 99, 99, 99, 99, 99, 0, 99,
1195 0, 0, 0, 0, 0, 0, 247, 0, 0, 0,
1196 0, 0, 0, 0, 99, 0, 0, 0, 0, 0,
1197 0, 99, 99, 0, 99, 0, 99, 99, 99, 0,
1198 0, 99, 99, 0, 99, 99, 99, 99, 257, 0,
1199 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1200 0, 0, 0, 0, 0, 99, 0, 99, 0, 0,
1201 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1202 0, 0, 0, 0, 0, 0, 0, 0, 0, 99,
1203 99, 0, 0, 0, 0, 0, 99, 99, 99, 99,
1204 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1205 99, 99, 99, 99, 0, 0, 0, 0, 0, 0,
1206 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1207 0, 0, 0, 0, 0, 0, 0, 0, 0, 257,
1208 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1209 0, 247, 0, 0, 0, 0, 0, 0, 0, 247,
1210 247, 247, 247, 247, 247, 247, 247, 247, 247, 247,
1211 247, 0, 0, 257, 247, 247, 247, 0, 0, 0,
1212 247, 247, 247, 247, 247, 247, 247, 247, 247, 0,
1213 247, 247, 247, 247, 247, 247, 247, 0, 247, 0,
1214 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1215 0, 0, 0, 247, 0, 0, 0, 0, 0, 0,
1216 247, 247, 0, 247, 0, 247, 247, 247, 0, 0,
1217 247, 247, 0, 247, 247, 247, 247, 273, 0, 0,
1218 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1219 0, 0, 0, 0, 247, 0, 247, 0, 0, 0,
1220 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1221 0, 0, 0, 0, 0, 0, 0, 0, 247, 247,
1222 0, 0, 0, 0, 0, 247, 247, 247, 247, 247,
1223 247, 247, 247, 247, 247, 247, 247, 247, 247, 247,
1224 247, 247, 247, 0, 0, 0, 0, 0, 257, 0,
1225 0, 0, 0, 0, 0, 0, 257, 257, 257, 257,
1226 257, 257, 257, 257, 257, 257, 257, 257, 273, 0,
1227 0, 257, 257, 257, 0, 0, 0, 257, 257, 257,
1228 257, 257, 257, 257, 257, 257, 0, 257, 257, 257,
1229 257, 257, 257, 257, 0, 257, 0, 0, 0, 0,
1230 0, 0, 273, 0, 0, 0, 0, 0, 0, 0,
1231 257, 0, 0, 0, 0, 0, 0, 257, 257, 0,
1232 257, 0, 257, 257, 257, 0, 0, 257, 257, 0,
1233 257, 257, 257, 257, 18, 0, 0, 0, 0, 0,
1234 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1235 0, 257, 0, 257, 0, 0, 0, 0, 0, 0,
1236 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1237 0, 0, 0, 0, 0, 257, 257, 0, 0, 0,
1238 0, 0, 257, 257, 257, 257, 257, 257, 257, 257,
1239 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
1240 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1241 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1242 0, 0, 0, 0, 0, 18, 0, 0, 0, 0,
1243 0, 0, 0, 0, 0, 0, 0, 273, 0, 0,
1244 0, 0, 0, 0, 0, 273, 273, 273, 273, 273,
1245 273, 273, 273, 273, 273, 273, 273, 0, 0, 18,
1246 273, 273, 273, 0, 0, 0, 273, 273, 273, 273,
1247 273, 273, 273, 273, 273, 0, 273, 273, 273, 273,
1248 273, 273, 273, 0, 273, 0, 0, 0, 0, 0,
1249 0, 0, 0, 0, 0, 0, 0, 0, 0, 273,
1250 0, 0, 0, 0, 0, 0, 273, 273, 0, 273,
1251 0, 273, 273, 273, 0, 0, 273, 273, 0, 273,
1252 273, 273, 273, 277, 0, 0, 0, 0, 0, 0,
1253 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1254 273, 0, 273, 0, 0, 0, 0, 0, 0, 0,
1255 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1256 0, 0, 0, 0, 273, 273, 0, 0, 0, 0,
1257 0, 273, 273, 273, 273, 273, 273, 273, 273, 273,
1258 273, 273, 273, 273, 273, 273, 273, 273, 273, 0,
1259 0, 0, 0, 0, 18, 0, 0, 0, 0, 0,
1260 0, 0, 18, 18, 18, 18, 18, 18, 18, 18,
1261 18, 18, 18, 18, 277, 0, 0, 18, 18, 18,
1262 0, 0, 0, 18, 18, 18, 18, 18, 18, 18,
1263 18, 18, 0, 18, 18, 18, 18, 18, 18, 18,
1264 0, 18, 0, 0, 0, 0, 0, 0, 277, 0,
1265 0, 0, 0, 0, 0, 0, 18, 0, 0, 0,
1266 0, 0, 0, 18, 18, 0, 18, 0, 18, 18,
1267 18, 0, 0, 18, 18, 0, 18, 18, 18, 18,
1268 270, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1269 0, 0, 0, 0, 0, 0, 0, 18, 0, 18,
1270 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1271 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1272 0, 18, 18, 0, 0, 0, 0, 0, 18, 18,
1273 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1274 18, 18, 18, 18, 18, 18, 0, 0, 0, 0,
1275 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1276 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1277 0, 270, 0, 0, 0, 0, 0, 0, 0, 0,
1278 0, 0, 0, 277, 0, 0, 0, 0, 0, 0,
1279 0, 277, 277, 277, 277, 277, 277, 277, 277, 277,
1280 277, 277, 277, 0, 0, 270, 277, 277, 277, 0,
1281 0, 0, 277, 277, 277, 277, 277, 277, 277, 277,
1282 277, 0, 277, 277, 277, 277, 277, 277, 277, 0,
1283 277, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1284 0, 0, 0, 0, 22, 277, 0, 0, 0, 0,
1285 0, 0, 277, 277, 0, 277, 0, 277, 277, 277,
1286 0, 0, 277, 277, 0, 277, 277, 277, 277, 0,
1287 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1288 0, 0, 0, 0, 0, 0, 277, 0, 277, 0,
1289 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1290 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1291 277, 277, 0, 0, 0, 0, 0, 277, 277, 277,
1292 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
1293 277, 277, 277, 277, 277, 22, 0, 0, 0, 0,
1294 270, 0, 0, 0, 0, 0, 0, 0, 270, 270,
1295 270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
1296 0, 0, 0, 270, 270, 270, 0, 0, 0, 270,
1297 270, 270, 270, 270, 270, 270, 270, 270, 0, 270,
1298 270, 270, 270, 270, 270, 270, 0, 270, 0, 0,
1299 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1300 0, 25, 270, 0, 0, 0, 0, 0, 0, 270,
1301 270, 0, 270, 0, 270, 270, 270, 0, 0, 270,
1302 270, 0, 270, 270, 270, 270, 0, 0, 0, 0,
1303 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1304 0, 0, 0, 270, 0, 270, 0, 0, 0, 0,
1305 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1306 0, 0, 0, 0, 0, 0, 0, 270, 270, 0,
1307 0, 0, 0, 0, 270, 270, 270, 270, 270, 270,
1308 270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
1309 270, 270, 25, 0, 473, 0, 0, 0, 0, 0,
1310 0, 0, 0, 0, 22, 0, 0, 250, 0, 0,
1311 0, 0, 22, 22, 22, 22, 22, 22, 22, 22,
1312 22, 22, 22, 22, 0, 0, 0, 22, 22, 22,
1313 0, 0, 0, 22, 22, 22, 22, 22, 22, 22,
1314 22, 22, 0, 22, 22, 22, 22, 22, 22, 22,
1315 0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
1316 0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
1317 0, 0, 0, 22, 22, 0, 22, 0, 22, 22,
1318 22, 0, 0, 22, 22, 0, 22, 0, 22, 0,
1319 0, 0, 0, 0, 0, 0, 250, 0, 0, 0,
1320 0, 0, 0, 0, 0, 0, 0, 22, 0, 22,
1321 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1322 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1323 0, 22, 22, 0, 0, 0, 0, 0, 22, 22,
1324 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1325 22, 22, 22, 22, 22, 22, 0, 0, 0, 0,
1326 0, 25, 0, 0, 0, 0, 0, 0, 0, 25,
1327 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1328 25, 0, 0, 0, 25, 25, 25, 0, 0, 0,
1329 25, 25, 25, 25, 25, 25, 25, 25, 25, 0,
1330 25, 25, 25, 25, 25, 25, 25, 0, 25, 0,
1331 0, 471, 0, 0, 0, 472, 0, 0, 0, 0,
1332 0, 0, 0, 25, 595, 347, 0, 0, 0, 0,
1333 25, 25, 0, 25, 0, 25, 25, 25, 0, 0,
1334 25, 25, 0, 25, 0, 25, 0, 0, 0, 0,
1335 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1336 0, 0, 0, 0, 25, 0, 25, 201, 202, 0,
1337 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1338 201, 202, 0, 0, 0, 0, 0, 0, 25, 25,
1339 59, 0, 0, 0, 0, 25, 25, 25, 25, 25,
1340 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
1341 25, 25, 25, 0, 347, 0, 0, 0, 0, 0,
1342 0, 0, 0, 239, 240, 241, 242, 243, 0, 244,
1343 205, 245, 246, 247, 248, 249, 239, 240, 241, 242,
1344 243, 0, 244, 205, 245, 246, 247, 248, 249, 0,
1345 0, 0, 0, 0, 207, 208, 0, 0, 474, 475,
1346 712, 713, 0, 0, 251, 0, 0, 207, 208, 201,
1347 202, 714, 715, 716, 0, 0, 0, 251, 0, 0,
1348 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1349 0, 0, 0, 0, 717, 0, 718, 719, 720, 721,
1350 722, 723, 724, 725, 726, 727, 0, 0, 0, 0,
1351 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1352 0, 0, 0, 0, 0, 239, 240, 241, 242, 243,
1353 192, 244, 205, 245, 246, 247, 248, 249, 0, 0,
1354 0, 193, 194, 0, 0, 0, 0, 0, 0, 0,
1355 0, 0, 0, 0, 0, 0, 207, 208, 0, 15,
1356 0, 0, 0, 0, 0, 0, 251, 16, 0, 0,
1357 17, 18, 19, 20, 21, 22, 23, 24, 25, 0,
1358 0, 0, 26, 27, 28, 0, 0, 0, 29, 30,
1359 31, 32, 33, 34, 35, 36, 37, 0, 38, 39,
1360 40, 41, 42, 43, 44, 0, 45, 0, 0, 0,
1361 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1362 0, 46, 0, 0, 0, 0, 0, 0, 47, 48,
1363 0, 49, 0, 50, 51, 52, 0, 0, 53, 54,
1364 0, 55, 0, 56, 0, 0, 0, 0, 0, 0,
1365 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1366 0, 0, 57, 0, 58, 0, 0, 0, 0, 0,
1367 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1368 0, 0, 0, 0, 0, 0, 60, 61, 0, 0,
1369 0, 0, 0, 62, 63, 64, 65, 66, 67, 68,
1370 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
1373 short yycheck[] = { 86,
1374 59, 169, 136, 134, 40, 40, 144, 295, 142, 143,
1375 395, 40, 146, 147, 148, 40, 497, 40, 40, 40,
1376 40, 159, 160, 161, 158, 40, 40, 37, 166, 40,
1377 328, 328, 42, 43, 40, 45, 408, 47, 40, 549,
1378 174, 40, 547, 40, 91, 40, 402, 403, 40, 40,
1379 545, 185, 0, 40, 185, 125, 432, 687, 313, 44,
1380 313, 40, 40, 313, 149, 150, 257, 355, 44, 399,
1381 44, 359, 44, 258, 58, 44, 44, 433, 44, 40,
1382 40, 37, 167, 93, 259, 44, 42, 43, 58, 45,
1383 46, 47, 44, 44, 123, 44, 40, 258, 157, 361,
1384 185, 262, 263, 152, 153, 154, 324, 241, 242, 259,
1385 244, 37, 123, 58, 589, 37, 42, 43, 177, 45,
1386 42, 47, 313, 385, 183, 47, 185, 385, 313, 37,
1387 385, 40, 385, 301, 42, 385, 44, 40, 313, 47,
1388 125, 396, 397, 309, 123, 620, 91, 313, 40, 125,
1389 385, 125, 313, 125, 239, 240, 125, 125, 385, 125,
1390 641, 396, 397, 313, 313, 795, 125, 93, 41, 58,
1391 43, 320, 45, 125, 125, 41, 125, 37, 44, 44,
1392 661, 0, 42, 43, 37, 45, 308, 47, 325, 42,
1393 43, 313, 45, 703, 47, 37, 701, 328, 91, 41,
1394 42, 43, 40, 45, 699, 47, 41, 258, 346, 44,
1395 37, 262, 263, 260, 41, 42, 43, 44, 45, 311,
1396 47, 313, 258, 361, 358, 393, 360, 58, 257, 313,
1397 368, 315, 316, 521, 372, 258, 370, 371, 376, 262,
1398 93, 300, 58, 258, 541, 543, 257, 306, 307, 336,
1399 309, 310, 311, 312, 313, 585, 258, 629, 58, 258,
1400 262, 258, 396, 262, 263, 257, 622, 258, 327, 328,
1401 257, 262, 263, 343, 650, 345, 407, 298, 257, 257,
1402 339, 41, 58, 421, 44, 123, 58, 41, 313, 348,
1403 44, 313, 314, 313, 353, 58, 257, 257, 357, 313,
1404 314, 58, 313, 317, 318, 58, 125, 313, 58, 308,
1405 309, 310, 58, 257, 313, 314, 313, 314, 313, 378,
1406 454, 269, 270, 58, 323, 264, 265, 266, 267, 58,
1407 464, 465, 58, 621, 313, 384, 269, 270, 337, 338,
1408 58, 390, 391, 392, 286, 287, 288, 346, 347, 348,
1409 349, 350, 313, 313, 257, 318, 319, 367, 394, 395,
1410 419, 58, 376, 362, 845, 364, 58, 402, 403, 313,
1411 385, 394, 395, 0, 385, 404, 405, 376, 763, 394,
1412 395, 396, 397, 312, 313, 341, 400, 401, 385, 298,
1413 390, 391, 394, 395, 430, 406, 407, 394, 395, 396,
1414 397, 400, 401, 58, 313, 314, 385, 430, 539, 697,
1415 313, 38, 404, 405, 41, 430, 43, 44, 45, 46,
1416 258, 313, 314, 58, 385, 385, 317, 318, 430, 408,
1417 409, 430, 343, 430, 345, 58, 274, 58, 276, 58,
1418 58, 385, 280, 281, 282, 406, 407, 615, 408, 409,
1419 269, 270, 590, 58, 58, 58, 594, 58, 58, 597,
1420 598, 58, 58, 37, 91, 524, 93, 376, 42, 43,
1421 58, 45, 58, 47, 58, 313, 314, 58, 537, 647,
1422 648, 649, 385, 58, 376, 58, 617, 387, 40, 58,
1423 61, 400, 401, 44, 332, 37, 123, 40, 125, 61,
1424 42, 43, 790, 45, 91, 47, 40, 123, 400, 401,
1425 46, 91, 800, 91, 44, 646, 44, 37, 44, 93,
1426 384, 652, 42, 43, 343, 45, 345, 47, 258, 40,
1427 0, 91, 257, 592, 593, 37, 374, 596, 376, 44,
1428 42, 43, 91, 45, 37, 47, 44, 385, 257, 42,
1429 43, 93, 45, 841, 47, 44, 394, 395, 396, 397,
1430 91, 44, 400, 401, 402, 403, 44, 44, 38, 44,
1431 38, 41, 37, 43, 44, 45, 46, 42, 43, 40,
1432 45, 40, 47, 40, 40, 716, 754, 40, 258, 37,
1433 91, 93, 430, 41, 42, 43, 655, 45, 44, 47,
1434 93, 44, 44, 40, 258, 37, 665, 775, 776, 777,
1435 42, 43, 37, 45, 44, 47, 41, 42, 43, 44,
1436 45, 91, 47, 93, 37, 44, 260, 44, 93, 42,
1437 43, 44, 45, 260, 47, 44, 258, 44, 44, 44,
1438 44, 268, 269, 270, 271, 272, 273, 274, 275, 276,
1439 277, 278, 279, 123, 44, 125, 283, 284, 285, 258,
1440 44, 93, 289, 290, 291, 292, 293, 294, 295, 296,
1441 297, 44, 299, 300, 301, 302, 303, 304, 305, 738,
1442 307, 44, 395, 44, 397, 93, 399, 44, 401, 41,
1443 403, 41, 405, 44, 407, 322, 409, 44, 411, 58,
1444 58, 257, 329, 330, 58, 332, 93, 334, 335, 336,
1445 58, 257, 339, 340, 341, 342, 343, 344, 345, 0,
1446 854, 44, 37, 386, 783, 44, 860, 42, 43, 44,
1447 45, 44, 47, 44, 259, 312, 363, 44, 365, 44,
1448 367, 382, 312, 830, 41, 44, 44, 93, 258, 321,
1449 44, 44, 44, 321, 44, 125, 843, 257, 44, 41,
1450 387, 388, 258, 44, 44, 385, 44, 394, 395, 396,
1451 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
1452 407, 408, 409, 410, 411, 124, 44, 385, 41, 44,
1453 260, 91, 44, 44, 44, 44, 44, 44, 268, 269,
1454 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
1455 91, 258, 93, 283, 284, 285, 91, 44, 44, 289,
1456 290, 291, 292, 293, 294, 295, 296, 297, 44, 299,
1457 300, 301, 302, 303, 304, 305, 258, 307, 258, 44,
1458 258, 44, 123, 44, 125, 44, 312, 44, 258, 44,
1459 44, 331, 322, 44, 257, 41, 46, 44, 58, 329,
1460 330, 258, 332, 40, 334, 335, 336, 41, 44, 339,
1461 340, 341, 342, 343, 344, 345, 388, 257, 386, 41,
1462 58, 41, 394, 58, 396, 58, 398, 58, 400, 58,
1463 402, 44, 404, 363, 406, 365, 408, 367, 410, 259,
1464 44, 312, 44, 40, 44, 258, 321, 321, 0, 258,
1465 44, 44, 385, 44, 44, 123, 44, 387, 388, 44,
1466 41, 41, 41, 41, 394, 395, 396, 397, 398, 399,
1467 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
1468 410, 411, 258, 44, 93, 44, 38, 388, 258, 41,
1469 258, 44, 44, 394, 395, 396, 397, 398, 399, 400,
1470 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
1471 411, 44, 44, 258, 258, 44, 41, 58, 58, 260,
1472 259, 58, 58, 257, 286, 41, 44, 268, 269, 270,
1473 271, 272, 273, 274, 275, 276, 277, 278, 279, 91,
1474 44, 258, 283, 284, 285, 41, 44, 41, 289, 290,
1475 291, 292, 293, 294, 295, 296, 297, 41, 299, 300,
1476 301, 302, 303, 304, 305, 44, 307, 261, 58, 125,
1477 44, 41, 44, 125, 258, 44, 313, 258, 258, 124,
1478 58, 322, 259, 286, 41, 258, 41, 41, 329, 330,
1479 41, 332, 44, 334, 335, 336, 41, 383, 339, 340,
1480 41, 342, 343, 344, 345, 41, 44, 44, 41, 44,
1481 0, 0, 41, 41, 386, 125, 93, 41, 44, 41,
1482 123, 123, 363, 41, 365, 125, 677, 794, 602, 652,
1483 761, 191, 820, 449, 48, 832, 248, 0, 442, 54,
1484 859, 168, 419, 753, 395, 6, 387, 388, 319, 431,
1485 766, 163, 138, 394, 395, 396, 397, 398, 399, 400,
1486 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
1487 411, 340, 629, 454, -1, -1, -1, -1, 41, -1,
1488 -1, 44, -1, -1, -1, -1, -1, -1, -1, -1,
1489 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1490 -1, -1, -1, -1, -1, -1, -1, -1, 260, -1,
1491 -1, -1, -1, -1, -1, -1, 268, 269, 270, 271,
1492 272, 273, 274, 275, 276, 277, 278, 279, 91, -1,
1493 -1, 283, 284, 285, -1, -1, -1, 289, 290, 291,
1494 292, 293, 294, 295, 296, 297, -1, 299, 300, 301,
1495 302, 303, 304, 305, -1, 307, -1, -1, -1, -1,
1496 -1, -1, 125, -1, -1, -1, -1, -1, -1, -1,
1497 322, -1, -1, -1, -1, -1, -1, 329, 330, -1,
1498 332, -1, 334, 335, 336, -1, -1, 339, 340, -1,
1499 342, 343, 344, 345, 0, -1, -1, -1, -1, -1,
1500 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1501 -1, 363, -1, 365, -1, -1, -1, -1, -1, -1,
1502 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1503 -1, -1, -1, -1, -1, 387, 388, -1, 44, -1,
1504 -1, -1, 394, 395, 396, 397, 398, 399, 400, 401,
1505 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
1506 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1507 -1, -1, -1, -1, -1, -1, -1, 40, -1, -1,
1508 -1, -1, -1, -1, -1, 91, -1, -1, -1, -1,
1509 -1, -1, -1, -1, -1, -1, -1, 260, -1, -1,
1510 -1, -1, -1, -1, -1, 268, 269, 270, 271, 272,
1511 273, 274, 275, 276, 277, 278, 279, 123, -1, 125,
1512 283, 284, 285, -1, -1, -1, 289, 290, 291, 292,
1513 293, 294, 295, 296, 297, -1, 299, 300, 301, 302,
1514 303, 304, 305, -1, 307, -1, -1, -1, -1, -1,
1515 -1, -1, -1, -1, -1, -1, -1, -1, -1, 322,
1516 -1, -1, -1, -1, -1, -1, 329, 330, -1, 332,
1517 -1, 334, 335, 336, -1, -1, 339, 340, -1, 342,
1518 343, 344, 345, 0, -1, -1, -1, -1, -1, -1,
1519 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1520 363, -1, 365, -1, -1, -1, -1, -1, -1, -1,
1521 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1522 -1, -1, -1, -1, 387, 388, -1, 44, -1, -1,
1523 -1, 394, 395, 396, 397, 398, 399, 400, 401, 402,
1524 403, 404, 405, 406, 407, 408, 409, 410, 411, -1,
1525 -1, -1, -1, -1, 260, -1, -1, -1, -1, -1,
1526 -1, -1, 268, 269, 270, 271, 272, 273, 274, 275,
1527 276, 277, 278, 279, 91, -1, -1, 283, 284, 285,
1528 -1, -1, -1, 289, 290, 291, 292, 293, 294, 295,
1529 296, 297, -1, 299, 300, 301, 302, 303, 304, 305,
1530 -1, 307, -1, -1, -1, -1, 123, -1, 125, -1,
1531 -1, -1, -1, -1, -1, -1, 322, -1, -1, -1,
1532 -1, -1, -1, 329, 330, -1, 332, -1, 334, 335,
1533 336, -1, -1, 339, 340, -1, 342, 343, 344, 345,
1534 0, -1, -1, -1, -1, -1, -1, -1, -1, 312,
1535 313, 314, -1, -1, -1, -1, -1, 363, -1, 365,
1536 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1537 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1538 -1, 387, 388, -1, 44, -1, -1, -1, 394, 395,
1539 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
1540 406, 407, 408, 409, 410, 411, 369, 370, 371, 372,
1541 373, -1, 375, 376, 377, 378, 379, 380, 381, -1,
1542 -1, -1, -1, 40, -1, -1, -1, -1, -1, -1,
1543 -1, 91, -1, -1, -1, -1, -1, 400, 401, -1,
1544 -1, -1, -1, 260, -1, -1, -1, 410, -1, -1,
1545 -1, 268, 269, 270, 271, 272, 273, 274, 275, 276,
1546 277, 278, 279, 123, -1, 125, 283, 284, 285, -1,
1547 -1, -1, 289, 290, 291, 292, 293, 294, 295, 296,
1548 297, -1, 299, 300, 301, 302, 303, 304, 305, -1,
1549 307, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1550 -1, -1, -1, -1, -1, 322, -1, -1, -1, -1,
1551 -1, -1, 329, 330, -1, 332, -1, 334, 335, 336,
1552 -1, -1, 339, 340, -1, 342, 343, 344, 345, 0,
1553 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1554 -1, -1, -1, -1, -1, -1, 363, -1, 365, -1,
1555 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1556 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1557 387, 388, -1, 44, -1, -1, -1, 394, 395, 396,
1558 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
1559 407, 408, 409, 410, 411, -1, -1, -1, -1, -1,
1560 260, -1, -1, -1, -1, -1, -1, -1, 268, 269,
1561 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
1562 91, -1, -1, 283, 284, 285, -1, -1, -1, 289,
1563 290, 291, 292, 293, 294, 295, 296, 297, -1, 299,
1564 300, 301, 302, 303, 304, 305, -1, 307, -1, -1,
1565 -1, -1, 123, -1, 125, -1, -1, -1, -1, -1,
1566 -1, -1, 322, -1, -1, -1, -1, -1, -1, 329,
1567 330, -1, 332, -1, 334, 335, 336, -1, -1, 339,
1568 340, -1, 342, 343, 344, 345, 0, -1, -1, -1,
1569 -1, -1, -1, -1, -1, -1, 313, 314, -1, -1,
1570 -1, -1, -1, 363, -1, 365, -1, -1, -1, -1,
1571 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1572 -1, -1, -1, -1, -1, -1, -1, 387, 388, -1,
1573 -1, -1, -1, -1, 394, 395, 396, 397, 398, 399,
1574 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
1575 410, 411, 369, 370, 371, 372, 373, -1, 375, 376,
1576 377, 378, 379, 380, 381, -1, -1, -1, -1, -1,
1577 -1, -1, -1, -1, -1, -1, -1, 91, -1, -1,
1578 -1, -1, -1, 400, 401, -1, -1, -1, -1, 260,
1579 -1, -1, -1, 410, -1, -1, -1, 268, 269, 270,
1580 271, 272, 273, 274, 275, 276, 277, 278, 279, 123,
1581 -1, 125, 283, 284, 285, -1, -1, -1, 289, 290,
1582 291, 292, 293, 294, 295, 296, 297, -1, 299, 300,
1583 301, 302, 303, 304, 305, -1, 307, -1, -1, -1,
1584 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1585 -1, 322, -1, -1, -1, -1, -1, -1, 329, 330,
1586 -1, 332, -1, 334, 335, 336, -1, -1, 339, 340,
1587 -1, 342, 343, 344, 345, 0, -1, -1, -1, -1,
1588 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1589 -1, -1, 363, -1, 365, -1, -1, -1, -1, -1,
1590 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1591 -1, -1, -1, -1, -1, -1, 387, 388, -1, -1,
1592 -1, -1, -1, 394, 395, 396, 397, 398, 399, 400,
1593 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
1594 411, -1, -1, -1, -1, -1, 260, -1, -1, -1,
1595 -1, -1, -1, -1, 268, 269, 270, 271, 272, 273,
1596 274, 275, 276, 277, 278, 279, 91, -1, -1, 283,
1597 284, 285, -1, -1, -1, 289, 290, 291, 292, 293,
1598 294, 295, 296, 297, -1, 299, 300, 301, 302, 303,
1599 304, 305, -1, 307, -1, -1, -1, -1, 123, -1,
1600 125, -1, -1, -1, -1, -1, -1, -1, 322, -1,
1601 -1, -1, -1, -1, -1, 329, 330, -1, 332, -1,
1602 334, 335, 336, -1, -1, 339, 340, -1, 342, 343,
1603 344, 345, 0, -1, -1, -1, -1, -1, -1, -1,
1604 -1, -1, -1, -1, -1, -1, -1, -1, -1, 363,
1605 -1, 365, -1, -1, -1, -1, -1, -1, -1, -1,
1606 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1607 -1, -1, -1, 387, 388, -1, -1, -1, -1, -1,
1608 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
1609 404, 405, 406, 407, 408, 409, 410, 411, -1, -1,
1610 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1611 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1612 -1, -1, -1, 91, -1, -1, -1, -1, -1, -1,
1613 -1, -1, -1, -1, -1, 260, -1, -1, -1, -1,
1614 -1, -1, -1, 268, 269, 270, 271, 272, 273, 274,
1615 275, 276, 277, 278, 279, -1, -1, 125, 283, 284,
1616 285, -1, -1, -1, 289, 290, 291, 292, 293, 294,
1617 295, 296, 297, -1, 299, 300, 301, 302, 303, 304,
1618 305, -1, 307, -1, -1, -1, -1, -1, -1, -1,
1619 -1, -1, -1, -1, -1, -1, -1, 322, -1, -1,
1620 -1, -1, -1, -1, 329, 330, -1, 332, -1, 334,
1621 335, 336, -1, -1, 339, 340, -1, 342, 343, 344,
1622 345, 0, -1, -1, -1, -1, -1, -1, -1, -1,
1623 -1, -1, -1, -1, -1, -1, -1, -1, 363, -1,
1624 365, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1625 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1626 -1, -1, 387, 388, -1, -1, -1, -1, -1, 394,
1627 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1628 405, 406, 407, 408, 409, 410, 411, -1, -1, -1,
1629 -1, -1, 260, -1, -1, -1, -1, -1, -1, -1,
1630 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
1631 278, 279, 91, -1, -1, 283, 284, 285, -1, -1,
1632 -1, 289, 290, 291, 292, 293, 294, 295, 296, 297,
1633 -1, 299, 300, 301, 302, 303, 304, 305, -1, 307,
1634 -1, -1, -1, -1, 123, -1, 125, -1, -1, -1,
1635 -1, -1, -1, -1, 322, -1, -1, -1, -1, -1,
1636 -1, 329, 330, 331, 332, -1, 334, 335, 336, -1,
1637 -1, 339, 340, -1, 342, 343, 344, 345, 0, -1,
1638 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1639 -1, -1, -1, -1, -1, 363, -1, 365, -1, -1,
1640 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1641 -1, -1, -1, -1, -1, -1, -1, -1, -1, 387,
1642 388, -1, -1, -1, -1, -1, 394, 395, 396, 397,
1643 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
1644 408, 409, 410, 411, -1, -1, -1, -1, -1, -1,
1645 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1646 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
1647 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1648 -1, 260, -1, -1, -1, -1, -1, -1, -1, 268,
1649 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
1650 279, 123, -1, 125, 283, 284, 285, -1, -1, -1,
1651 289, 290, 291, 292, 293, 294, 295, 296, 297, -1,
1652 299, 300, 301, 302, 303, 304, 305, -1, 307, -1,
1653 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1654 -1, -1, -1, 322, -1, -1, -1, -1, -1, -1,
1655 329, 330, -1, 332, -1, 334, 335, 336, -1, -1,
1656 339, 340, -1, 342, 343, 344, 345, 0, -1, -1,
1657 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1658 -1, -1, -1, -1, 363, -1, 365, -1, -1, -1,
1659 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1660 -1, -1, -1, -1, -1, -1, -1, -1, 387, 388,
1661 -1, -1, -1, -1, -1, 394, 395, 396, 397, 398,
1662 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
1663 409, 410, 411, -1, -1, -1, -1, -1, 260, -1,
1664 -1, -1, -1, -1, -1, -1, 268, 269, 270, 271,
1665 272, 273, 274, 275, 276, 277, 278, 279, 91, -1,
1666 -1, 283, 284, 285, -1, -1, -1, 289, 290, 291,
1667 292, 293, 294, 295, 296, 297, -1, 299, 300, 301,
1668 302, 303, 304, 305, -1, 307, -1, -1, -1, -1,
1669 123, -1, 125, -1, -1, -1, -1, -1, -1, -1,
1670 322, -1, -1, -1, -1, -1, -1, 329, 330, -1,
1671 332, -1, 334, 335, 336, -1, -1, 339, 340, -1,
1672 342, 343, 344, 345, 0, -1, -1, -1, -1, -1,
1673 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1674 -1, 363, -1, 365, -1, -1, -1, -1, -1, -1,
1675 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1676 -1, -1, -1, -1, -1, 387, 388, -1, -1, -1,
1677 -1, -1, 394, 395, 396, 397, 398, 399, 400, 401,
1678 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
1679 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1680 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1681 -1, -1, -1, -1, -1, 91, -1, -1, -1, -1,
1682 -1, -1, -1, -1, -1, -1, -1, 260, -1, -1,
1683 -1, -1, -1, -1, -1, 268, 269, 270, 271, 272,
1684 273, 274, 275, 276, 277, 278, 279, -1, -1, 125,
1685 283, 284, 285, -1, -1, -1, 289, 290, 291, 292,
1686 293, 294, 295, 296, 297, -1, 299, 300, 301, 302,
1687 303, 304, 305, -1, 307, -1, -1, -1, -1, -1,
1688 -1, -1, -1, -1, -1, -1, -1, -1, -1, 322,
1689 -1, -1, -1, -1, -1, -1, 329, 330, -1, 332,
1690 -1, 334, 335, 336, -1, -1, 339, 340, -1, 342,
1691 343, 344, 345, 0, -1, -1, -1, -1, -1, -1,
1692 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1693 363, -1, 365, -1, -1, -1, -1, -1, -1, -1,
1694 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1695 -1, -1, -1, -1, 387, 388, -1, -1, -1, -1,
1696 -1, 394, 395, 396, 397, 398, 399, 400, 401, 402,
1697 403, 404, 405, 406, 407, 408, 409, 410, 411, -1,
1698 -1, -1, -1, -1, 260, -1, -1, -1, -1, -1,
1699 -1, -1, 268, 269, 270, 271, 272, 273, 274, 275,
1700 276, 277, 278, 279, 91, -1, -1, 283, 284, 285,
1701 -1, -1, -1, 289, 290, 291, 292, 293, 294, 295,
1702 296, 297, -1, 299, 300, 301, 302, 303, 304, 305,
1703 -1, 307, -1, -1, -1, -1, -1, -1, 125, -1,
1704 -1, -1, -1, -1, -1, -1, 322, -1, -1, -1,
1705 -1, -1, -1, 329, 330, -1, 332, -1, 334, 335,
1706 336, -1, -1, 339, 340, -1, 342, 343, 344, 345,
1707 0, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1708 -1, -1, -1, -1, -1, -1, -1, 363, -1, 365,
1709 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1710 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1711 -1, 387, 388, -1, -1, -1, -1, -1, 394, 395,
1712 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
1713 406, 407, 408, 409, 410, 411, -1, -1, -1, -1,
1714 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1715 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1716 -1, 91, -1, -1, -1, -1, -1, -1, -1, -1,
1717 -1, -1, -1, 260, -1, -1, -1, -1, -1, -1,
1718 -1, 268, 269, 270, 271, 272, 273, 274, 275, 276,
1719 277, 278, 279, -1, -1, 125, 283, 284, 285, -1,
1720 -1, -1, 289, 290, 291, 292, 293, 294, 295, 296,
1721 297, -1, 299, 300, 301, 302, 303, 304, 305, -1,
1722 307, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1723 -1, -1, -1, -1, -1, 322, -1, -1, -1, -1,
1724 -1, -1, 329, 330, -1, 332, -1, 334, 335, 336,
1725 -1, -1, 339, 340, -1, 342, 343, 344, 345, 0,
1726 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1727 -1, -1, -1, -1, -1, -1, 363, -1, 365, -1,
1728 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1729 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1730 387, 388, -1, -1, -1, -1, -1, 394, 395, 396,
1731 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
1732 407, 408, 409, 410, 411, -1, -1, -1, -1, -1,
1733 260, -1, -1, -1, -1, -1, -1, -1, 268, 269,
1734 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
1735 91, -1, -1, 283, 284, 285, -1, -1, -1, 289,
1736 290, 291, 292, 293, 294, 295, 296, 297, -1, 299,
1737 300, 301, 302, 303, 304, 305, -1, 307, -1, -1,
1738 -1, -1, -1, -1, 125, -1, -1, -1, -1, -1,
1739 -1, -1, 322, -1, -1, -1, -1, -1, -1, 329,
1740 330, -1, 332, -1, 334, 335, 336, -1, -1, 339,
1741 340, -1, 342, 343, 344, 345, 0, -1, -1, -1,
1742 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1743 -1, -1, -1, 363, -1, 365, -1, -1, -1, -1,
1744 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1745 -1, -1, -1, -1, -1, -1, -1, 387, 388, -1,
1746 -1, -1, -1, -1, 394, 395, 396, 397, 398, 399,
1747 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
1748 410, 411, -1, -1, -1, -1, -1, -1, -1, -1,
1749 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1750 -1, -1, -1, -1, -1, -1, -1, 91, -1, -1,
1751 -1, -1, -1, -1, -1, -1, -1, -1, -1, 260,
1752 -1, -1, -1, -1, -1, -1, -1, 268, 269, 270,
1753 271, 272, 273, 274, 275, 276, 277, 278, 279, -1,
1754 -1, 125, 283, 284, 285, -1, -1, -1, 289, 290,
1755 291, 292, 293, 294, 295, 296, 297, -1, 299, 300,
1756 301, 302, 303, 304, 305, -1, 307, -1, -1, -1,
1757 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1758 -1, 322, -1, -1, -1, -1, -1, -1, 329, 330,
1759 -1, 332, -1, 334, 335, 336, -1, -1, 339, 340,
1760 -1, 342, 343, 344, 345, 0, -1, -1, -1, -1,
1761 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1762 -1, -1, 363, -1, 365, -1, -1, -1, -1, -1,
1763 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1764 -1, -1, -1, -1, -1, -1, 387, 388, -1, -1,
1765 -1, -1, -1, 394, 395, 396, 397, 398, 399, 400,
1766 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
1767 411, -1, -1, -1, -1, -1, 260, -1, -1, -1,
1768 -1, -1, -1, -1, 268, 269, 270, 271, 272, 273,
1769 274, 275, 276, 277, 278, 279, 91, -1, -1, 283,
1770 284, 285, -1, -1, -1, 289, 290, 291, 292, 293,
1771 294, 295, 296, 297, -1, 299, 300, 301, 302, 303,
1772 304, 305, -1, 307, -1, -1, -1, -1, -1, -1,
1773 125, -1, -1, -1, -1, -1, -1, -1, 322, -1,
1774 -1, -1, -1, -1, -1, 329, 330, -1, 332, -1,
1775 334, 335, 336, -1, -1, 339, 340, -1, 342, 343,
1776 344, 345, 0, -1, -1, -1, -1, -1, -1, -1,
1777 -1, -1, -1, -1, -1, -1, -1, -1, -1, 363,
1778 -1, 365, -1, -1, -1, -1, -1, -1, -1, -1,
1779 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1780 -1, -1, -1, 387, 388, -1, -1, -1, -1, -1,
1781 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
1782 404, 405, 406, 407, 408, 409, 410, 411, -1, -1,
1783 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1784 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1785 -1, -1, -1, 91, -1, -1, -1, -1, -1, -1,
1786 -1, -1, -1, -1, -1, 260, -1, -1, -1, -1,
1787 -1, -1, -1, 268, 269, 270, 271, 272, 273, 274,
1788 275, 276, 277, 278, 279, -1, -1, 125, 283, 284,
1789 285, -1, -1, -1, 289, 290, 291, 292, 293, 294,
1790 295, 296, 297, -1, 299, 300, 301, 302, 303, 304,
1791 305, -1, 307, -1, -1, -1, -1, -1, -1, -1,
1792 -1, -1, -1, -1, -1, -1, -1, 322, -1, -1,
1793 -1, -1, -1, -1, 329, 330, -1, 332, -1, 334,
1794 335, 336, -1, -1, 339, 340, -1, 342, 343, 344,
1795 345, 0, -1, -1, -1, -1, -1, -1, -1, -1,
1796 -1, -1, -1, -1, -1, -1, -1, -1, 363, -1,
1797 365, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1798 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1799 -1, -1, 387, 388, -1, -1, -1, -1, -1, 394,
1800 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1801 405, 406, 407, 408, 409, 410, 411, -1, -1, -1,
1802 -1, -1, 260, -1, -1, -1, -1, -1, -1, -1,
1803 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
1804 278, 279, 91, -1, -1, 283, 284, 285, -1, -1,
1805 -1, 289, 290, 291, 292, 293, 294, 295, 296, 297,
1806 -1, 299, 300, 301, 302, 303, 304, 305, -1, 307,
1807 -1, -1, -1, -1, -1, -1, 125, -1, -1, -1,
1808 -1, -1, -1, -1, 322, -1, -1, -1, -1, -1,
1809 -1, 329, 330, -1, 332, -1, 334, 335, 336, -1,
1810 -1, 339, 340, -1, 342, 343, 344, 345, 0, -1,
1811 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1812 -1, -1, -1, -1, -1, 363, -1, 365, -1, -1,
1813 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1814 -1, -1, -1, -1, -1, -1, -1, -1, -1, 387,
1815 388, -1, -1, -1, -1, -1, 394, 395, 396, 397,
1816 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
1817 408, 409, 410, 411, -1, -1, -1, -1, -1, -1,
1818 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1819 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
1820 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1821 -1, 260, -1, -1, -1, -1, -1, -1, -1, 268,
1822 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
1823 279, -1, -1, 125, 283, 284, 285, -1, -1, -1,
1824 289, 290, 291, 292, 293, 294, 295, 296, 297, -1,
1825 299, 300, 301, 302, 303, 304, 305, -1, 307, -1,
1826 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1827 -1, -1, -1, 322, -1, -1, -1, -1, -1, -1,
1828 329, 330, -1, 332, -1, 334, 335, 336, -1, -1,
1829 339, 340, -1, 342, 343, 344, 345, 0, -1, -1,
1830 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1831 -1, -1, -1, -1, 363, -1, 365, -1, -1, -1,
1832 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1833 -1, -1, -1, -1, -1, -1, -1, -1, 387, 388,
1834 -1, -1, -1, -1, -1, 394, 395, 396, 397, 398,
1835 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
1836 409, 410, 411, -1, -1, -1, -1, -1, 260, -1,
1837 -1, -1, -1, -1, -1, -1, 268, 269, 270, 271,
1838 272, 273, 274, 275, 276, 277, 278, 279, 91, -1,
1839 -1, 283, 284, 285, -1, -1, -1, 289, 290, 291,
1840 292, 293, 294, 295, 296, 297, -1, 299, 300, 301,
1841 302, 303, 304, 305, -1, 307, -1, -1, -1, -1,
1842 -1, -1, 125, -1, -1, -1, -1, -1, -1, -1,
1843 322, -1, -1, -1, -1, -1, -1, 329, 330, -1,
1844 332, -1, 334, 335, 336, -1, -1, 339, 340, -1,
1845 342, 343, 344, 345, 0, -1, -1, -1, -1, -1,
1846 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1847 -1, 363, -1, 365, -1, -1, -1, -1, -1, -1,
1848 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1849 -1, -1, -1, -1, -1, 387, 388, -1, -1, -1,
1850 -1, -1, 394, 395, 396, 397, 398, 399, 400, 401,
1851 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
1852 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1853 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1854 -1, -1, -1, -1, -1, 91, -1, -1, -1, -1,
1855 -1, -1, -1, -1, -1, -1, -1, 260, -1, -1,
1856 -1, -1, -1, -1, -1, 268, 269, 270, 271, 272,
1857 273, 274, 275, 276, 277, 278, 279, -1, -1, 125,
1858 283, 284, 285, -1, -1, -1, 289, 290, 291, 292,
1859 293, 294, 295, 296, 297, -1, 299, 300, 301, 302,
1860 303, 304, 305, -1, 307, -1, -1, -1, -1, -1,
1861 -1, -1, -1, -1, -1, -1, -1, -1, -1, 322,
1862 -1, -1, -1, -1, -1, -1, 329, 330, -1, 332,
1863 -1, 334, 335, 336, -1, -1, 339, 340, -1, 342,
1864 343, 344, 345, 0, -1, -1, -1, -1, -1, -1,
1865 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1866 363, -1, 365, -1, -1, -1, -1, -1, -1, -1,
1867 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1868 -1, -1, -1, -1, 387, 388, -1, -1, -1, -1,
1869 -1, 394, 395, 396, 397, 398, 399, 400, 401, 402,
1870 403, 404, 405, 406, 407, 408, 409, 410, 411, -1,
1871 -1, -1, -1, -1, 260, -1, -1, -1, -1, -1,
1872 -1, -1, 268, 269, 270, 271, 272, 273, 274, 275,
1873 276, 277, 278, 279, 91, -1, -1, 283, 284, 285,
1874 -1, -1, -1, 289, 290, 291, 292, 293, 294, 295,
1875 296, 297, -1, 299, 300, 301, 302, 303, 304, 305,
1876 -1, 307, -1, -1, -1, -1, -1, -1, 125, -1,
1877 -1, -1, -1, -1, -1, -1, 322, -1, -1, -1,
1878 -1, -1, -1, 329, 330, -1, 332, -1, 334, 335,
1879 336, -1, -1, 339, 340, -1, 342, 343, 344, 345,
1880 0, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1881 -1, -1, -1, -1, -1, -1, -1, 363, -1, 365,
1882 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1883 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1884 -1, 387, 388, -1, -1, -1, -1, -1, 394, 395,
1885 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
1886 406, 407, 408, 409, 410, 411, -1, -1, -1, -1,
1887 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1888 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1889 -1, 91, -1, -1, -1, -1, -1, -1, -1, -1,
1890 -1, -1, -1, 260, -1, -1, -1, -1, -1, -1,
1891 -1, 268, 269, 270, 271, 272, 273, 274, 275, 276,
1892 277, 278, 279, -1, -1, 125, 283, 284, 285, -1,
1893 -1, -1, 289, 290, 291, 292, 293, 294, 295, 296,
1894 297, -1, 299, 300, 301, 302, 303, 304, 305, -1,
1895 307, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1896 -1, -1, -1, -1, 0, 322, -1, -1, -1, -1,
1897 -1, -1, 329, 330, -1, 332, -1, 334, 335, 336,
1898 -1, -1, 339, 340, -1, 342, 343, 344, 345, -1,
1899 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1900 -1, -1, -1, -1, -1, -1, 363, -1, 365, -1,
1901 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1902 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1903 387, 388, -1, -1, -1, -1, -1, 394, 395, 396,
1904 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
1905 407, 408, 409, 410, 411, 91, -1, -1, -1, -1,
1906 260, -1, -1, -1, -1, -1, -1, -1, 268, 269,
1907 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
1908 -1, -1, -1, 283, 284, 285, -1, -1, -1, 289,
1909 290, 291, 292, 293, 294, 295, 296, 297, -1, 299,
1910 300, 301, 302, 303, 304, 305, -1, 307, -1, -1,
1911 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1912 -1, 0, 322, -1, -1, -1, -1, -1, -1, 329,
1913 330, -1, 332, -1, 334, 335, 336, -1, -1, 339,
1914 340, -1, 342, 343, 344, 345, -1, -1, -1, -1,
1915 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1916 -1, -1, -1, 363, -1, 365, -1, -1, -1, -1,
1917 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1918 -1, -1, -1, -1, -1, -1, -1, 387, 388, -1,
1919 -1, -1, -1, -1, 394, 395, 396, 397, 398, 399,
1920 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
1921 410, 411, 91, -1, 40, -1, -1, -1, -1, -1,
1922 -1, -1, -1, -1, 260, -1, -1, 40, -1, -1,
1923 -1, -1, 268, 269, 270, 271, 272, 273, 274, 275,
1924 276, 277, 278, 279, -1, -1, -1, 283, 284, 285,
1925 -1, -1, -1, 289, 290, 291, 292, 293, 294, 295,
1926 296, 297, -1, 299, 300, 301, 302, 303, 304, 305,
1927 -1, 307, -1, -1, -1, -1, -1, -1, -1, -1,
1928 -1, -1, -1, -1, -1, -1, 322, -1, -1, -1,
1929 -1, -1, -1, 329, 330, -1, 332, -1, 334, 335,
1930 336, -1, -1, 339, 340, -1, 342, -1, 344, -1,
1931 -1, -1, -1, -1, -1, -1, 40, -1, -1, -1,
1932 -1, -1, -1, -1, -1, -1, -1, 363, -1, 365,
1933 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1934 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1935 -1, 387, 388, -1, -1, -1, -1, -1, 394, 395,
1936 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
1937 406, 407, 408, 409, 410, 411, -1, -1, -1, -1,
1938 -1, 260, -1, -1, -1, -1, -1, -1, -1, 268,
1939 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
1940 279, -1, -1, -1, 283, 284, 285, -1, -1, -1,
1941 289, 290, 291, 292, 293, 294, 295, 296, 297, -1,
1942 299, 300, 301, 302, 303, 304, 305, -1, 307, -1,
1943 -1, 257, -1, -1, -1, 261, -1, -1, -1, -1,
1944 -1, -1, -1, 322, 257, 258, -1, -1, -1, -1,
1945 329, 330, -1, 332, -1, 334, 335, 336, -1, -1,
1946 339, 340, -1, 342, -1, 344, -1, -1, -1, -1,
1947 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1948 -1, -1, -1, -1, 363, -1, 365, 313, 314, -1,
1949 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1950 313, 314, -1, -1, -1, -1, -1, -1, 387, 388,
1951 91, -1, -1, -1, -1, 394, 395, 396, 397, 398,
1952 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
1953 409, 410, 411, -1, 258, -1, -1, -1, -1, -1,
1954 -1, -1, -1, 369, 370, 371, 372, 373, -1, 375,
1955 376, 377, 378, 379, 380, 381, 369, 370, 371, 372,
1956 373, -1, 375, 376, 377, 378, 379, 380, 381, -1,
1957 -1, -1, -1, -1, 400, 401, -1, -1, 404, 405,
1958 315, 316, -1, -1, 410, -1, -1, 400, 401, 313,
1959 314, 326, 327, 328, -1, -1, -1, 410, -1, -1,
1960 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1961 -1, -1, -1, -1, 349, -1, 351, 352, 353, 354,
1962 355, 356, 357, 358, 359, 360, -1, -1, -1, -1,
1963 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1964 -1, -1, -1, -1, -1, 369, 370, 371, 372, 373,
1965 385, 375, 376, 377, 378, 379, 380, 381, -1, -1,
1966 -1, 396, 397, -1, -1, -1, -1, -1, -1, -1,
1967 -1, -1, -1, -1, -1, -1, 400, 401, -1, 260,
1968 -1, -1, -1, -1, -1, -1, 410, 268, -1, -1,
1969 271, 272, 273, 274, 275, 276, 277, 278, 279, -1,
1970 -1, -1, 283, 284, 285, -1, -1, -1, 289, 290,
1971 291, 292, 293, 294, 295, 296, 297, -1, 299, 300,
1972 301, 302, 303, 304, 305, -1, 307, -1, -1, -1,
1973 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1974 -1, 322, -1, -1, -1, -1, -1, -1, 329, 330,
1975 -1, 332, -1, 334, 335, 336, -1, -1, 339, 340,
1976 -1, 342, -1, 344, -1, -1, -1, -1, -1, -1,
1977 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1978 -1, -1, 363, -1, 365, -1, -1, -1, -1, -1,
1979 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1980 -1, -1, -1, -1, -1, -1, 387, 388, -1, -1,
1981 -1, -1, -1, 394, 395, 396, 397, 398, 399, 400,
1982 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
1983 411,
1985 #define YYFINAL 3
1986 #ifndef YYDEBUG
1987 #define YYDEBUG 0
1988 #endif
1989 #define YYMAXTOKEN 430
1990 #if YYDEBUG
1991 char *yyname[] = {
1992 "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1993 0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'","','","'-'","'.'","'/'",0,0,0,0,0,0,
1994 0,0,0,0,"':'",0,0,"'='",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1995 0,"'['",0,"']'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'{'",
1996 "'|'","'}'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1997 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1998 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1999 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"CHAR","INTEGER","BOOLEAN","PERCENT",
2000 "SPERCENT","MINUS_INTEGER","PLUS_INTEGER","MAZE_GRID_ID","SOLID_FILL_ID",
2001 "MINES_ID","ROGUELEV_ID","MESSAGE_ID","MAZE_ID","LEVEL_ID","LEV_INIT_ID",
2002 "GEOMETRY_ID","NOMAP_ID","OBJECT_ID","COBJECT_ID","MONSTER_ID","TRAP_ID",
2003 "DOOR_ID","DRAWBRIDGE_ID","object_ID","monster_ID","terrain_ID","MAZEWALK_ID",
2004 "WALLIFY_ID","REGION_ID","FILLING","IRREGULAR","JOINED","ALTAR_ID","LADDER_ID",
2005 "STAIR_ID","NON_DIGGABLE_ID","NON_PASSWALL_ID","ROOM_ID","PORTAL_ID",
2006 "TELEPRT_ID","BRANCH_ID","LEV","MINERALIZE_ID","CORRIDOR_ID","GOLD_ID",
2007 "ENGRAVING_ID","FOUNTAIN_ID","POOL_ID","SINK_ID","NONE","RAND_CORRIDOR_ID",
2008 "DOOR_STATE","LIGHT_STATE","CURSE_TYPE","ENGRAVING_TYPE","DIRECTION",
2009 "RANDOM_TYPE","RANDOM_TYPE_BRACKET","A_REGISTER","ALIGNMENT","LEFT_OR_RIGHT",
2010 "CENTER","TOP_OR_BOT","ALTAR_TYPE","UP_OR_DOWN","SUBROOM_ID","NAME_ID",
2011 "FLAGS_ID","FLAG_TYPE","MON_ATTITUDE","MON_ALERTNESS","MON_APPEARANCE",
2012 "ROOMDOOR_ID","IF_ID","ELSE_ID","TERRAIN_ID","HORIZ_OR_VERT",
2013 "REPLACE_TERRAIN_ID","EXIT_ID","SHUFFLE_ID","QUANTITY_ID","BURIED_ID","LOOP_ID",
2014 "FOR_ID","TO_ID","SWITCH_ID","CASE_ID","BREAK_ID","DEFAULT_ID","ERODED_ID",
2015 "TRAPPED_STATE","RECHARGED_ID","INVIS_ID","GREASED_ID","FEMALE_ID",
2016 "CANCELLED_ID","REVIVED_ID","AVENGE_ID","FLEEING_ID","BLINDED_ID",
2017 "PARALYZED_ID","STUNNED_ID","CONFUSED_ID","SEENTRAPS_ID","ALL_ID","MONTYPE_ID",
2018 "GRAVE_ID","ERODEPROOF_ID","FUNCTION_ID","MSG_OUTPUT_TYPE","COMPARE_TYPE",
2019 "UNKNOWN_TYPE","rect_ID","fillrect_ID","line_ID","randline_ID","grow_ID",
2020 "selection_ID","flood_ID","rndcoord_ID","circle_ID","ellipse_ID","filter_ID",
2021 "complement_ID","gradient_ID","GRADIENT_TYPE","LIMITED","HUMIDITY_TYPE",
2022 "STRING","MAP_ID","NQSTRING","VARSTRING","CFUNC","CFUNC_INT","CFUNC_STR",
2023 "CFUNC_COORD","CFUNC_REGION","VARSTRING_INT","VARSTRING_INT_ARRAY",
2024 "VARSTRING_STRING","VARSTRING_STRING_ARRAY","VARSTRING_VAR",
2025 "VARSTRING_VAR_ARRAY","VARSTRING_COORD","VARSTRING_COORD_ARRAY",
2026 "VARSTRING_REGION","VARSTRING_REGION_ARRAY","VARSTRING_MAPCHAR",
2027 "VARSTRING_MAPCHAR_ARRAY","VARSTRING_MONST","VARSTRING_MONST_ARRAY",
2028 "VARSTRING_OBJ","VARSTRING_OBJ_ARRAY","VARSTRING_SEL","VARSTRING_SEL_ARRAY",
2029 "METHOD_INT","METHOD_INT_ARRAY","METHOD_STRING","METHOD_STRING_ARRAY",
2030 "METHOD_VAR","METHOD_VAR_ARRAY","METHOD_COORD","METHOD_COORD_ARRAY",
2031 "METHOD_REGION","METHOD_REGION_ARRAY","METHOD_MAPCHAR","METHOD_MAPCHAR_ARRAY",
2032 "METHOD_MONST","METHOD_MONST_ARRAY","METHOD_OBJ","METHOD_OBJ_ARRAY",
2033 "METHOD_SEL","METHOD_SEL_ARRAY","DICE",
2035 char *yyrule[] = {
2036 "$accept : file",
2037 "file :",
2038 "file : levels",
2039 "levels : level",
2040 "levels : level levels",
2041 "level : level_def flags levstatements",
2042 "level_def : LEVEL_ID ':' STRING",
2043 "level_def : MAZE_ID ':' STRING ',' mazefiller",
2044 "mazefiller : RANDOM_TYPE",
2045 "mazefiller : CHAR",
2046 "lev_init : LEV_INIT_ID ':' SOLID_FILL_ID ',' terrain_type",
2047 "lev_init : LEV_INIT_ID ':' MAZE_GRID_ID ',' CHAR",
2048 "lev_init : LEV_INIT_ID ':' ROGUELEV_ID",
2049 "lev_init : LEV_INIT_ID ':' MINES_ID ',' CHAR ',' CHAR ',' BOOLEAN ',' BOOLEAN ',' light_state ',' walled opt_fillchar",
2050 "opt_limited :",
2051 "opt_limited : ',' LIMITED",
2052 "opt_coord_or_var :",
2053 "opt_coord_or_var : ',' coord_or_var",
2054 "opt_fillchar :",
2055 "opt_fillchar : ',' CHAR",
2056 "walled : BOOLEAN",
2057 "walled : RANDOM_TYPE",
2058 "flags :",
2059 "flags : FLAGS_ID ':' flag_list",
2060 "flag_list : FLAG_TYPE ',' flag_list",
2061 "flag_list : FLAG_TYPE",
2062 "levstatements :",
2063 "levstatements : levstatement levstatements",
2064 "stmt_block : '{' levstatements '}'",
2065 "levstatement : message",
2066 "levstatement : lev_init",
2067 "levstatement : altar_detail",
2068 "levstatement : grave_detail",
2069 "levstatement : branch_region",
2070 "levstatement : corridor",
2071 "levstatement : variable_define",
2072 "levstatement : shuffle_detail",
2073 "levstatement : diggable_detail",
2074 "levstatement : door_detail",
2075 "levstatement : drawbridge_detail",
2076 "levstatement : engraving_detail",
2077 "levstatement : mineralize",
2078 "levstatement : fountain_detail",
2079 "levstatement : gold_detail",
2080 "levstatement : switchstatement",
2081 "levstatement : forstatement",
2082 "levstatement : loopstatement",
2083 "levstatement : ifstatement",
2084 "levstatement : chancestatement",
2085 "levstatement : exitstatement",
2086 "levstatement : breakstatement",
2087 "levstatement : function_define",
2088 "levstatement : function_call",
2089 "levstatement : ladder_detail",
2090 "levstatement : map_definition",
2091 "levstatement : mazewalk_detail",
2092 "levstatement : monster_detail",
2093 "levstatement : object_detail",
2094 "levstatement : passwall_detail",
2095 "levstatement : pool_detail",
2096 "levstatement : portal_region",
2097 "levstatement : random_corridors",
2098 "levstatement : region_detail",
2099 "levstatement : room_def",
2100 "levstatement : subroom_def",
2101 "levstatement : sink_detail",
2102 "levstatement : terrain_detail",
2103 "levstatement : replace_terrain_detail",
2104 "levstatement : stair_detail",
2105 "levstatement : stair_region",
2106 "levstatement : teleprt_region",
2107 "levstatement : trap_detail",
2108 "levstatement : wallify_detail",
2109 "any_var_array : VARSTRING_INT_ARRAY",
2110 "any_var_array : VARSTRING_STRING_ARRAY",
2111 "any_var_array : VARSTRING_VAR_ARRAY",
2112 "any_var_array : VARSTRING_COORD_ARRAY",
2113 "any_var_array : VARSTRING_REGION_ARRAY",
2114 "any_var_array : VARSTRING_MAPCHAR_ARRAY",
2115 "any_var_array : VARSTRING_MONST_ARRAY",
2116 "any_var_array : VARSTRING_OBJ_ARRAY",
2117 "any_var_array : VARSTRING_SEL_ARRAY",
2118 "any_var : VARSTRING_INT",
2119 "any_var : VARSTRING_STRING",
2120 "any_var : VARSTRING_VAR",
2121 "any_var : VARSTRING_COORD",
2122 "any_var : VARSTRING_REGION",
2123 "any_var : VARSTRING_MAPCHAR",
2124 "any_var : VARSTRING_MONST",
2125 "any_var : VARSTRING_OBJ",
2126 "any_var : VARSTRING_SEL",
2127 "any_var_or_arr : any_var_array",
2128 "any_var_or_arr : any_var",
2129 "any_var_or_arr : VARSTRING",
2130 "any_var_or_unk : VARSTRING",
2131 "any_var_or_unk : any_var",
2132 "shuffle_detail : SHUFFLE_ID ':' any_var_array",
2133 "variable_define : any_var_or_arr '=' math_expr_var",
2134 "variable_define : any_var_or_arr '=' selection_ID ':' ter_selection",
2135 "variable_define : any_var_or_arr '=' string_expr",
2136 "variable_define : any_var_or_arr '=' terrainid ':' mapchar_or_var",
2137 "variable_define : any_var_or_arr '=' monsterid ':' monster_or_var",
2138 "variable_define : any_var_or_arr '=' objectid ':' object_or_var",
2139 "variable_define : any_var_or_arr '=' coord_or_var",
2140 "variable_define : any_var_or_arr '=' region_or_var",
2141 "variable_define : any_var_or_arr '=' '{' integer_list '}'",
2142 "variable_define : any_var_or_arr '=' '{' encodecoord_list '}'",
2143 "variable_define : any_var_or_arr '=' '{' encoderegion_list '}'",
2144 "variable_define : any_var_or_arr '=' terrainid ':' '{' mapchar_list '}'",
2145 "variable_define : any_var_or_arr '=' monsterid ':' '{' encodemonster_list '}'",
2146 "variable_define : any_var_or_arr '=' objectid ':' '{' encodeobj_list '}'",
2147 "variable_define : any_var_or_arr '=' '{' string_list '}'",
2148 "encodeobj_list : encodeobj",
2149 "encodeobj_list : encodeobj_list ',' encodeobj",
2150 "encodemonster_list : encodemonster",
2151 "encodemonster_list : encodemonster_list ',' encodemonster",
2152 "mapchar_list : mapchar",
2153 "mapchar_list : mapchar_list ',' mapchar",
2154 "encoderegion_list : encoderegion",
2155 "encoderegion_list : encoderegion_list ',' encoderegion",
2156 "encodecoord_list : encodecoord",
2157 "encodecoord_list : encodecoord_list ',' encodecoord",
2158 "integer_list : math_expr_var",
2159 "integer_list : integer_list ',' math_expr_var",
2160 "string_list : string_expr",
2161 "string_list : string_list ',' string_expr",
2162 "$$1 :",
2163 "$$2 :",
2164 "function_define : FUNCTION_ID NQSTRING '(' $$1 func_params_list ')' $$2 stmt_block",
2165 "function_call : NQSTRING '(' func_call_params_list ')'",
2166 "exitstatement : EXIT_ID",
2167 "opt_percent :",
2168 "opt_percent : PERCENT",
2169 "comparestmt : PERCENT",
2170 "comparestmt : '[' math_expr_var COMPARE_TYPE math_expr_var ']'",
2171 "comparestmt : '[' math_expr_var ']'",
2172 "$$3 :",
2173 "$$4 :",
2174 "switchstatement : SWITCH_ID $$3 '[' integer_or_var ']' $$4 '{' switchcases '}'",
2175 "switchcases :",
2176 "switchcases : switchcase switchcases",
2177 "$$5 :",
2178 "switchcase : CASE_ID all_integers ':' $$5 levstatements",
2179 "$$6 :",
2180 "switchcase : DEFAULT_ID ':' $$6 levstatements",
2181 "breakstatement : BREAK_ID",
2182 "for_to_span : '.' '.'",
2183 "for_to_span : TO_ID",
2184 "forstmt_start : FOR_ID any_var_or_unk '=' math_expr_var for_to_span math_expr_var",
2185 "$$7 :",
2186 "forstatement : forstmt_start $$7 stmt_block",
2187 "$$8 :",
2188 "loopstatement : LOOP_ID '[' integer_or_var ']' $$8 stmt_block",
2189 "$$9 :",
2190 "chancestatement : comparestmt ':' $$9 levstatement",
2191 "$$10 :",
2192 "ifstatement : IF_ID comparestmt $$10 if_ending",
2193 "if_ending : stmt_block",
2194 "$$11 :",
2195 "if_ending : stmt_block $$11 ELSE_ID stmt_block",
2196 "message : MESSAGE_ID ':' string_expr",
2197 "random_corridors : RAND_CORRIDOR_ID",
2198 "random_corridors : RAND_CORRIDOR_ID ':' all_integers",
2199 "random_corridors : RAND_CORRIDOR_ID ':' RANDOM_TYPE",
2200 "corridor : CORRIDOR_ID ':' corr_spec ',' corr_spec",
2201 "corridor : CORRIDOR_ID ':' corr_spec ',' all_integers",
2202 "corr_spec : '(' INTEGER ',' DIRECTION ',' door_pos ')'",
2203 "room_begin : room_type opt_percent ',' light_state",
2204 "$$12 :",
2205 "subroom_def : SUBROOM_ID ':' room_begin ',' subroom_pos ',' room_size optroomregionflags $$12 stmt_block",
2206 "$$13 :",
2207 "room_def : ROOM_ID ':' room_begin ',' room_pos ',' room_align ',' room_size optroomregionflags $$13 stmt_block",
2208 "roomfill :",
2209 "roomfill : ',' BOOLEAN",
2210 "room_pos : '(' INTEGER ',' INTEGER ')'",
2211 "room_pos : RANDOM_TYPE",
2212 "subroom_pos : '(' INTEGER ',' INTEGER ')'",
2213 "subroom_pos : RANDOM_TYPE",
2214 "room_align : '(' h_justif ',' v_justif ')'",
2215 "room_align : RANDOM_TYPE",
2216 "room_size : '(' INTEGER ',' INTEGER ')'",
2217 "room_size : RANDOM_TYPE",
2218 "door_detail : ROOMDOOR_ID ':' secret ',' door_state ',' door_wall ',' door_pos",
2219 "door_detail : DOOR_ID ':' door_state ',' ter_selection",
2220 "secret : BOOLEAN",
2221 "secret : RANDOM_TYPE",
2222 "door_wall : dir_list",
2223 "door_wall : RANDOM_TYPE",
2224 "dir_list : DIRECTION",
2225 "dir_list : DIRECTION '|' dir_list",
2226 "door_pos : INTEGER",
2227 "door_pos : RANDOM_TYPE",
2228 "map_definition : NOMAP_ID",
2229 "map_definition : GEOMETRY_ID ':' h_justif ',' v_justif roomfill MAP_ID",
2230 "map_definition : GEOMETRY_ID ':' coord_or_var roomfill MAP_ID",
2231 "h_justif : LEFT_OR_RIGHT",
2232 "h_justif : CENTER",
2233 "v_justif : TOP_OR_BOT",
2234 "v_justif : CENTER",
2235 "monster_detail : MONSTER_ID ':' monster_desc",
2236 "$$14 :",
2237 "monster_detail : MONSTER_ID ':' monster_desc $$14 stmt_block",
2238 "monster_desc : monster_or_var ',' coord_or_var monster_infos",
2239 "monster_infos :",
2240 "monster_infos : monster_infos ',' monster_info",
2241 "monster_info : string_expr",
2242 "monster_info : MON_ATTITUDE",
2243 "monster_info : MON_ALERTNESS",
2244 "monster_info : alignment_prfx",
2245 "monster_info : MON_APPEARANCE string_expr",
2246 "monster_info : FEMALE_ID",
2247 "monster_info : INVIS_ID",
2248 "monster_info : CANCELLED_ID",
2249 "monster_info : REVIVED_ID",
2250 "monster_info : AVENGE_ID",
2251 "monster_info : FLEEING_ID ':' integer_or_var",
2252 "monster_info : BLINDED_ID ':' integer_or_var",
2253 "monster_info : PARALYZED_ID ':' integer_or_var",
2254 "monster_info : STUNNED_ID",
2255 "monster_info : CONFUSED_ID",
2256 "monster_info : SEENTRAPS_ID ':' seen_trap_mask",
2257 "seen_trap_mask : STRING",
2258 "seen_trap_mask : ALL_ID",
2259 "seen_trap_mask : STRING '|' seen_trap_mask",
2260 "object_detail : OBJECT_ID ':' object_desc",
2261 "$$15 :",
2262 "object_detail : COBJECT_ID ':' object_desc $$15 stmt_block",
2263 "object_desc : object_or_var object_infos",
2264 "object_infos :",
2265 "object_infos : object_infos ',' object_info",
2266 "object_info : CURSE_TYPE",
2267 "object_info : MONTYPE_ID ':' monster_or_var",
2268 "object_info : all_ints_push",
2269 "object_info : NAME_ID ':' string_expr",
2270 "object_info : QUANTITY_ID ':' integer_or_var",
2271 "object_info : BURIED_ID",
2272 "object_info : LIGHT_STATE",
2273 "object_info : ERODED_ID ':' integer_or_var",
2274 "object_info : ERODEPROOF_ID",
2275 "object_info : DOOR_STATE",
2276 "object_info : TRAPPED_STATE",
2277 "object_info : RECHARGED_ID ':' integer_or_var",
2278 "object_info : INVIS_ID",
2279 "object_info : GREASED_ID",
2280 "object_info : coord_or_var",
2281 "trap_detail : TRAP_ID ':' trap_name ',' coord_or_var",
2282 "drawbridge_detail : DRAWBRIDGE_ID ':' coord_or_var ',' DIRECTION ',' door_state",
2283 "mazewalk_detail : MAZEWALK_ID ':' coord_or_var ',' DIRECTION",
2284 "mazewalk_detail : MAZEWALK_ID ':' coord_or_var ',' DIRECTION ',' BOOLEAN opt_fillchar",
2285 "wallify_detail : WALLIFY_ID",
2286 "wallify_detail : WALLIFY_ID ':' ter_selection",
2287 "ladder_detail : LADDER_ID ':' coord_or_var ',' UP_OR_DOWN",
2288 "stair_detail : STAIR_ID ':' coord_or_var ',' UP_OR_DOWN",
2289 "stair_region : STAIR_ID ':' lev_region ',' lev_region ',' UP_OR_DOWN",
2290 "portal_region : PORTAL_ID ':' lev_region ',' lev_region ',' STRING",
2291 "teleprt_region : TELEPRT_ID ':' lev_region ',' lev_region teleprt_detail",
2292 "branch_region : BRANCH_ID ':' lev_region ',' lev_region",
2293 "teleprt_detail :",
2294 "teleprt_detail : ',' UP_OR_DOWN",
2295 "fountain_detail : FOUNTAIN_ID ':' ter_selection",
2296 "sink_detail : SINK_ID ':' ter_selection",
2297 "pool_detail : POOL_ID ':' ter_selection",
2298 "terrain_type : CHAR",
2299 "terrain_type : '(' CHAR ',' light_state ')'",
2300 "replace_terrain_detail : REPLACE_TERRAIN_ID ':' region_or_var ',' mapchar_or_var ',' mapchar_or_var ',' SPERCENT",
2301 "terrain_detail : TERRAIN_ID ':' ter_selection ',' mapchar_or_var",
2302 "diggable_detail : NON_DIGGABLE_ID ':' region_or_var",
2303 "passwall_detail : NON_PASSWALL_ID ':' region_or_var",
2304 "$$16 :",
2305 "region_detail : REGION_ID ':' region_or_var ',' light_state ',' room_type optroomregionflags $$16 region_detail_end",
2306 "region_detail_end :",
2307 "region_detail_end : stmt_block",
2308 "altar_detail : ALTAR_ID ':' coord_or_var ',' alignment ',' altar_type",
2309 "grave_detail : GRAVE_ID ':' coord_or_var ',' string_expr",
2310 "grave_detail : GRAVE_ID ':' coord_or_var ',' RANDOM_TYPE",
2311 "grave_detail : GRAVE_ID ':' coord_or_var",
2312 "gold_detail : GOLD_ID ':' math_expr_var ',' coord_or_var",
2313 "engraving_detail : ENGRAVING_ID ':' coord_or_var ',' engraving_type ',' string_expr",
2314 "mineralize : MINERALIZE_ID ':' integer_or_var ',' integer_or_var ',' integer_or_var ',' integer_or_var",
2315 "mineralize : MINERALIZE_ID",
2316 "trap_name : STRING",
2317 "trap_name : RANDOM_TYPE",
2318 "room_type : STRING",
2319 "room_type : RANDOM_TYPE",
2320 "optroomregionflags :",
2321 "optroomregionflags : ',' roomregionflags",
2322 "roomregionflags : roomregionflag",
2323 "roomregionflags : roomregionflag ',' roomregionflags",
2324 "roomregionflag : FILLING",
2325 "roomregionflag : IRREGULAR",
2326 "roomregionflag : JOINED",
2327 "door_state : DOOR_STATE",
2328 "door_state : RANDOM_TYPE",
2329 "light_state : LIGHT_STATE",
2330 "light_state : RANDOM_TYPE",
2331 "alignment : ALIGNMENT",
2332 "alignment : a_register",
2333 "alignment : RANDOM_TYPE",
2334 "alignment_prfx : ALIGNMENT",
2335 "alignment_prfx : a_register",
2336 "alignment_prfx : A_REGISTER ':' RANDOM_TYPE",
2337 "altar_type : ALTAR_TYPE",
2338 "altar_type : RANDOM_TYPE",
2339 "a_register : A_REGISTER '[' INTEGER ']'",
2340 "string_or_var : STRING",
2341 "string_or_var : VARSTRING_STRING",
2342 "string_or_var : VARSTRING_STRING_ARRAY '[' math_expr_var ']'",
2343 "integer_or_var : math_expr_var",
2344 "coord_or_var : encodecoord",
2345 "coord_or_var : rndcoord_ID '(' ter_selection ')'",
2346 "coord_or_var : VARSTRING_COORD",
2347 "coord_or_var : VARSTRING_COORD_ARRAY '[' math_expr_var ']'",
2348 "encodecoord : '(' INTEGER ',' INTEGER ')'",
2349 "encodecoord : RANDOM_TYPE",
2350 "encodecoord : RANDOM_TYPE_BRACKET humidity_flags ']'",
2351 "humidity_flags : HUMIDITY_TYPE",
2352 "humidity_flags : HUMIDITY_TYPE ',' humidity_flags",
2353 "region_or_var : encoderegion",
2354 "region_or_var : VARSTRING_REGION",
2355 "region_or_var : VARSTRING_REGION_ARRAY '[' math_expr_var ']'",
2356 "encoderegion : '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'",
2357 "mapchar_or_var : mapchar",
2358 "mapchar_or_var : VARSTRING_MAPCHAR",
2359 "mapchar_or_var : VARSTRING_MAPCHAR_ARRAY '[' math_expr_var ']'",
2360 "mapchar : CHAR",
2361 "mapchar : '(' CHAR ',' light_state ')'",
2362 "monster_or_var : encodemonster",
2363 "monster_or_var : VARSTRING_MONST",
2364 "monster_or_var : VARSTRING_MONST_ARRAY '[' math_expr_var ']'",
2365 "encodemonster : STRING",
2366 "encodemonster : CHAR",
2367 "encodemonster : '(' CHAR ',' STRING ')'",
2368 "encodemonster : RANDOM_TYPE",
2369 "object_or_var : encodeobj",
2370 "object_or_var : VARSTRING_OBJ",
2371 "object_or_var : VARSTRING_OBJ_ARRAY '[' math_expr_var ']'",
2372 "encodeobj : STRING",
2373 "encodeobj : CHAR",
2374 "encodeobj : '(' CHAR ',' STRING ')'",
2375 "encodeobj : RANDOM_TYPE",
2376 "string_expr : string_or_var",
2377 "string_expr : string_expr '.' string_or_var",
2378 "math_expr_var : INTEGER",
2379 "math_expr_var : dice",
2380 "math_expr_var : '(' MINUS_INTEGER ')'",
2381 "math_expr_var : VARSTRING_INT",
2382 "math_expr_var : VARSTRING_INT_ARRAY '[' math_expr_var ']'",
2383 "math_expr_var : math_expr_var '+' math_expr_var",
2384 "math_expr_var : math_expr_var '-' math_expr_var",
2385 "math_expr_var : math_expr_var '*' math_expr_var",
2386 "math_expr_var : math_expr_var '/' math_expr_var",
2387 "math_expr_var : math_expr_var '%' math_expr_var",
2388 "math_expr_var : '(' math_expr_var ')'",
2389 "func_param_type : CFUNC_INT",
2390 "func_param_type : CFUNC_STR",
2391 "func_param_part : any_var_or_arr ':' func_param_type",
2392 "func_param_list : func_param_part",
2393 "func_param_list : func_param_list ',' func_param_part",
2394 "func_params_list :",
2395 "func_params_list : func_param_list",
2396 "func_call_param_part : math_expr_var",
2397 "func_call_param_part : string_expr",
2398 "func_call_param_list : func_call_param_part",
2399 "func_call_param_list : func_call_param_list ',' func_call_param_part",
2400 "func_call_params_list :",
2401 "func_call_params_list : func_call_param_list",
2402 "ter_selection_x : coord_or_var",
2403 "ter_selection_x : rect_ID region_or_var",
2404 "ter_selection_x : fillrect_ID region_or_var",
2405 "ter_selection_x : line_ID coord_or_var ',' coord_or_var",
2406 "ter_selection_x : randline_ID coord_or_var ',' coord_or_var ',' math_expr_var",
2407 "ter_selection_x : grow_ID '(' ter_selection ')'",
2408 "ter_selection_x : grow_ID '(' dir_list ',' ter_selection ')'",
2409 "ter_selection_x : filter_ID '(' SPERCENT ',' ter_selection ')'",
2410 "ter_selection_x : filter_ID '(' ter_selection ',' ter_selection ')'",
2411 "ter_selection_x : filter_ID '(' mapchar_or_var ',' ter_selection ')'",
2412 "ter_selection_x : flood_ID coord_or_var",
2413 "ter_selection_x : circle_ID '(' coord_or_var ',' math_expr_var ')'",
2414 "ter_selection_x : circle_ID '(' coord_or_var ',' math_expr_var ',' FILLING ')'",
2415 "ter_selection_x : ellipse_ID '(' coord_or_var ',' math_expr_var ',' math_expr_var ')'",
2416 "ter_selection_x : ellipse_ID '(' coord_or_var ',' math_expr_var ',' math_expr_var ',' FILLING ')'",
2417 "ter_selection_x : gradient_ID '(' GRADIENT_TYPE ',' '(' math_expr_var '-' math_expr_var opt_limited ')' ',' coord_or_var opt_coord_or_var ')'",
2418 "ter_selection_x : complement_ID ter_selection_x",
2419 "ter_selection_x : VARSTRING_SEL",
2420 "ter_selection_x : '(' ter_selection ')'",
2421 "ter_selection : ter_selection_x",
2422 "ter_selection : ter_selection_x '&' ter_selection",
2423 "dice : DICE",
2424 "all_integers : MINUS_INTEGER",
2425 "all_integers : PLUS_INTEGER",
2426 "all_integers : INTEGER",
2427 "all_ints_push : MINUS_INTEGER",
2428 "all_ints_push : PLUS_INTEGER",
2429 "all_ints_push : INTEGER",
2430 "all_ints_push : dice",
2431 "objectid : object_ID",
2432 "objectid : OBJECT_ID",
2433 "monsterid : monster_ID",
2434 "monsterid : MONSTER_ID",
2435 "terrainid : terrain_ID",
2436 "terrainid : TERRAIN_ID",
2437 "engraving_type : ENGRAVING_TYPE",
2438 "engraving_type : RANDOM_TYPE",
2439 "lev_region : region",
2440 "lev_region : LEV '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'",
2441 "region : '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'",
2443 #endif
2444 #ifdef YYSTACKSIZE
2445 #undef YYMAXDEPTH
2446 #define YYMAXDEPTH YYSTACKSIZE
2447 #else
2448 #ifdef YYMAXDEPTH
2449 #define YYSTACKSIZE YYMAXDEPTH
2450 #else
2451 #define YYSTACKSIZE 500
2452 #define YYMAXDEPTH 500
2453 #endif
2454 #endif
2455 int yydebug;
2456 int yynerrs;
2457 int yyerrflag;
2458 int yychar;
2459 short *yyssp;
2460 YYSTYPE *yyvsp;
2461 YYSTYPE yyval;
2462 YYSTYPE yylval;
2463 short yyss[YYSTACKSIZE];
2464 YYSTYPE yyvs[YYSTACKSIZE];
2465 #define yystacksize YYSTACKSIZE
2467 /*lev_comp.y*/
2468 #define YYABORT goto yyabort
2469 #define YYREJECT goto yyabort
2470 #define YYACCEPT goto yyaccept
2471 #define YYERROR goto yyerrlab
2473 yyparse()
2475 register int yym, yyn, yystate;
2476 #if YYDEBUG
2477 register char *yys;
2478 extern char *getenv();
2480 if ((yys = getenv("YYDEBUG")) != 0)
2482 yyn = *yys;
2483 if (yyn >= '0' && yyn <= '9')
2484 yydebug = yyn - '0';
2486 #endif
2488 yynerrs = 0;
2489 yyerrflag = 0;
2490 yychar = (-1);
2492 yyssp = yyss;
2493 yyvsp = yyvs;
2494 *yyssp = yystate = 0;
2496 yyloop:
2497 if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
2498 if (yychar < 0)
2500 if ((yychar = yylex()) < 0) yychar = 0;
2501 #if YYDEBUG
2502 if (yydebug)
2504 yys = 0;
2505 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
2506 if (!yys) yys = "illegal-symbol";
2507 printf("%sdebug: state %d, reading %d (%s)\n",
2508 YYPREFIX, yystate, yychar, yys);
2510 #endif
2512 if ((yyn = yysindex[yystate]) != 0 && (yyn += yychar) >= 0 &&
2513 yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
2515 #if YYDEBUG
2516 if (yydebug)
2517 printf("%sdebug: state %d, shifting to state %d\n",
2518 YYPREFIX, yystate, yytable[yyn]);
2519 #endif
2520 if (yyssp >= yyss + yystacksize - 1)
2522 goto yyoverflow;
2524 *++yyssp = yystate = yytable[yyn];
2525 *++yyvsp = yylval;
2526 yychar = (-1);
2527 if (yyerrflag > 0) --yyerrflag;
2528 goto yyloop;
2530 if ((yyn = yyrindex[yystate]) != 0 && (yyn += yychar) >= 0 &&
2531 yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
2533 yyn = yytable[yyn];
2534 goto yyreduce;
2536 if (yyerrflag) goto yyinrecovery;
2537 goto yynewerror;
2538 yynewerror:
2539 yyerror("syntax error");
2540 goto yyerrlab;
2541 yyerrlab:
2542 ++yynerrs;
2543 yyinrecovery:
2544 if (yyerrflag < 3)
2546 yyerrflag = 3;
2547 for (;;)
2549 if ((yyn = yysindex[*yyssp]) != 0 && (yyn += YYERRCODE) >= 0 &&
2550 yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
2552 #if YYDEBUG
2553 if (yydebug)
2554 printf("%sdebug: state %d, error recovery shifting\
2555 to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
2556 #endif
2557 if (yyssp >= yyss + yystacksize - 1)
2559 goto yyoverflow;
2561 *++yyssp = yystate = yytable[yyn];
2562 *++yyvsp = yylval;
2563 goto yyloop;
2565 else
2567 #if YYDEBUG
2568 if (yydebug)
2569 printf("%sdebug: error recovery discarding state %d\n",
2570 YYPREFIX, *yyssp);
2571 #endif
2572 if (yyssp <= yyss) goto yyabort;
2573 --yyssp;
2574 --yyvsp;
2578 else
2580 if (yychar == 0) goto yyabort;
2581 #if YYDEBUG
2582 if (yydebug)
2584 yys = 0;
2585 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
2586 if (!yys) yys = "illegal-symbol";
2587 printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
2588 YYPREFIX, yystate, yychar, yys);
2590 #endif
2591 yychar = (-1);
2592 goto yyloop;
2594 yyreduce:
2595 #if YYDEBUG
2596 if (yydebug)
2597 printf("%sdebug: state %d, reducing by rule %d (%s)\n",
2598 YYPREFIX, yystate, yyn, yyrule[yyn]);
2599 #endif
2600 yym = yylen[yyn];
2601 yyval = yyvsp[1-yym];
2602 switch (yyn)
2604 case 5:
2606 if (fatal_error > 0) {
2607 (void) fprintf(stderr,
2608 "%s: %d errors detected for level \"%s\". No output created!\n",
2609 fname, fatal_error, yyvsp[-2].map);
2610 fatal_error = 0;
2611 got_errors++;
2612 } else if (!got_errors) {
2613 if (!write_level_file(yyvsp[-2].map, splev)) {
2614 lc_error("Can't write output file for '%s'!", yyvsp[-2].map);
2615 exit(EXIT_FAILURE);
2618 Free(yyvsp[-2].map);
2619 Free(splev);
2620 splev = NULL;
2621 vardef_free_all(variable_definitions);
2622 variable_definitions = NULL;
2624 break;
2625 case 6:
2627 start_level_def(&splev, yyvsp[0].map);
2628 yyval.map = yyvsp[0].map;
2630 break;
2631 case 7:
2633 start_level_def(&splev, yyvsp[-2].map);
2634 if (yyvsp[0].i == -1) {
2635 add_opvars(splev, "iiiiiiiio",
2636 VA_PASS9(LVLINIT_MAZEGRID,HWALL,0,0,
2637 0,0,0,0, SPO_INITLEVEL));
2638 } else {
2639 long bg = what_map_char((char) yyvsp[0].i);
2640 add_opvars(splev, "iiiiiiiio",
2641 VA_PASS9(LVLINIT_SOLIDFILL, bg, 0,0,
2642 0,0,0,0, SPO_INITLEVEL));
2644 add_opvars(splev, "io",
2645 VA_PASS2(MAZELEVEL, SPO_LEVEL_FLAGS));
2646 max_x_map = COLNO-1;
2647 max_y_map = ROWNO;
2648 yyval.map = yyvsp[-2].map;
2650 break;
2651 case 8:
2653 yyval.i = -1;
2655 break;
2656 case 9:
2658 yyval.i = what_map_char((char) yyvsp[0].i);
2660 break;
2661 case 10:
2663 long filling = yyvsp[0].terr.ter;
2664 if (filling == INVALID_TYPE || filling >= MAX_TYPE)
2665 lc_error("INIT_MAP: Invalid fill char type.");
2666 add_opvars(splev, "iiiiiiiio",
2667 LVLINIT_SOLIDFILL,filling,0,(long)yyvsp[0].terr.lit, 0,0,0,0, SPO_INITLEVEL);
2668 max_x_map = COLNO-1;
2669 max_y_map = ROWNO;
2671 break;
2672 case 11:
2674 long filling = what_map_char((char) yyvsp[0].i);
2675 if (filling == INVALID_TYPE || filling >= MAX_TYPE)
2676 lc_error("INIT_MAP: Invalid fill char type.");
2677 add_opvars(splev, "iiiiiiiio",
2678 VA_PASS9(LVLINIT_MAZEGRID,filling,0,0,
2679 0,0,0,0, SPO_INITLEVEL));
2680 max_x_map = COLNO-1;
2681 max_y_map = ROWNO;
2683 break;
2684 case 12:
2686 add_opvars(splev, "iiiiiiiio",
2687 VA_PASS9(LVLINIT_ROGUE,0,0,0,
2688 0,0,0,0, SPO_INITLEVEL));
2690 break;
2691 case 13:
2693 long fg = what_map_char((char) yyvsp[-11].i);
2694 long bg = what_map_char((char) yyvsp[-9].i);
2695 long smoothed = yyvsp[-7].i;
2696 long joined = yyvsp[-5].i;
2697 long lit = yyvsp[-3].i;
2698 long walled = yyvsp[-1].i;
2699 long filling = yyvsp[0].i;
2700 if (fg == INVALID_TYPE || fg >= MAX_TYPE)
2701 lc_error("INIT_MAP: Invalid foreground type.");
2702 if (bg == INVALID_TYPE || bg >= MAX_TYPE)
2703 lc_error("INIT_MAP: Invalid background type.");
2704 if (joined && fg != CORR && fg != ROOM)
2705 lc_error("INIT_MAP: Invalid foreground type for joined map.");
2707 if (filling == INVALID_TYPE)
2708 lc_error("INIT_MAP: Invalid fill char type.");
2710 add_opvars(splev, "iiiiiiiio",
2711 VA_PASS9(LVLINIT_MINES,filling,walled,lit,
2712 joined,smoothed,bg,fg,
2713 SPO_INITLEVEL));
2714 max_x_map = COLNO-1;
2715 max_y_map = ROWNO;
2717 break;
2718 case 14:
2720 yyval.i = 0;
2722 break;
2723 case 15:
2725 yyval.i = yyvsp[0].i;
2727 break;
2728 case 16:
2730 add_opvars(splev, "o", VA_PASS1(SPO_COPY));
2731 yyval.i = 0;
2733 break;
2734 case 17:
2736 yyval.i = 1;
2738 break;
2739 case 18:
2741 yyval.i = -1;
2743 break;
2744 case 19:
2746 yyval.i = what_map_char((char) yyvsp[0].i);
2748 break;
2749 case 22:
2751 add_opvars(splev, "io", VA_PASS2(0, SPO_LEVEL_FLAGS));
2753 break;
2754 case 23:
2756 add_opvars(splev, "io", VA_PASS2(yyvsp[0].i, SPO_LEVEL_FLAGS));
2758 break;
2759 case 24:
2761 yyval.i = (yyvsp[-2].i | yyvsp[0].i);
2763 break;
2764 case 25:
2766 yyval.i = yyvsp[0].i;
2768 break;
2769 case 26:
2771 yyval.i = 0;
2773 break;
2774 case 27:
2776 yyval.i = 1 + yyvsp[0].i;
2778 break;
2779 case 28:
2781 yyval.i = yyvsp[-1].i;
2783 break;
2784 case 96:
2786 struct lc_vardefs *vd;
2787 if ((vd = vardef_defined(variable_definitions, yyvsp[0].map, 1))) {
2788 if (!(vd->var_type & SPOVAR_ARRAY))
2789 lc_error("Trying to shuffle non-array variable '%s'", yyvsp[0].map);
2790 } else lc_error("Trying to shuffle undefined variable '%s'", yyvsp[0].map);
2791 add_opvars(splev, "so", VA_PASS2(yyvsp[0].map, SPO_SHUFFLE_ARRAY));
2792 Free(yyvsp[0].map);
2794 break;
2795 case 97:
2797 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-2].map, SPOVAR_INT);
2798 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-2].map, SPO_VAR_INIT));
2799 Free(yyvsp[-2].map);
2801 break;
2802 case 98:
2804 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_SEL);
2805 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
2806 Free(yyvsp[-4].map);
2808 break;
2809 case 99:
2811 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-2].map, SPOVAR_STRING);
2812 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-2].map, SPO_VAR_INIT));
2813 Free(yyvsp[-2].map);
2815 break;
2816 case 100:
2818 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_MAPCHAR);
2819 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
2820 Free(yyvsp[-4].map);
2822 break;
2823 case 101:
2825 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_MONST);
2826 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
2827 Free(yyvsp[-4].map);
2829 break;
2830 case 102:
2832 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_OBJ);
2833 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
2834 Free(yyvsp[-4].map);
2836 break;
2837 case 103:
2839 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-2].map, SPOVAR_COORD);
2840 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-2].map, SPO_VAR_INIT));
2841 Free(yyvsp[-2].map);
2843 break;
2844 case 104:
2846 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-2].map, SPOVAR_REGION);
2847 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-2].map, SPO_VAR_INIT));
2848 Free(yyvsp[-2].map);
2850 break;
2851 case 105:
2853 long n_items = yyvsp[-1].i;
2854 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_INT|SPOVAR_ARRAY);
2855 add_opvars(splev, "iso",
2856 VA_PASS3(n_items, yyvsp[-4].map, SPO_VAR_INIT));
2857 Free(yyvsp[-4].map);
2859 break;
2860 case 106:
2862 long n_items = yyvsp[-1].i;
2863 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_COORD|SPOVAR_ARRAY);
2864 add_opvars(splev, "iso",
2865 VA_PASS3(n_items, yyvsp[-4].map, SPO_VAR_INIT));
2866 Free(yyvsp[-4].map);
2868 break;
2869 case 107:
2871 long n_items = yyvsp[-1].i;
2872 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_REGION|SPOVAR_ARRAY);
2873 add_opvars(splev, "iso",
2874 VA_PASS3(n_items, yyvsp[-4].map, SPO_VAR_INIT));
2875 Free(yyvsp[-4].map);
2877 break;
2878 case 108:
2880 long n_items = yyvsp[-1].i;
2881 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-6].map, SPOVAR_MAPCHAR|SPOVAR_ARRAY);
2882 add_opvars(splev, "iso",
2883 VA_PASS3(n_items, yyvsp[-6].map, SPO_VAR_INIT));
2884 Free(yyvsp[-6].map);
2886 break;
2887 case 109:
2889 long n_items = yyvsp[-1].i;
2890 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-6].map, SPOVAR_MONST|SPOVAR_ARRAY);
2891 add_opvars(splev, "iso",
2892 VA_PASS3(n_items, yyvsp[-6].map, SPO_VAR_INIT));
2893 Free(yyvsp[-6].map);
2895 break;
2896 case 110:
2898 long n_items = yyvsp[-1].i;
2899 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-6].map, SPOVAR_OBJ|SPOVAR_ARRAY);
2900 add_opvars(splev, "iso",
2901 VA_PASS3(n_items, yyvsp[-6].map, SPO_VAR_INIT));
2902 Free(yyvsp[-6].map);
2904 break;
2905 case 111:
2907 long n_items = yyvsp[-1].i;
2908 variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_STRING|SPOVAR_ARRAY);
2909 add_opvars(splev, "iso",
2910 VA_PASS3(n_items, yyvsp[-4].map, SPO_VAR_INIT));
2911 Free(yyvsp[-4].map);
2913 break;
2914 case 112:
2916 add_opvars(splev, "O", VA_PASS1(yyvsp[0].i));
2917 yyval.i = 1;
2919 break;
2920 case 113:
2922 add_opvars(splev, "O", VA_PASS1(yyvsp[0].i));
2923 yyval.i = 1 + yyvsp[-2].i;
2925 break;
2926 case 114:
2928 add_opvars(splev, "M", VA_PASS1(yyvsp[0].i));
2929 yyval.i = 1;
2931 break;
2932 case 115:
2934 add_opvars(splev, "M", VA_PASS1(yyvsp[0].i));
2935 yyval.i = 1 + yyvsp[-2].i;
2937 break;
2938 case 116:
2940 add_opvars(splev, "m", VA_PASS1(yyvsp[0].i));
2941 yyval.i = 1;
2943 break;
2944 case 117:
2946 add_opvars(splev, "m", VA_PASS1(yyvsp[0].i));
2947 yyval.i = 1 + yyvsp[-2].i;
2949 break;
2950 case 118:
2952 yyval.i = 1;
2954 break;
2955 case 119:
2957 yyval.i = 1 + yyvsp[-2].i;
2959 break;
2960 case 120:
2962 add_opvars(splev, "c", VA_PASS1(yyvsp[0].i));
2963 yyval.i = 1;
2965 break;
2966 case 121:
2968 add_opvars(splev, "c", VA_PASS1(yyvsp[0].i));
2969 yyval.i = 1 + yyvsp[-2].i;
2971 break;
2972 case 122:
2974 yyval.i = 1;
2976 break;
2977 case 123:
2979 yyval.i = 1 + yyvsp[-2].i;
2981 break;
2982 case 124:
2984 yyval.i = 1;
2986 break;
2987 case 125:
2989 yyval.i = 1 + yyvsp[-2].i;
2991 break;
2992 case 126:
2994 struct lc_funcdefs *funcdef;
2996 if (in_function_definition)
2997 lc_error("Recursively defined functions not allowed (function %s).", yyvsp[-1].map);
2999 in_function_definition++;
3001 if (funcdef_defined(function_definitions, yyvsp[-1].map, 1))
3002 lc_error("Function '%s' already defined once.", yyvsp[-1].map);
3004 funcdef = funcdef_new(-1, yyvsp[-1].map);
3005 funcdef->next = function_definitions;
3006 function_definitions = funcdef;
3007 function_splev_backup = splev;
3008 splev = &(funcdef->code);
3009 Free(yyvsp[-1].map);
3010 curr_function = funcdef;
3011 function_tmp_var_defs = variable_definitions;
3012 variable_definitions = NULL;
3014 break;
3015 case 127:
3017 /* nothing */
3019 break;
3020 case 128:
3022 add_opvars(splev, "io", VA_PASS2(0, SPO_RETURN));
3023 splev = function_splev_backup;
3024 in_function_definition--;
3025 curr_function = NULL;
3026 vardef_free_all(variable_definitions);
3027 variable_definitions = function_tmp_var_defs;
3029 break;
3030 case 129:
3032 struct lc_funcdefs *tmpfunc;
3033 tmpfunc = funcdef_defined(function_definitions, yyvsp[-3].map, 1);
3034 if (tmpfunc) {
3035 long l;
3036 long nparams = strlen( yyvsp[-1].map );
3037 char *fparamstr = funcdef_paramtypes(tmpfunc);
3038 if (strcmp(yyvsp[-1].map, fparamstr)) {
3039 char *tmps = strdup(decode_parm_str(fparamstr));
3040 lc_error("Function '%s' requires params '%s', got '%s' instead.", yyvsp[-3].map, tmps, decode_parm_str(yyvsp[-1].map));
3041 Free(tmps);
3043 Free(fparamstr);
3044 Free(yyvsp[-1].map);
3045 if (!(tmpfunc->n_called)) {
3046 /* we haven't called the function yet, so insert it in the code */
3047 struct opvar *jmp = New(struct opvar);
3048 set_opvar_int(jmp, splev->n_opcodes+1);
3049 add_opcode(splev, SPO_PUSH, jmp);
3050 add_opcode(splev, SPO_JMP, NULL); /* we must jump past it first, then CALL it, due to RETURN. */
3052 tmpfunc->addr = splev->n_opcodes;
3054 { /* init function parameter variables */
3055 struct lc_funcdefs_parm *tfp = tmpfunc->params;
3056 while (tfp) {
3057 add_opvars(splev, "iso",
3058 VA_PASS3(0, tfp->name,
3059 SPO_VAR_INIT));
3060 tfp = tfp->next;
3064 splev_add_from(splev, &(tmpfunc->code));
3065 set_opvar_int(jmp, splev->n_opcodes - jmp->vardata.l);
3067 l = tmpfunc->addr - splev->n_opcodes - 2;
3068 add_opvars(splev, "iio",
3069 VA_PASS3(nparams, l, SPO_CALL));
3070 tmpfunc->n_called++;
3071 } else {
3072 lc_error("Function '%s' not defined.", yyvsp[-3].map);
3074 Free(yyvsp[-3].map);
3076 break;
3077 case 130:
3079 add_opcode(splev, SPO_EXIT, NULL);
3081 break;
3082 case 131:
3084 yyval.i = 100;
3086 break;
3087 case 132:
3089 yyval.i = yyvsp[0].i;
3091 break;
3092 case 133:
3094 /* val > rn2(100) */
3095 add_opvars(splev, "iio",
3096 VA_PASS3((long)yyvsp[0].i, 100, SPO_RN2));
3097 yyval.i = SPO_JG;
3099 break;
3100 case 134:
3102 yyval.i = yyvsp[-2].i;
3104 break;
3105 case 135:
3107 /* boolean, explicit foo != 0 */
3108 add_opvars(splev, "i", VA_PASS1(0));
3109 yyval.i = SPO_JNE;
3111 break;
3112 case 136:
3114 is_inconstant_number = 0;
3116 break;
3117 case 137:
3119 struct opvar *chkjmp;
3120 if (in_switch_statement > 0)
3121 lc_error("Cannot nest switch-statements.");
3123 in_switch_statement++;
3125 n_switch_case_list = 0;
3126 switch_default_case = NULL;
3128 if (!is_inconstant_number)
3129 add_opvars(splev, "o", VA_PASS1(SPO_RN2));
3130 is_inconstant_number = 0;
3132 chkjmp = New(struct opvar);
3133 set_opvar_int(chkjmp, splev->n_opcodes+1);
3134 switch_check_jump = chkjmp;
3135 add_opcode(splev, SPO_PUSH, chkjmp);
3136 add_opcode(splev, SPO_JMP, NULL);
3137 break_stmt_start();
3139 break;
3140 case 138:
3142 struct opvar *endjump = New(struct opvar);
3143 int i;
3145 set_opvar_int(endjump, splev->n_opcodes+1);
3147 add_opcode(splev, SPO_PUSH, endjump);
3148 add_opcode(splev, SPO_JMP, NULL);
3150 set_opvar_int(switch_check_jump,
3151 splev->n_opcodes - switch_check_jump->vardata.l);
3153 for (i = 0; i < n_switch_case_list; i++) {
3154 add_opvars(splev, "oio",
3155 VA_PASS3(SPO_COPY,
3156 switch_case_value[i], SPO_CMP));
3157 set_opvar_int(switch_case_list[i],
3158 switch_case_list[i]->vardata.l - splev->n_opcodes-1);
3159 add_opcode(splev, SPO_PUSH, switch_case_list[i]);
3160 add_opcode(splev, SPO_JE, NULL);
3163 if (switch_default_case) {
3164 set_opvar_int(switch_default_case,
3165 switch_default_case->vardata.l - splev->n_opcodes-1);
3166 add_opcode(splev, SPO_PUSH, switch_default_case);
3167 add_opcode(splev, SPO_JMP, NULL);
3170 set_opvar_int(endjump, splev->n_opcodes - endjump->vardata.l);
3172 break_stmt_end(splev);
3174 add_opcode(splev, SPO_POP, NULL); /* get rid of the value in stack */
3175 in_switch_statement--;
3179 break;
3180 case 141:
3182 if (n_switch_case_list < MAX_SWITCH_CASES) {
3183 struct opvar *tmppush = New(struct opvar);
3184 set_opvar_int(tmppush, splev->n_opcodes);
3185 switch_case_value[n_switch_case_list] = yyvsp[-1].i;
3186 switch_case_list[n_switch_case_list++] = tmppush;
3187 } else lc_error("Too many cases in a switch.");
3189 break;
3190 case 142:
3193 break;
3194 case 143:
3196 struct opvar *tmppush = New(struct opvar);
3198 if (switch_default_case)
3199 lc_error("Switch default case already used.");
3201 set_opvar_int(tmppush, splev->n_opcodes);
3202 switch_default_case = tmppush;
3204 break;
3205 case 144:
3208 break;
3209 case 145:
3211 if (!allow_break_statements)
3212 lc_error("Cannot use BREAK outside a statement block.");
3213 else {
3214 break_stmt_new(splev, splev->n_opcodes);
3217 break;
3218 case 148:
3220 char buf[256], buf2[256];
3222 if (n_forloops >= MAX_NESTED_IFS) {
3223 lc_error("FOR: Too deeply nested loops.");
3224 n_forloops = MAX_NESTED_IFS - 1;
3227 /* first, define a variable for the for-loop end value */
3228 Sprintf(buf, "%s end", yyvsp[-4].map);
3229 /* the value of which is already in stack (the 2nd math_expr) */
3230 add_opvars(splev, "iso", VA_PASS3(0, buf, SPO_VAR_INIT));
3232 variable_definitions = add_vardef_type(variable_definitions,
3233 yyvsp[-4].map, SPOVAR_INT);
3234 /* define the for-loop variable. value is in stack (1st math_expr) */
3235 add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
3237 /* calculate value for the loop "step" variable */
3238 Sprintf(buf2, "%s step", yyvsp[-4].map);
3239 /* end - start */
3240 add_opvars(splev, "vvo",
3241 VA_PASS3(buf, yyvsp[-4].map, SPO_MATH_SUB));
3242 /* sign of that */
3243 add_opvars(splev, "o", VA_PASS1(SPO_MATH_SIGN));
3244 /* save the sign into the step var */
3245 add_opvars(splev, "iso",
3246 VA_PASS3(0, buf2, SPO_VAR_INIT));
3248 forloop_list[n_forloops].varname = strdup(yyvsp[-4].map);
3249 forloop_list[n_forloops].jmp_point = splev->n_opcodes;
3251 n_forloops++;
3252 Free(yyvsp[-4].map);
3254 break;
3255 case 149:
3257 /* nothing */
3258 break_stmt_start();
3260 break;
3261 case 150:
3263 char buf[256], buf2[256];
3265 n_forloops--;
3266 Sprintf(buf, "%s step", forloop_list[n_forloops].varname);
3267 Sprintf(buf2, "%s end", forloop_list[n_forloops].varname);
3268 /* compare for-loop var to end value */
3269 add_opvars(splev, "vvo",
3270 VA_PASS3(forloop_list[n_forloops].varname,
3271 buf2, SPO_CMP));
3272 /* var + step */
3273 add_opvars(splev, "vvo",
3274 VA_PASS3(buf, forloop_list[n_forloops].varname,
3275 SPO_MATH_ADD));
3276 /* for-loop var = (for-loop var + step) */
3277 add_opvars(splev, "iso",
3278 VA_PASS3(0, forloop_list[n_forloops].varname,
3279 SPO_VAR_INIT));
3280 /* jump back if compared values were not equal */
3281 add_opvars(splev, "io",
3282 VA_PASS2(
3283 forloop_list[n_forloops].jmp_point - splev->n_opcodes - 1,
3284 SPO_JNE));
3285 Free(forloop_list[n_forloops].varname);
3286 break_stmt_end(splev);
3288 break;
3289 case 151:
3291 struct opvar *tmppush = New(struct opvar);
3293 if (n_if_list >= MAX_NESTED_IFS) {
3294 lc_error("LOOP: Too deeply nested conditionals.");
3295 n_if_list = MAX_NESTED_IFS - 1;
3297 set_opvar_int(tmppush, splev->n_opcodes);
3298 if_list[n_if_list++] = tmppush;
3300 add_opvars(splev, "o", VA_PASS1(SPO_DEC));
3301 break_stmt_start();
3303 break;
3304 case 152:
3306 struct opvar *tmppush;
3308 add_opvars(splev, "oio", VA_PASS3(SPO_COPY, 0, SPO_CMP));
3310 tmppush = (struct opvar *) if_list[--n_if_list];
3311 set_opvar_int(tmppush, tmppush->vardata.l - splev->n_opcodes-1);
3312 add_opcode(splev, SPO_PUSH, tmppush);
3313 add_opcode(splev, SPO_JG, NULL);
3314 add_opcode(splev, SPO_POP, NULL); /* get rid of the count value in stack */
3315 break_stmt_end(splev);
3317 break;
3318 case 153:
3320 struct opvar *tmppush2 = New(struct opvar);
3322 if (n_if_list >= MAX_NESTED_IFS) {
3323 lc_error("IF: Too deeply nested conditionals.");
3324 n_if_list = MAX_NESTED_IFS - 1;
3327 add_opcode(splev, SPO_CMP, NULL);
3329 set_opvar_int(tmppush2, splev->n_opcodes+1);
3331 if_list[n_if_list++] = tmppush2;
3333 add_opcode(splev, SPO_PUSH, tmppush2);
3335 add_opcode(splev, reverse_jmp_opcode( yyvsp[-1].i ), NULL);
3338 break;
3339 case 154:
3341 if (n_if_list > 0) {
3342 struct opvar *tmppush;
3343 tmppush = (struct opvar *) if_list[--n_if_list];
3344 set_opvar_int(tmppush, splev->n_opcodes - tmppush->vardata.l);
3345 } else lc_error("IF: Huh?! No start address?");
3347 break;
3348 case 155:
3350 struct opvar *tmppush2 = New(struct opvar);
3352 if (n_if_list >= MAX_NESTED_IFS) {
3353 lc_error("IF: Too deeply nested conditionals.");
3354 n_if_list = MAX_NESTED_IFS - 1;
3357 add_opcode(splev, SPO_CMP, NULL);
3359 set_opvar_int(tmppush2, splev->n_opcodes+1);
3361 if_list[n_if_list++] = tmppush2;
3363 add_opcode(splev, SPO_PUSH, tmppush2);
3365 add_opcode(splev, reverse_jmp_opcode( yyvsp[0].i ), NULL);
3368 break;
3369 case 156:
3371 /* do nothing */
3373 break;
3374 case 157:
3376 if (n_if_list > 0) {
3377 struct opvar *tmppush;
3378 tmppush = (struct opvar *) if_list[--n_if_list];
3379 set_opvar_int(tmppush, splev->n_opcodes - tmppush->vardata.l);
3380 } else lc_error("IF: Huh?! No start address?");
3382 break;
3383 case 158:
3385 if (n_if_list > 0) {
3386 struct opvar *tmppush = New(struct opvar);
3387 struct opvar *tmppush2;
3389 set_opvar_int(tmppush, splev->n_opcodes+1);
3390 add_opcode(splev, SPO_PUSH, tmppush);
3392 add_opcode(splev, SPO_JMP, NULL);
3394 tmppush2 = (struct opvar *) if_list[--n_if_list];
3396 set_opvar_int(tmppush2, splev->n_opcodes - tmppush2->vardata.l);
3397 if_list[n_if_list++] = tmppush;
3398 } else lc_error("IF: Huh?! No else-part address?");
3400 break;
3401 case 159:
3403 if (n_if_list > 0) {
3404 struct opvar *tmppush;
3405 tmppush = (struct opvar *) if_list[--n_if_list];
3406 set_opvar_int(tmppush, splev->n_opcodes - tmppush->vardata.l);
3407 } else lc_error("IF: Huh?! No end address?");
3409 break;
3410 case 160:
3412 add_opvars(splev, "o", VA_PASS1(SPO_MESSAGE));
3414 break;
3415 case 161:
3417 add_opvars(splev, "iiiiiio",
3418 VA_PASS7(-1, 0, -1, -1, -1, -1, SPO_CORRIDOR));
3420 break;
3421 case 162:
3423 add_opvars(splev, "iiiiiio",
3424 VA_PASS7(-1, yyvsp[0].i, -1, -1, -1, -1, SPO_CORRIDOR));
3426 break;
3427 case 163:
3429 add_opvars(splev, "iiiiiio",
3430 VA_PASS7(-1, -1, -1, -1, -1, -1, SPO_CORRIDOR));
3432 break;
3433 case 164:
3435 add_opvars(splev, "iiiiiio",
3436 VA_PASS7(yyvsp[-2].corpos.room, yyvsp[-2].corpos.door, yyvsp[-2].corpos.wall,
3437 yyvsp[0].corpos.room, yyvsp[0].corpos.door, yyvsp[0].corpos.wall,
3438 SPO_CORRIDOR));
3440 break;
3441 case 165:
3443 add_opvars(splev, "iiiiiio",
3444 VA_PASS7(yyvsp[-2].corpos.room, yyvsp[-2].corpos.door, yyvsp[-2].corpos.wall,
3445 -1, -1, (long)yyvsp[0].i,
3446 SPO_CORRIDOR));
3448 break;
3449 case 166:
3451 yyval.corpos.room = yyvsp[-5].i;
3452 yyval.corpos.wall = yyvsp[-3].i;
3453 yyval.corpos.door = yyvsp[-1].i;
3455 break;
3456 case 167:
3458 if ((yyvsp[-2].i < 100) && (yyvsp[-3].i == OROOM))
3459 lc_error("Only typed rooms can have a chance.");
3460 else {
3461 add_opvars(splev, "iii",
3462 VA_PASS3((long)yyvsp[-3].i, (long)yyvsp[-2].i, (long)yyvsp[0].i));
3465 break;
3466 case 168:
3468 long rflags = yyvsp[0].i;
3470 if (rflags == -1) rflags = (1 << 0);
3471 add_opvars(splev, "iiiiiiio",
3472 VA_PASS8(rflags, ERR, ERR,
3473 yyvsp[-3].crd.x, yyvsp[-3].crd.y, yyvsp[-1].sze.width, yyvsp[-1].sze.height,
3474 SPO_SUBROOM));
3475 break_stmt_start();
3477 break;
3478 case 169:
3480 break_stmt_end(splev);
3481 add_opcode(splev, SPO_ENDROOM, NULL);
3483 break;
3484 case 170:
3486 long rflags = yyvsp[-2].i;
3488 if (rflags == -1) rflags = (1 << 0);
3489 add_opvars(splev, "iiiiiiio",
3490 VA_PASS8(rflags,
3491 yyvsp[-3].crd.x, yyvsp[-3].crd.y, yyvsp[-5].crd.x, yyvsp[-5].crd.y,
3492 yyvsp[-1].sze.width, yyvsp[-1].sze.height, SPO_ROOM));
3493 break_stmt_start();
3495 break;
3496 case 171:
3498 break_stmt_end(splev);
3499 add_opcode(splev, SPO_ENDROOM, NULL);
3501 break;
3502 case 172:
3504 yyval.i = 1;
3506 break;
3507 case 173:
3509 yyval.i = yyvsp[0].i;
3511 break;
3512 case 174:
3514 if ( yyvsp[-3].i < 1 || yyvsp[-3].i > 5 ||
3515 yyvsp[-1].i < 1 || yyvsp[-1].i > 5 ) {
3516 lc_error("Room positions should be between 1-5: (%li,%li)!", yyvsp[-3].i, yyvsp[-1].i);
3517 } else {
3518 yyval.crd.x = yyvsp[-3].i;
3519 yyval.crd.y = yyvsp[-1].i;
3522 break;
3523 case 175:
3525 yyval.crd.x = yyval.crd.y = ERR;
3527 break;
3528 case 176:
3530 if ( yyvsp[-3].i < 0 || yyvsp[-1].i < 0) {
3531 lc_error("Invalid subroom position (%li,%li)!", yyvsp[-3].i, yyvsp[-1].i);
3532 } else {
3533 yyval.crd.x = yyvsp[-3].i;
3534 yyval.crd.y = yyvsp[-1].i;
3537 break;
3538 case 177:
3540 yyval.crd.x = yyval.crd.y = ERR;
3542 break;
3543 case 178:
3545 yyval.crd.x = yyvsp[-3].i;
3546 yyval.crd.y = yyvsp[-1].i;
3548 break;
3549 case 179:
3551 yyval.crd.x = yyval.crd.y = ERR;
3553 break;
3554 case 180:
3556 yyval.sze.width = yyvsp[-3].i;
3557 yyval.sze.height = yyvsp[-1].i;
3559 break;
3560 case 181:
3562 yyval.sze.height = yyval.sze.width = ERR;
3564 break;
3565 case 182:
3567 /* ERR means random here */
3568 if (yyvsp[-2].i == ERR && yyvsp[0].i != ERR) {
3569 lc_error("If the door wall is random, so must be its pos!");
3570 } else {
3571 add_opvars(splev, "iiiio",
3572 VA_PASS5((long)yyvsp[0].i, (long)yyvsp[-4].i, (long)yyvsp[-6].i,
3573 (long)yyvsp[-2].i, SPO_ROOM_DOOR));
3576 break;
3577 case 183:
3579 add_opvars(splev, "io", VA_PASS2((long)yyvsp[-2].i, SPO_DOOR));
3581 break;
3582 case 188:
3584 yyval.i = yyvsp[0].i;
3586 break;
3587 case 189:
3589 yyval.i = (yyvsp[-2].i | yyvsp[0].i);
3591 break;
3592 case 192:
3594 add_opvars(splev, "ciisiio",
3595 VA_PASS7(0, 0, 1, (char *)0, 0, 0, SPO_MAP));
3596 max_x_map = COLNO-1;
3597 max_y_map = ROWNO;
3599 break;
3600 case 193:
3602 add_opvars(splev, "cii",
3603 VA_PASS3(SP_COORD_PACK((yyvsp[-4].i),(yyvsp[-2].i)),
3604 1, (long)yyvsp[-1].i));
3605 scan_map(yyvsp[0].map, splev);
3606 Free(yyvsp[0].map);
3608 break;
3609 case 194:
3611 add_opvars(splev, "ii", VA_PASS2(2, (long)yyvsp[-1].i));
3612 scan_map(yyvsp[0].map, splev);
3613 Free(yyvsp[0].map);
3615 break;
3616 case 199:
3618 add_opvars(splev, "io", VA_PASS2(0, SPO_MONSTER));
3620 break;
3621 case 200:
3623 add_opvars(splev, "io", VA_PASS2(1, SPO_MONSTER));
3624 in_container_obj++;
3625 break_stmt_start();
3627 break;
3628 case 201:
3630 break_stmt_end(splev);
3631 in_container_obj--;
3632 add_opvars(splev, "o", VA_PASS1(SPO_END_MONINVENT));
3634 break;
3635 case 202:
3637 /* nothing */
3639 break;
3640 case 203:
3642 struct opvar *stopit = New(struct opvar);
3643 set_opvar_int(stopit, SP_M_V_END);
3644 add_opcode(splev, SPO_PUSH, stopit);
3645 yyval.i = 0x0000;
3647 break;
3648 case 204:
3650 if (( yyvsp[-2].i & yyvsp[0].i ))
3651 lc_error("MONSTER extra info defined twice.");
3652 yyval.i = ( yyvsp[-2].i | yyvsp[0].i );
3654 break;
3655 case 205:
3657 add_opvars(splev, "i", VA_PASS1(SP_M_V_NAME));
3658 yyval.i = 0x0001;
3660 break;
3661 case 206:
3663 add_opvars(splev, "ii",
3664 VA_PASS2((long)yyvsp[0].i, SP_M_V_PEACEFUL));
3665 yyval.i = 0x0002;
3667 break;
3668 case 207:
3670 add_opvars(splev, "ii",
3671 VA_PASS2((long)yyvsp[0].i, SP_M_V_ASLEEP));
3672 yyval.i = 0x0004;
3674 break;
3675 case 208:
3677 add_opvars(splev, "ii",
3678 VA_PASS2((long)yyvsp[0].i, SP_M_V_ALIGN));
3679 yyval.i = 0x0008;
3681 break;
3682 case 209:
3684 add_opvars(splev, "ii",
3685 VA_PASS2((long)yyvsp[-1].i, SP_M_V_APPEAR));
3686 yyval.i = 0x0010;
3688 break;
3689 case 210:
3691 add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_FEMALE));
3692 yyval.i = 0x0020;
3694 break;
3695 case 211:
3697 add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_INVIS));
3698 yyval.i = 0x0040;
3700 break;
3701 case 212:
3703 add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_CANCELLED));
3704 yyval.i = 0x0080;
3706 break;
3707 case 213:
3709 add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_REVIVED));
3710 yyval.i = 0x0100;
3712 break;
3713 case 214:
3715 add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_AVENGE));
3716 yyval.i = 0x0200;
3718 break;
3719 case 215:
3721 add_opvars(splev, "i", VA_PASS1(SP_M_V_FLEEING));
3722 yyval.i = 0x0400;
3724 break;
3725 case 216:
3727 add_opvars(splev, "i", VA_PASS1(SP_M_V_BLINDED));
3728 yyval.i = 0x0800;
3730 break;
3731 case 217:
3733 add_opvars(splev, "i", VA_PASS1(SP_M_V_PARALYZED));
3734 yyval.i = 0x1000;
3736 break;
3737 case 218:
3739 add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_STUNNED));
3740 yyval.i = 0x2000;
3742 break;
3743 case 219:
3745 add_opvars(splev, "ii", VA_PASS2(1, SP_M_V_CONFUSED));
3746 yyval.i = 0x4000;
3748 break;
3749 case 220:
3751 add_opvars(splev, "ii",
3752 VA_PASS2((long)yyvsp[0].i, SP_M_V_SEENTRAPS));
3753 yyval.i = 0x8000;
3755 break;
3756 case 221:
3758 int token = get_trap_type(yyvsp[0].map);
3759 if (token == ERR || token == 0)
3760 lc_error("Unknown trap type '%s'!", yyvsp[0].map);
3761 Free(yyvsp[0].map);
3762 yyval.i = (1L << (token - 1));
3764 break;
3765 case 222:
3767 yyval.i = (long) ~0;
3769 break;
3770 case 223:
3772 int token = get_trap_type(yyvsp[-2].map);
3773 if (token == ERR || token == 0)
3774 lc_error("Unknown trap type '%s'!", yyvsp[-2].map);
3776 if ((1L << (token - 1)) & yyvsp[0].i)
3777 lc_error("Monster seen_traps, trap '%s' listed twice.", yyvsp[-2].map);
3778 Free(yyvsp[-2].map);
3779 yyval.i = ((1L << (token - 1)) | yyvsp[0].i);
3781 break;
3782 case 224:
3784 long cnt = 0;
3785 if (in_container_obj) cnt |= SP_OBJ_CONTENT;
3786 add_opvars(splev, "io", VA_PASS2(cnt, SPO_OBJECT));
3788 break;
3789 case 225:
3791 long cnt = SP_OBJ_CONTAINER;
3792 if (in_container_obj) cnt |= SP_OBJ_CONTENT;
3793 add_opvars(splev, "io", VA_PASS2(cnt, SPO_OBJECT));
3794 in_container_obj++;
3795 break_stmt_start();
3797 break;
3798 case 226:
3800 break_stmt_end(splev);
3801 in_container_obj--;
3802 add_opcode(splev, SPO_POP_CONTAINER, NULL);
3804 break;
3805 case 227:
3807 if (( yyvsp[0].i & 0x4000) && in_container_obj)
3808 lc_error("Object cannot have a coord when contained.");
3809 else if (!( yyvsp[0].i & 0x4000) && !in_container_obj)
3810 lc_error("Object needs a coord when not contained.");
3812 break;
3813 case 228:
3815 struct opvar *stopit = New(struct opvar);
3816 set_opvar_int(stopit, SP_O_V_END);
3817 add_opcode(splev, SPO_PUSH, stopit);
3818 yyval.i = 0x00;
3820 break;
3821 case 229:
3823 if (( yyvsp[-2].i & yyvsp[0].i ))
3824 lc_error("OBJECT extra info '%s' defined twice.", curr_token);
3825 yyval.i = ( yyvsp[-2].i | yyvsp[0].i );
3827 break;
3828 case 230:
3830 add_opvars(splev, "ii",
3831 VA_PASS2((long)yyvsp[0].i, SP_O_V_CURSE));
3832 yyval.i = 0x0001;
3834 break;
3835 case 231:
3837 add_opvars(splev, "i", VA_PASS1(SP_O_V_CORPSENM));
3838 yyval.i = 0x0002;
3840 break;
3841 case 232:
3843 add_opvars(splev, "i", VA_PASS1(SP_O_V_SPE));
3844 yyval.i = 0x0004;
3846 break;
3847 case 233:
3849 add_opvars(splev, "i", VA_PASS1(SP_O_V_NAME));
3850 yyval.i = 0x0008;
3852 break;
3853 case 234:
3855 add_opvars(splev, "i", VA_PASS1(SP_O_V_QUAN));
3856 yyval.i = 0x0010;
3858 break;
3859 case 235:
3861 add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_BURIED));
3862 yyval.i = 0x0020;
3864 break;
3865 case 236:
3867 add_opvars(splev, "ii", VA_PASS2((long)yyvsp[0].i, SP_O_V_LIT));
3868 yyval.i = 0x0040;
3870 break;
3871 case 237:
3873 add_opvars(splev, "i", VA_PASS1(SP_O_V_ERODED));
3874 yyval.i = 0x0080;
3876 break;
3877 case 238:
3879 add_opvars(splev, "ii", VA_PASS2(-1, SP_O_V_ERODED));
3880 yyval.i = 0x0080;
3882 break;
3883 case 239:
3885 if (yyvsp[0].i == D_LOCKED) {
3886 add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_LOCKED));
3887 yyval.i = 0x0100;
3888 } else if (yyvsp[0].i == D_BROKEN) {
3889 add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_BROKEN));
3890 yyval.i = 0x0200;
3891 } else
3892 lc_error("DOOR state can only be locked or broken.");
3894 break;
3895 case 240:
3897 add_opvars(splev, "ii", VA_PASS2(yyvsp[0].i, SP_O_V_TRAPPED));
3898 yyval.i = 0x0400;
3900 break;
3901 case 241:
3903 add_opvars(splev, "i", VA_PASS1(SP_O_V_RECHARGED));
3904 yyval.i = 0x0800;
3906 break;
3907 case 242:
3909 add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_INVIS));
3910 yyval.i = 0x1000;
3912 break;
3913 case 243:
3915 add_opvars(splev, "ii", VA_PASS2(1, SP_O_V_GREASED));
3916 yyval.i = 0x2000;
3918 break;
3919 case 244:
3921 add_opvars(splev, "i", VA_PASS1(SP_O_V_COORD));
3922 yyval.i = 0x4000;
3924 break;
3925 case 245:
3927 add_opvars(splev, "io", VA_PASS2((long)yyvsp[-2].i, SPO_TRAP));
3929 break;
3930 case 246:
3932 long dir, state = 0;
3934 /* convert dir from a DIRECTION to a DB_DIR */
3935 dir = yyvsp[-2].i;
3936 switch (dir) {
3937 case W_NORTH: dir = DB_NORTH; break;
3938 case W_SOUTH: dir = DB_SOUTH; break;
3939 case W_EAST: dir = DB_EAST; break;
3940 case W_WEST: dir = DB_WEST; break;
3941 default:
3942 lc_error("Invalid drawbridge direction.");
3943 break;
3946 if ( yyvsp[0].i == D_ISOPEN )
3947 state = 1;
3948 else if ( yyvsp[0].i == D_CLOSED )
3949 state = 0;
3950 else if ( yyvsp[0].i == -1 )
3951 state = -1;
3952 else
3953 lc_error("A drawbridge can only be open, closed or random!");
3954 add_opvars(splev, "iio",
3955 VA_PASS3(state, dir, SPO_DRAWBRIDGE));
3957 break;
3958 case 247:
3960 add_opvars(splev, "iiio",
3961 VA_PASS4((long)yyvsp[0].i, 1, 0, SPO_MAZEWALK));
3963 break;
3964 case 248:
3966 add_opvars(splev, "iiio",
3967 VA_PASS4((long)yyvsp[-3].i, (long)yyvsp[-1].i,
3968 (long)yyvsp[0].i, SPO_MAZEWALK));
3970 break;
3971 case 249:
3973 add_opvars(splev, "rio",
3974 VA_PASS3(SP_REGION_PACK(-1,-1,-1,-1),
3975 0, SPO_WALLIFY));
3977 break;
3978 case 250:
3980 add_opvars(splev, "io", VA_PASS2(1, SPO_WALLIFY));
3982 break;
3983 case 251:
3985 add_opvars(splev, "io",
3986 VA_PASS2((long)yyvsp[0].i, SPO_LADDER));
3988 break;
3989 case 252:
3991 add_opvars(splev, "io",
3992 VA_PASS2((long)yyvsp[0].i, SPO_STAIR));
3994 break;
3995 case 253:
3997 add_opvars(splev, "iiiii iiiii iiso",
3998 VA_PASS14(yyvsp[-4].lregn.x1, yyvsp[-4].lregn.y1, yyvsp[-4].lregn.x2, yyvsp[-4].lregn.y2, yyvsp[-4].lregn.area,
3999 yyvsp[-2].lregn.x1, yyvsp[-2].lregn.y1, yyvsp[-2].lregn.x2, yyvsp[-2].lregn.y2, yyvsp[-2].lregn.area,
4000 (long) ((yyvsp[0].i) ? LR_UPSTAIR : LR_DOWNSTAIR),
4001 0, (char *) 0, SPO_LEVREGION));
4003 break;
4004 case 254:
4006 add_opvars(splev, "iiiii iiiii iiso",
4007 VA_PASS14(yyvsp[-4].lregn.x1, yyvsp[-4].lregn.y1, yyvsp[-4].lregn.x2, yyvsp[-4].lregn.y2, yyvsp[-4].lregn.area,
4008 yyvsp[-2].lregn.x1, yyvsp[-2].lregn.y1, yyvsp[-2].lregn.x2, yyvsp[-2].lregn.y2, yyvsp[-2].lregn.area,
4009 LR_PORTAL, 0, yyvsp[0].map, SPO_LEVREGION));
4010 Free(yyvsp[0].map);
4012 break;
4013 case 255:
4015 long rtyp = 0;
4016 switch(yyvsp[0].i) {
4017 case -1: rtyp = LR_TELE; break;
4018 case 0: rtyp = LR_DOWNTELE; break;
4019 case 1: rtyp = LR_UPTELE; break;
4021 add_opvars(splev, "iiiii iiiii iiso",
4022 VA_PASS14(yyvsp[-3].lregn.x1, yyvsp[-3].lregn.y1, yyvsp[-3].lregn.x2, yyvsp[-3].lregn.y2, yyvsp[-3].lregn.area,
4023 yyvsp[-1].lregn.x1, yyvsp[-1].lregn.y1, yyvsp[-1].lregn.x2, yyvsp[-1].lregn.y2, yyvsp[-1].lregn.area,
4024 rtyp, 0, (char *)0, SPO_LEVREGION));
4026 break;
4027 case 256:
4029 add_opvars(splev, "iiiii iiiii iiso",
4030 VA_PASS14(yyvsp[-2].lregn.x1, yyvsp[-2].lregn.y1, yyvsp[-2].lregn.x2, yyvsp[-2].lregn.y2, yyvsp[-2].lregn.area,
4031 yyvsp[0].lregn.x1, yyvsp[0].lregn.y1, yyvsp[0].lregn.x2, yyvsp[0].lregn.y2, yyvsp[0].lregn.area,
4032 (long) LR_BRANCH, 0,
4033 (char *) 0, SPO_LEVREGION));
4035 break;
4036 case 257:
4038 yyval.i = -1;
4040 break;
4041 case 258:
4043 yyval.i = yyvsp[0].i;
4045 break;
4046 case 259:
4048 add_opvars(splev, "o", VA_PASS1(SPO_FOUNTAIN));
4050 break;
4051 case 260:
4053 add_opvars(splev, "o", VA_PASS1(SPO_SINK));
4055 break;
4056 case 261:
4058 add_opvars(splev, "o", VA_PASS1(SPO_POOL));
4060 break;
4061 case 262:
4063 yyval.terr.lit = -2;
4064 yyval.terr.ter = what_map_char((char) yyvsp[0].i);
4066 break;
4067 case 263:
4069 yyval.terr.lit = yyvsp[-1].i;
4070 yyval.terr.ter = what_map_char((char) yyvsp[-3].i);
4072 break;
4073 case 264:
4075 add_opvars(splev, "io",
4076 VA_PASS2(yyvsp[0].i, SPO_REPLACETERRAIN));
4078 break;
4079 case 265:
4081 add_opvars(splev, "o", VA_PASS1(SPO_TERRAIN));
4083 break;
4084 case 266:
4086 add_opvars(splev, "o", VA_PASS1(SPO_NON_DIGGABLE));
4088 break;
4089 case 267:
4091 add_opvars(splev, "o", VA_PASS1(SPO_NON_PASSWALL));
4093 break;
4094 case 268:
4096 long irr;
4097 long rt = yyvsp[-1].i;
4098 long rflags = yyvsp[0].i;
4100 if (rflags == -1) rflags = (1 << 0);
4101 if (!(rflags & 1)) rt += MAXRTYPE+1;
4102 irr = ((rflags & 2) != 0);
4103 add_opvars(splev, "iiio",
4104 VA_PASS4((long)yyvsp[-3].i, rt, rflags, SPO_REGION));
4105 yyval.i = (irr || (rflags & 1) || rt != OROOM);
4106 break_stmt_start();
4108 break;
4109 case 269:
4111 break_stmt_end(splev);
4112 if ( yyvsp[-1].i ) {
4113 add_opcode(splev, SPO_ENDROOM, NULL);
4114 } else if ( yyvsp[0].i )
4115 lc_error("Cannot use lev statements in non-permanent REGION");
4117 break;
4118 case 270:
4120 yyval.i = 0;
4122 break;
4123 case 271:
4125 yyval.i = yyvsp[0].i;
4127 break;
4128 case 272:
4130 add_opvars(splev, "iio",
4131 VA_PASS3((long)yyvsp[0].i, (long)yyvsp[-2].i, SPO_ALTAR));
4133 break;
4134 case 273:
4136 add_opvars(splev, "io", VA_PASS2(2, SPO_GRAVE));
4138 break;
4139 case 274:
4141 add_opvars(splev, "sio",
4142 VA_PASS3((char *)0, 1, SPO_GRAVE));
4144 break;
4145 case 275:
4147 add_opvars(splev, "sio",
4148 VA_PASS3((char *)0, 0, SPO_GRAVE));
4150 break;
4151 case 276:
4153 add_opvars(splev, "o", VA_PASS1(SPO_GOLD));
4155 break;
4156 case 277:
4158 add_opvars(splev, "io",
4159 VA_PASS2((long)yyvsp[-2].i, SPO_ENGRAVING));
4161 break;
4162 case 278:
4164 add_opvars(splev, "o", VA_PASS1(SPO_MINERALIZE));
4166 break;
4167 case 279:
4169 add_opvars(splev, "iiiio",
4170 VA_PASS5(-1L, -1L, -1L, -1L, SPO_MINERALIZE));
4172 break;
4173 case 280:
4175 int token = get_trap_type(yyvsp[0].map);
4176 if (token == ERR)
4177 lc_error("Unknown trap type '%s'!", yyvsp[0].map);
4178 yyval.i = token;
4179 Free(yyvsp[0].map);
4181 break;
4182 case 282:
4184 int token = get_room_type(yyvsp[0].map);
4185 if (token == ERR) {
4186 lc_warning("Unknown room type \"%s\"! Making ordinary room...", yyvsp[0].map);
4187 yyval.i = OROOM;
4188 } else
4189 yyval.i = token;
4190 Free(yyvsp[0].map);
4192 break;
4193 case 284:
4195 yyval.i = -1;
4197 break;
4198 case 285:
4200 yyval.i = yyvsp[0].i;
4202 break;
4203 case 286:
4205 yyval.i = yyvsp[0].i;
4207 break;
4208 case 287:
4210 yyval.i = yyvsp[-2].i | yyvsp[0].i;
4212 break;
4213 case 288:
4215 yyval.i = (yyvsp[0].i << 0);
4217 break;
4218 case 289:
4220 yyval.i = (yyvsp[0].i << 1);
4222 break;
4223 case 290:
4225 yyval.i = (yyvsp[0].i << 2);
4227 break;
4228 case 297:
4230 yyval.i = - MAX_REGISTERS - 1;
4232 break;
4233 case 300:
4235 yyval.i = - MAX_REGISTERS - 1;
4237 break;
4238 case 303:
4240 if ( yyvsp[-1].i >= 3 )
4241 lc_error("Register Index overflow!");
4242 else
4243 yyval.i = - yyvsp[-1].i - 1;
4245 break;
4246 case 304:
4248 add_opvars(splev, "s", VA_PASS1(yyvsp[0].map));
4249 Free(yyvsp[0].map);
4251 break;
4252 case 305:
4254 check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_STRING);
4255 vardef_used(variable_definitions, yyvsp[0].map);
4256 add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4257 Free(yyvsp[0].map);
4259 break;
4260 case 306:
4262 check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_STRING|SPOVAR_ARRAY);
4263 vardef_used(variable_definitions, yyvsp[-3].map);
4264 add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4265 Free(yyvsp[-3].map);
4267 break;
4268 case 307:
4270 /* nothing */
4272 break;
4273 case 308:
4275 add_opvars(splev, "c", VA_PASS1(yyvsp[0].i));
4277 break;
4278 case 309:
4280 add_opvars(splev, "o", VA_PASS1(SPO_SEL_RNDCOORD));
4282 break;
4283 case 310:
4285 check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_COORD);
4286 vardef_used(variable_definitions, yyvsp[0].map);
4287 add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4288 Free(yyvsp[0].map);
4290 break;
4291 case 311:
4293 check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_COORD|SPOVAR_ARRAY);
4294 vardef_used(variable_definitions, yyvsp[-3].map);
4295 add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4296 Free(yyvsp[-3].map);
4298 break;
4299 case 312:
4301 if (yyvsp[-3].i < 0 || yyvsp[-1].i < 0 || yyvsp[-3].i >= COLNO || yyvsp[-1].i >= ROWNO)
4302 lc_error("Coordinates (%li,%li) out of map range!", yyvsp[-3].i, yyvsp[-1].i);
4303 yyval.i = SP_COORD_PACK(yyvsp[-3].i, yyvsp[-1].i);
4305 break;
4306 case 313:
4308 yyval.i = SP_COORD_PACK_RANDOM(0);
4310 break;
4311 case 314:
4313 yyval.i = SP_COORD_PACK_RANDOM( yyvsp[-1].i );
4315 break;
4316 case 315:
4318 yyval.i = yyvsp[0].i;
4320 break;
4321 case 316:
4323 if ((yyvsp[-2].i & yyvsp[0].i))
4324 lc_warning("Humidity flag used twice.");
4325 yyval.i = (yyvsp[-2].i | yyvsp[0].i);
4327 break;
4328 case 317:
4330 /* nothing */
4332 break;
4333 case 318:
4335 check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_REGION);
4336 vardef_used(variable_definitions, yyvsp[0].map);
4337 add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4338 Free(yyvsp[0].map);
4340 break;
4341 case 319:
4343 check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_REGION|SPOVAR_ARRAY);
4344 vardef_used(variable_definitions, yyvsp[-3].map);
4345 add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4346 Free(yyvsp[-3].map);
4348 break;
4349 case 320:
4351 long r = SP_REGION_PACK(yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4352 if ( yyvsp[-7].i > yyvsp[-3].i || yyvsp[-5].i > yyvsp[-1].i )
4353 lc_error("Region start > end: (%li,%li,%li,%li)!", yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4355 add_opvars(splev, "r", VA_PASS1(r));
4356 yyval.i = r;
4358 break;
4359 case 321:
4361 add_opvars(splev, "m", VA_PASS1(yyvsp[0].i));
4363 break;
4364 case 322:
4366 check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_MAPCHAR);
4367 vardef_used(variable_definitions, yyvsp[0].map);
4368 add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4369 Free(yyvsp[0].map);
4371 break;
4372 case 323:
4374 check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_MAPCHAR|SPOVAR_ARRAY);
4375 vardef_used(variable_definitions, yyvsp[-3].map);
4376 add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4377 Free(yyvsp[-3].map);
4379 break;
4380 case 324:
4382 if (what_map_char((char) yyvsp[0].i) != INVALID_TYPE)
4383 yyval.i = SP_MAPCHAR_PACK(what_map_char((char) yyvsp[0].i), -2);
4384 else {
4385 lc_error("Unknown map char type '%c'!", yyvsp[0].i);
4386 yyval.i = SP_MAPCHAR_PACK(STONE, -2);
4389 break;
4390 case 325:
4392 if (what_map_char((char) yyvsp[-3].i) != INVALID_TYPE)
4393 yyval.i = SP_MAPCHAR_PACK(what_map_char((char) yyvsp[-3].i), yyvsp[-1].i);
4394 else {
4395 lc_error("Unknown map char type '%c'!", yyvsp[-3].i);
4396 yyval.i = SP_MAPCHAR_PACK(STONE, yyvsp[-1].i);
4399 break;
4400 case 326:
4402 add_opvars(splev, "M", VA_PASS1(yyvsp[0].i));
4404 break;
4405 case 327:
4407 check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_MONST);
4408 vardef_used(variable_definitions, yyvsp[0].map);
4409 add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4410 Free(yyvsp[0].map);
4412 break;
4413 case 328:
4415 check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_MONST|SPOVAR_ARRAY);
4416 vardef_used(variable_definitions, yyvsp[-3].map);
4417 add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4418 Free(yyvsp[-3].map);
4420 break;
4421 case 329:
4423 long m = get_monster_id(yyvsp[0].map, (char)0);
4424 if (m == ERR) {
4425 lc_error("Unknown monster \"%s\"!", yyvsp[0].map);
4426 yyval.i = -1;
4427 } else
4428 yyval.i = SP_MONST_PACK(m,
4429 def_monsyms[(int) mons[m].mlet].sym);
4430 Free(yyvsp[0].map);
4432 break;
4433 case 330:
4435 if (check_monster_char((char) yyvsp[0].i))
4436 yyval.i = SP_MONST_PACK(-1, yyvsp[0].i);
4437 else {
4438 lc_error("Unknown monster class '%c'!", yyvsp[0].i);
4439 yyval.i = -1;
4442 break;
4443 case 331:
4445 long m = get_monster_id(yyvsp[-1].map, (char) yyvsp[-3].i);
4446 if (m == ERR) {
4447 lc_error("Unknown monster ('%c', \"%s\")!", yyvsp[-3].i, yyvsp[-1].map);
4448 yyval.i = -1;
4449 } else
4450 yyval.i = SP_MONST_PACK(m, yyvsp[-3].i);
4451 Free(yyvsp[-1].map);
4453 break;
4454 case 332:
4456 yyval.i = -1;
4458 break;
4459 case 333:
4461 add_opvars(splev, "O", VA_PASS1(yyvsp[0].i));
4463 break;
4464 case 334:
4466 check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_OBJ);
4467 vardef_used(variable_definitions, yyvsp[0].map);
4468 add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4469 Free(yyvsp[0].map);
4471 break;
4472 case 335:
4474 check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_OBJ|SPOVAR_ARRAY);
4475 vardef_used(variable_definitions, yyvsp[-3].map);
4476 add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4477 Free(yyvsp[-3].map);
4479 break;
4480 case 336:
4482 long m = get_object_id(yyvsp[0].map, (char)0);
4483 if (m == ERR) {
4484 lc_error("Unknown object \"%s\"!", yyvsp[0].map);
4485 yyval.i = -1;
4486 } else
4487 yyval.i = SP_OBJ_PACK(m, 1); /* obj class != 0 to force generation of a specific item */
4488 Free(yyvsp[0].map);
4490 break;
4491 case 337:
4493 if (check_object_char((char) yyvsp[0].i))
4494 yyval.i = SP_OBJ_PACK(-1, yyvsp[0].i);
4495 else {
4496 lc_error("Unknown object class '%c'!", yyvsp[0].i);
4497 yyval.i = -1;
4500 break;
4501 case 338:
4503 long m = get_object_id(yyvsp[-1].map, (char) yyvsp[-3].i);
4504 if (m == ERR) {
4505 lc_error("Unknown object ('%c', \"%s\")!", yyvsp[-3].i, yyvsp[-1].map);
4506 yyval.i = -1;
4507 } else
4508 yyval.i = SP_OBJ_PACK(m, yyvsp[-3].i);
4509 Free(yyvsp[-1].map);
4511 break;
4512 case 339:
4514 yyval.i = -1;
4516 break;
4517 case 340:
4519 break;
4520 case 341:
4522 add_opvars(splev, "o", VA_PASS1(SPO_MATH_ADD));
4524 break;
4525 case 342:
4527 add_opvars(splev, "i", VA_PASS1(yyvsp[0].i));
4529 break;
4530 case 343:
4532 is_inconstant_number = 1;
4534 break;
4535 case 344:
4537 add_opvars(splev, "i", VA_PASS1(yyvsp[-1].i));
4539 break;
4540 case 345:
4542 check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_INT);
4543 vardef_used(variable_definitions, yyvsp[0].map);
4544 add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4545 Free(yyvsp[0].map);
4546 is_inconstant_number = 1;
4548 break;
4549 case 346:
4551 check_vardef_type(variable_definitions,
4552 yyvsp[-3].map, SPOVAR_INT|SPOVAR_ARRAY);
4553 vardef_used(variable_definitions, yyvsp[-3].map);
4554 add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
4555 Free(yyvsp[-3].map);
4556 is_inconstant_number = 1;
4558 break;
4559 case 347:
4561 add_opvars(splev, "o", VA_PASS1(SPO_MATH_ADD));
4563 break;
4564 case 348:
4566 add_opvars(splev, "o", VA_PASS1(SPO_MATH_SUB));
4568 break;
4569 case 349:
4571 add_opvars(splev, "o", VA_PASS1(SPO_MATH_MUL));
4573 break;
4574 case 350:
4576 add_opvars(splev, "o", VA_PASS1(SPO_MATH_DIV));
4578 break;
4579 case 351:
4581 add_opvars(splev, "o", VA_PASS1(SPO_MATH_MOD));
4583 break;
4584 case 352:
4586 break;
4587 case 353:
4589 if (!strcmp("int", yyvsp[0].map) || !strcmp("integer", yyvsp[0].map)) {
4590 yyval.i = (int)'i';
4591 } else
4592 lc_error("Unknown function parameter type '%s'", yyvsp[0].map);
4594 break;
4595 case 354:
4597 if (!strcmp("str", yyvsp[0].map) || !strcmp("string", yyvsp[0].map)) {
4598 yyval.i = (int)'s';
4599 } else
4600 lc_error("Unknown function parameter type '%s'", yyvsp[0].map);
4602 break;
4603 case 355:
4605 struct lc_funcdefs_parm *tmp = New(struct lc_funcdefs_parm);
4607 if (!curr_function) {
4608 lc_error("Function parameters outside function definition.");
4609 } else if (!tmp) {
4610 lc_error("Could not alloc function params.");
4611 } else {
4612 long vt = SPOVAR_NULL;
4614 tmp->name = strdup(yyvsp[-2].map);
4615 tmp->parmtype = (char) yyvsp[0].i;
4616 tmp->next = curr_function->params;
4617 curr_function->params = tmp;
4618 curr_function->n_params++;
4619 switch (tmp->parmtype) {
4620 case 'i':
4621 vt = SPOVAR_INT;
4622 break;
4623 case 's':
4624 vt = SPOVAR_STRING;
4625 break;
4626 default:
4627 lc_error("Unknown func param conversion.");
4628 break;
4630 variable_definitions = add_vardef_type(
4631 variable_definitions,
4632 yyvsp[-2].map, vt);
4634 Free(yyvsp[-2].map);
4636 break;
4637 case 360:
4639 yyval.i = (int)'i';
4641 break;
4642 case 361:
4644 yyval.i = (int)'s';
4646 break;
4647 case 362:
4649 char tmpbuf[2];
4650 tmpbuf[0] = (char) yyvsp[0].i;
4651 tmpbuf[1] = '\0';
4652 yyval.map = strdup(tmpbuf);
4654 break;
4655 case 363:
4657 long len = strlen( yyvsp[-2].map );
4658 char *tmp = (char *) alloc(len + 2);
4659 sprintf(tmp, "%c%s", (char) yyvsp[0].i, yyvsp[-2].map );
4660 Free( yyvsp[-2].map );
4661 yyval.map = tmp;
4663 break;
4664 case 364:
4666 yyval.map = strdup("");
4668 break;
4669 case 365:
4671 char *tmp = strdup( yyvsp[0].map );
4672 Free( yyvsp[0].map );
4673 yyval.map = tmp;
4675 break;
4676 case 366:
4678 add_opvars(splev, "o", VA_PASS1(SPO_SEL_POINT));
4680 break;
4681 case 367:
4683 add_opvars(splev, "o", VA_PASS1(SPO_SEL_RECT));
4685 break;
4686 case 368:
4688 add_opvars(splev, "o", VA_PASS1(SPO_SEL_FILLRECT));
4690 break;
4691 case 369:
4693 add_opvars(splev, "o", VA_PASS1(SPO_SEL_LINE));
4695 break;
4696 case 370:
4698 /* randline (x1,y1),(x2,y2), roughness */
4699 add_opvars(splev, "o", VA_PASS1(SPO_SEL_RNDLINE));
4701 break;
4702 case 371:
4704 add_opvars(splev, "io", VA_PASS2(W_ANY, SPO_SEL_GROW));
4706 break;
4707 case 372:
4709 add_opvars(splev, "io", VA_PASS2(yyvsp[-3].i, SPO_SEL_GROW));
4711 break;
4712 case 373:
4714 add_opvars(splev, "iio",
4715 VA_PASS3(yyvsp[-3].i, SPOFILTER_PERCENT, SPO_SEL_FILTER));
4717 break;
4718 case 374:
4720 add_opvars(splev, "io",
4721 VA_PASS2(SPOFILTER_SELECTION, SPO_SEL_FILTER));
4723 break;
4724 case 375:
4726 add_opvars(splev, "io",
4727 VA_PASS2(SPOFILTER_MAPCHAR, SPO_SEL_FILTER));
4729 break;
4730 case 376:
4732 add_opvars(splev, "o", VA_PASS1(SPO_SEL_FLOOD));
4734 break;
4735 case 377:
4737 add_opvars(splev, "oio",
4738 VA_PASS3(SPO_COPY, 1, SPO_SEL_ELLIPSE));
4740 break;
4741 case 378:
4743 add_opvars(splev, "oio",
4744 VA_PASS3(SPO_COPY, yyvsp[-1].i, SPO_SEL_ELLIPSE));
4746 break;
4747 case 379:
4749 add_opvars(splev, "io", VA_PASS2(1, SPO_SEL_ELLIPSE));
4751 break;
4752 case 380:
4754 add_opvars(splev, "io", VA_PASS2(yyvsp[-1].i, SPO_SEL_ELLIPSE));
4756 break;
4757 case 381:
4759 add_opvars(splev, "iio",
4760 VA_PASS3(yyvsp[-5].i, yyvsp[-11].i, SPO_SEL_GRADIENT));
4762 break;
4763 case 382:
4765 add_opvars(splev, "o", VA_PASS1(SPO_SEL_COMPLEMENT));
4767 break;
4768 case 383:
4770 check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_SEL);
4771 vardef_used(variable_definitions, yyvsp[0].map);
4772 add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
4773 Free(yyvsp[0].map);
4775 break;
4776 case 384:
4778 /* nothing */
4780 break;
4781 case 385:
4783 /* nothing */
4785 break;
4786 case 386:
4788 add_opvars(splev, "o", VA_PASS1(SPO_SEL_ADD));
4790 break;
4791 case 387:
4793 add_opvars(splev, "iio",
4794 VA_PASS3(yyvsp[0].dice.num, yyvsp[0].dice.die, SPO_DICE));
4796 break;
4797 case 391:
4799 add_opvars(splev, "i", VA_PASS1(yyvsp[0].i));
4801 break;
4802 case 392:
4804 add_opvars(splev, "i", VA_PASS1(yyvsp[0].i));
4806 break;
4807 case 393:
4809 add_opvars(splev, "i", VA_PASS1(yyvsp[0].i));
4811 break;
4812 case 394:
4814 /* nothing */
4816 break;
4817 case 403:
4819 yyval.lregn = yyvsp[0].lregn;
4821 break;
4822 case 404:
4824 if (yyvsp[-7].i <= 0 || yyvsp[-7].i >= COLNO)
4825 lc_error(
4826 "Region (%ld,%ld,%ld,%ld) out of level range (x1)!",
4827 yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4828 else if (yyvsp[-5].i < 0 || yyvsp[-5].i >= ROWNO)
4829 lc_error(
4830 "Region (%ld,%ld,%ld,%ld) out of level range (y1)!",
4831 yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4832 else if (yyvsp[-3].i <= 0 || yyvsp[-3].i >= COLNO)
4833 lc_error(
4834 "Region (%ld,%ld,%ld,%ld) out of level range (x2)!",
4835 yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4836 else if (yyvsp[-1].i < 0 || yyvsp[-1].i >= ROWNO)
4837 lc_error(
4838 "Region (%ld,%ld,%ld,%ld) out of level range (y2)!",
4839 yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4840 yyval.lregn.x1 = yyvsp[-7].i;
4841 yyval.lregn.y1 = yyvsp[-5].i;
4842 yyval.lregn.x2 = yyvsp[-3].i;
4843 yyval.lregn.y2 = yyvsp[-1].i;
4844 yyval.lregn.area = 1;
4846 break;
4847 case 405:
4849 /* This series of if statements is a hack for MSC 5.1. It seems that its
4850 tiny little brain cannot compile if these are all one big if statement. */
4851 if (yyvsp[-7].i < 0 || yyvsp[-7].i > (int) max_x_map)
4852 lc_error(
4853 "Region (%ld,%ld,%ld,%ld) out of map range (x1)!",
4854 yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4855 else if (yyvsp[-5].i < 0 || yyvsp[-5].i > (int) max_y_map)
4856 lc_error(
4857 "Region (%ld,%ld,%ld,%ld) out of map range (y1)!",
4858 yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4859 else if (yyvsp[-3].i < 0 || yyvsp[-3].i > (int) max_x_map)
4860 lc_error(
4861 "Region (%ld,%ld,%ld,%ld) out of map range (x2)!",
4862 yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4863 else if (yyvsp[-1].i < 0 || yyvsp[-1].i > (int) max_y_map)
4864 lc_error(
4865 "Region (%ld,%ld,%ld,%ld) out of map range (y2)!",
4866 yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
4867 yyval.lregn.area = 0;
4868 yyval.lregn.x1 = yyvsp[-7].i;
4869 yyval.lregn.y1 = yyvsp[-5].i;
4870 yyval.lregn.x2 = yyvsp[-3].i;
4871 yyval.lregn.y2 = yyvsp[-1].i;
4873 break;
4875 yyssp -= yym;
4876 yystate = *yyssp;
4877 yyvsp -= yym;
4878 yym = yylhs[yyn];
4879 if (yystate == 0 && yym == 0)
4881 #if YYDEBUG
4882 if (yydebug)
4883 printf("%sdebug: after reduction, shifting from state 0 to\
4884 state %d\n", YYPREFIX, YYFINAL);
4885 #endif
4886 yystate = YYFINAL;
4887 *++yyssp = YYFINAL;
4888 *++yyvsp = yyval;
4889 if (yychar < 0)
4891 if ((yychar = yylex()) < 0) yychar = 0;
4892 #if YYDEBUG
4893 if (yydebug)
4895 yys = 0;
4896 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
4897 if (!yys) yys = "illegal-symbol";
4898 printf("%sdebug: state %d, reading %d (%s)\n",
4899 YYPREFIX, YYFINAL, yychar, yys);
4901 #endif
4903 if (yychar == 0) goto yyaccept;
4904 goto yyloop;
4906 if ((yyn = yygindex[yym]) != 0 && (yyn += yystate) >= 0 &&
4907 yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
4908 yystate = yytable[yyn];
4909 else
4910 yystate = yydgoto[yym];
4911 #if YYDEBUG
4912 if (yydebug)
4913 printf("%sdebug: after reduction, shifting from state %d \
4914 to state %d\n", YYPREFIX, *yyssp, yystate);
4915 #endif
4916 if (yyssp >= yyss + yystacksize - 1)
4918 goto yyoverflow;
4920 *++yyssp = yystate;
4921 *++yyvsp = yyval;
4922 goto yyloop;
4923 yyoverflow:
4924 yyerror("yacc stack overflow");
4925 yyabort:
4926 return (1);
4927 yyaccept:
4928 return (0);