1
/* A Bison parser, made by GNU Bison 1.875. */
3
/* Skeleton parser for Yacc-like parsing with Bison,
4
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
6
This program is free software; you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation; either version 2, or (at your option)
11
This program is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU General Public License for more details.
16
You should have received a copy of the GNU General Public License
17
along with this program; if not, write to the Free Software
18
Foundation, Inc., 59 Temple Place - Suite 330,
19
Boston, MA 02111-1307, USA. */
21
/* As a special exception, when this file is copied by Bison into a
22
Bison output file, you may use that output file without restriction.
23
This special exception was added by the Free Software Foundation
24
in version 1.24 of Bison. */
26
/* Written by Richard Stallman by simplifying the original so called
27
``semantic'' parser. */
29
/* All symbols defined below should begin with yy or YY, to avoid
30
infringing on user name space. This should be done even for local
31
variables, as they might otherwise be expanded by user macros.
32
There are some unavoidable exceptions within include files to
33
define necessary library symbols; they are noted "INFRINGES ON
34
USER NAME SPACE" below. */
36
/* Identify Bison output. */
40
#define YYSKELETON_NAME "yacc.c"
45
/* Using locations. */
46
#define YYLSP_NEEDED 0
53
/* Put the tokens into the symbol table, so that GDB and other debuggers
90
#define CHAR_CONST 259
99
#define T_RECTANGLE 268
101
#define T_ELEMENTLINE 270
102
#define T_ELEMENT 271
108
#define T_SYMBOLLINE 277
110
#define T_ELEMENTARC 279
114
#define T_POLYGON 283
115
#define T_NETLIST 284
118
#define T_THERMAL 287
124
/* Copy the first part of user declarations. */
130
* PCB, interactive printed circuit board design
131
* Copyright (C) 1994,1995,1996 Thomas Nau
133
* This program is free software; you can redistribute it and/or modify
134
* it under the terms of the GNU General Public License as published by
135
* the Free Software Foundation; either version 2 of the License, or
136
* (at your option) any later version.
138
* This program is distributed in the hope that it will be useful,
139
* but WITHOUT ANY WARRANTY; without even the implied warranty of
140
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
141
* GNU General Public License for more details.
143
* You should have received a copy of the GNU General Public License
144
* along with this program; if not, write to the Free Software
145
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
147
* Contact addresses for paper mail and Email:
148
* Thomas Nau, Schlehenweg 15, 88471 Baustetten, Germany
149
* Thomas.Nau@rz.uni-ulm.de
153
/* grammar to parse ASCII input of PCB description
160
#define GRIDFIT(x,g) (int)(0.5 + (int)(((x)+(g)/2.)/(g))*(g))
170
#ifdef HAVE_LIBDMALLOC
171
# include <dmalloc.h> /* see http://dmalloc.com */
174
RCSID("$Id: parse_y.y,v 1.14 2004/08/30 11:29:16 danmc Exp $");
176
static LayerTypePtr Layer;
177
static PolygonTypePtr Polygon;
178
static SymbolTypePtr Symbol;
180
static LibraryMenuTypePtr Menu;
181
static Boolean LayerFlag[MAX_LAYER + 2];
183
extern char *yytext; /* defined by LEX */
184
extern PCBTypePtr yyPCB;
185
extern DataTypePtr yyData;
186
extern ElementTypePtr yyElement;
187
extern FontTypePtr yyFont;
188
extern int yylineno; /* linenumber */
189
extern char *yyfilename; /* in this file */
191
int yyerror(char *s);
195
/* Enabling traces. */
200
/* Enabling verbose error messages. */
201
#ifdef YYERROR_VERBOSE
202
# undef YYERROR_VERBOSE
203
# define YYERROR_VERBOSE 1
205
# define YYERROR_VERBOSE 0
208
#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
210
typedef union YYSTYPE {
215
/* Line 191 of yacc.c. */
216
#line 216 "parse_y.c"
217
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
218
# define YYSTYPE_IS_DECLARED 1
219
# define YYSTYPE_IS_TRIVIAL 1
224
/* Copy the second part of user declarations. */
227
/* Line 214 of yacc.c. */
228
#line 228 "parse_y.c"
230
#if ! defined (yyoverflow) || YYERROR_VERBOSE
232
/* The parser invokes alloca or malloc; define the necessary symbols. */
234
# if YYSTACK_USE_ALLOCA
235
# define YYSTACK_ALLOC alloca
237
# ifndef YYSTACK_USE_ALLOCA
238
# if defined (alloca) || defined (_ALLOCA_H)
239
# define YYSTACK_ALLOC alloca
242
# define YYSTACK_ALLOC __builtin_alloca
248
# ifdef YYSTACK_ALLOC
249
/* Pacify GCC's `empty if-body' warning. */
250
# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
252
# if defined (__STDC__) || defined (__cplusplus)
253
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
254
# define YYSIZE_T size_t
256
# define YYSTACK_ALLOC malloc
257
# define YYSTACK_FREE free
259
#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
262
#if (! defined (yyoverflow) \
263
&& (! defined (__cplusplus) \
264
|| (YYSTYPE_IS_TRIVIAL)))
266
/* A type that is properly aligned for any stack member. */
273
/* The size of the maximum gap between one aligned stack and the next. */
274
# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
276
/* The size of an array large to enough to hold all stacks, each with
278
# define YYSTACK_BYTES(N) \
279
((N) * (sizeof (short) + sizeof (YYSTYPE)) \
280
+ YYSTACK_GAP_MAXIMUM)
282
/* Copy COUNT objects from FROM to TO. The source and destination do
286
# define YYCOPY(To, From, Count) \
287
__builtin_memcpy (To, From, (Count) * sizeof (*(From)))
289
# define YYCOPY(To, From, Count) \
292
register YYSIZE_T yyi; \
293
for (yyi = 0; yyi < (Count); yyi++) \
294
(To)[yyi] = (From)[yyi]; \
300
/* Relocate STACK from its old location to the new one. The
301
local variables YYSIZE and YYSTACKSIZE give the old and new number of
302
elements in the stack, and YYPTR gives the new location of the
303
stack. Advance YYPTR to a properly aligned location for the next
305
# define YYSTACK_RELOCATE(Stack) \
308
YYSIZE_T yynewbytes; \
309
YYCOPY (&yyptr->Stack, Stack, yysize); \
310
Stack = &yyptr->Stack; \
311
yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
312
yyptr += yynewbytes / sizeof (*yyptr); \
318
#if defined (__STDC__) || defined (__cplusplus)
319
typedef signed char yysigned_char;
321
typedef short yysigned_char;
324
/* YYFINAL -- State number of the termination state. */
326
/* YYLAST -- Last index in YYTABLE. */
329
/* YYNTOKENS -- Number of terminals. */
331
/* YYNNTS -- Number of nonterminals. */
333
/* YYNRULES -- Number of rules. */
335
/* YYNRULES -- Number of states. */
336
#define YYNSTATES 572
338
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
340
#define YYMAXUTOK 288
342
#define YYTRANSLATE(YYX) \
343
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
345
/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
346
static const unsigned char yytranslate[] =
348
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
349
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
350
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
351
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
352
34, 35, 2, 2, 2, 2, 2, 2, 2, 2,
353
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
354
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
355
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
356
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
357
2, 36, 2, 37, 2, 2, 2, 2, 2, 2,
358
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
359
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
360
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
361
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
362
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
363
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
364
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
365
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
366
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
367
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
368
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
369
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
370
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
371
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
372
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
373
2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
374
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
375
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
376
25, 26, 27, 28, 29, 30, 31, 32, 33
380
/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
382
static const unsigned short yyprhs[] =
384
0, 0, 3, 5, 7, 9, 11, 12, 25, 26,
385
29, 31, 32, 33, 36, 41, 48, 55, 57, 59,
386
61, 63, 70, 78, 86, 94, 101, 108, 115, 116,
387
117, 122, 124, 126, 127, 134, 135, 143, 148, 149,
388
154, 155, 160, 165, 166, 167, 169, 170, 172, 175,
389
177, 179, 181, 182, 185, 187, 189, 191, 193, 195,
390
197, 209, 221, 232, 242, 251, 262, 273, 274, 284,
391
286, 287, 289, 292, 294, 296, 298, 300, 302, 304,
392
313, 315, 317, 319, 320, 329, 340, 351, 361, 374,
393
387, 399, 408, 418, 428, 430, 433, 438, 443, 444,
394
446, 448, 450, 452, 454, 455, 468, 469, 485, 486,
395
503, 504, 523, 524, 543, 545, 548, 550, 552, 554,
396
556, 558, 567, 576, 587, 598, 604, 610, 612, 615,
397
617, 619, 621, 623, 632, 641, 652, 663, 676, 689,
398
700, 710, 719, 733, 747, 759, 770, 772, 775, 776,
399
786, 787, 797, 799, 801, 803, 806, 808, 810, 811,
400
820, 829, 831, 832, 839, 841, 842, 844, 847, 848,
401
858, 860, 861, 863, 866
404
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
405
static const short yyrhs[] =
407
39, 0, -1, 40, -1, 42, -1, 45, -1, 1,
408
-1, -1, 41, 47, 48, 53, 54, 55, 58, 59,
409
60, 44, 61, 122, -1, -1, 43, 61, -1, 45,
410
-1, -1, -1, 46, 113, -1, 7, 34, 6, 35,
411
-1, 7, 34, 6, 3, 3, 35, -1, 7, 36,
412
6, 3, 3, 37, -1, 49, -1, 50, -1, 51,
413
-1, 52, -1, 19, 34, 3, 3, 3, 35, -1,
414
19, 34, 3, 3, 3, 3, 35, -1, 19, 34,
415
5, 3, 3, 3, 35, -1, 19, 36, 5, 3,
416
3, 3, 37, -1, 23, 34, 3, 3, 3, 35,
417
-1, 23, 36, 3, 3, 3, 37, -1, 23, 36,
418
3, 3, 5, 37, -1, -1, -1, 32, 36, 5,
419
37, -1, 56, -1, 57, -1, -1, 33, 36, 3,
420
3, 3, 37, -1, -1, 33, 36, 3, 3, 3,
421
3, 37, -1, 20, 34, 3, 35, -1, -1, 26,
422
34, 6, 35, -1, -1, 27, 34, 6, 35, -1,
423
27, 36, 6, 37, -1, -1, -1, 62, -1, -1,
424
63, -1, 62, 63, -1, 65, -1, 71, -1, 72,
425
-1, -1, 64, 89, -1, 1, -1, 66, -1, 67,
426
-1, 68, -1, 69, -1, 70, -1, 9, 36, 3,
427
3, 3, 3, 3, 3, 6, 3, 37, -1, 9,
428
34, 3, 3, 3, 3, 3, 3, 6, 3, 35,
429
-1, 9, 34, 3, 3, 3, 3, 3, 6, 3,
430
35, -1, 9, 34, 3, 3, 3, 3, 6, 3,
431
35, -1, 9, 34, 3, 3, 3, 6, 3, 35,
432
-1, 10, 36, 3, 3, 3, 3, 3, 3, 3,
433
37, -1, 10, 34, 3, 3, 3, 3, 3, 3,
434
3, 35, -1, -1, 8, 34, 3, 6, 35, 34,
435
73, 74, 35, -1, 75, -1, -1, 76, -1, 75,
436
76, -1, 78, -1, 79, -1, 80, -1, 81, -1,
437
82, -1, 83, -1, 13, 34, 3, 3, 3, 3,
438
3, 35, -1, 86, -1, 85, -1, 84, -1, -1,
439
28, 34, 3, 35, 34, 77, 87, 35, -1, 11,
440
36, 3, 3, 3, 3, 3, 3, 3, 37, -1,
441
11, 34, 3, 3, 3, 3, 3, 3, 3, 35,
442
-1, 11, 34, 3, 3, 3, 3, 3, 3, 35,
443
-1, 12, 36, 3, 3, 3, 3, 3, 3, 3,
444
3, 3, 37, -1, 12, 34, 3, 3, 3, 3,
445
3, 3, 3, 3, 3, 35, -1, 12, 34, 3,
446
3, 3, 3, 3, 3, 3, 3, 35, -1, 14,
447
34, 3, 3, 3, 6, 3, 35, -1, 14, 34,
448
3, 3, 3, 3, 6, 3, 35, -1, 14, 36,
449
3, 3, 3, 3, 6, 3, 37, -1, 88, -1,
450
87, 88, -1, 34, 3, 3, 35, -1, 36, 3,
451
3, 37, -1, -1, 90, -1, 92, -1, 94, -1,
452
96, -1, 98, -1, -1, 16, 34, 6, 6, 3,
453
3, 3, 35, 34, 91, 100, 35, -1, -1, 16,
454
34, 3, 6, 6, 3, 3, 3, 3, 3, 35,
455
34, 93, 100, 35, -1, -1, 16, 34, 3, 6,
456
6, 6, 3, 3, 3, 3, 3, 35, 34, 95,
457
100, 35, -1, -1, 16, 34, 3, 6, 6, 6,
458
3, 3, 3, 3, 3, 3, 3, 35, 34, 97,
459
102, 35, -1, -1, 16, 36, 3, 6, 6, 6,
460
3, 3, 3, 3, 3, 3, 3, 37, 34, 99,
461
102, 35, -1, 101, -1, 100, 101, -1, 106, -1,
462
107, -1, 108, -1, 111, -1, 112, -1, 15, 36,
463
3, 3, 3, 3, 3, 37, -1, 15, 34, 3,
464
3, 3, 3, 3, 35, -1, 24, 36, 3, 3,
465
3, 3, 3, 3, 3, 37, -1, 24, 34, 3,
466
3, 3, 3, 3, 3, 3, 35, -1, 25, 36,
467
3, 3, 37, -1, 25, 34, 3, 3, 35, -1,
468
103, -1, 102, 103, -1, 105, -1, 104, -1, 110,
469
-1, 109, -1, 15, 36, 3, 3, 3, 3, 3,
470
37, -1, 15, 34, 3, 3, 3, 3, 3, 35,
471
-1, 24, 36, 3, 3, 3, 3, 3, 3, 3,
472
37, -1, 24, 34, 3, 3, 3, 3, 3, 3,
473
3, 35, -1, 17, 36, 3, 3, 3, 3, 3,
474
3, 6, 6, 3, 37, -1, 17, 34, 3, 3,
475
3, 3, 3, 3, 6, 6, 3, 35, -1, 17,
476
34, 3, 3, 3, 3, 6, 6, 3, 35, -1,
477
17, 34, 3, 3, 3, 3, 6, 3, 35, -1,
478
17, 34, 3, 3, 3, 6, 3, 35, -1, 18,
479
36, 3, 3, 3, 3, 3, 3, 3, 6, 6,
480
3, 37, -1, 18, 34, 3, 3, 3, 3, 3,
481
3, 3, 6, 6, 3, 35, -1, 18, 34, 3,
482
3, 3, 3, 3, 6, 6, 3, 35, -1, 18,
483
34, 3, 3, 3, 3, 3, 6, 3, 35, -1,
484
114, -1, 113, 114, -1, -1, 21, 36, 117, 3,
485
37, 34, 115, 118, 35, -1, -1, 21, 34, 117,
486
3, 35, 34, 116, 118, 35, -1, 3, -1, 4,
487
-1, 119, -1, 118, 119, -1, 120, -1, 121, -1,
488
-1, 22, 34, 3, 3, 3, 3, 3, 35, -1,
489
22, 36, 3, 3, 3, 3, 3, 37, -1, 123,
490
-1, -1, 29, 34, 35, 34, 124, 35, -1, 125,
491
-1, -1, 126, -1, 125, 126, -1, -1, 30, 34,
492
6, 6, 35, 34, 127, 128, 35, -1, 129, -1,
493
-1, 130, -1, 129, 130, -1, 31, 34, 6, 35,
497
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
498
static const unsigned short yyrline[] =
500
0, 93, 93, 94, 95, 96, 100, 100, 130, 130,
501
148, 149, 154, 154, 175, 181, 187, 196, 197, 198,
502
199, 202, 210, 223, 235, 248, 254, 260, 266, 269,
503
271, 278, 279, 282, 284, 292, 294, 304, 308, 312,
504
320, 323, 331, 339, 340, 344, 345, 349, 350, 354,
505
355, 356, 358, 358, 365, 369, 370, 371, 372, 373,
506
378, 388, 399, 409, 419, 435, 440, 450, 449, 471,
507
472, 476, 477, 481, 482, 483, 484, 485, 486, 488,
508
493, 494, 495, 498, 497, 519, 527, 535, 546, 554,
509
562, 571, 581, 597, 613, 614, 619, 623, 627, 631,
510
632, 633, 634, 635, 643, 642, 661, 660, 679, 678,
511
699, 697, 720, 718, 736, 737, 741, 742, 743, 744,
512
745, 747, 752, 757, 761, 766, 771, 779, 780, 784,
513
785, 786, 787, 789, 795, 802, 807, 817, 829, 841,
514
853, 869, 889, 903, 916, 927, 940, 941, 946, 945,
515
963, 962, 982, 983, 987, 988, 992, 993, 994, 999,
516
1006, 1012, 1013, 1017, 1022, 1023, 1027, 1028, 1034, 1033,
517
1043, 1044, 1048, 1049, 1053
521
#if YYDEBUG || YYERROR_VERBOSE
522
/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
523
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
524
static const char *const yytname[] =
526
"$end", "error", "$undefined", "NUMBER", "CHAR_CONST", "FLOAT", "STRING",
527
"T_PCB", "T_LAYER", "T_VIA", "T_RAT", "T_LINE", "T_ARC", "T_RECTANGLE",
528
"T_TEXT", "T_ELEMENTLINE", "T_ELEMENT", "T_PIN", "T_PAD", "T_GRID",
529
"T_FLAGS", "T_SYMBOL", "T_SYMBOLLINE", "T_CURSOR", "T_ELEMENTARC",
530
"T_MARK", "T_GROUPS", "T_STYLES", "T_POLYGON", "T_NETLIST", "T_NET",
531
"T_CONN", "T_THERMAL", "T_DRC", "'('", "')'", "'['", "']'", "$accept",
532
"parse", "parsepcb", "@1", "parsedata", "@2", "pcbfont", "parsefont",
533
"@3", "pcbname", "pcbgrid", "pcbgridold", "pcbgridnew", "pcb2grid",
534
"pcbhigrid", "pcbcursor", "pcbthermal", "pcbdrc", "pcbdrc1", "pcbdrc2",
535
"pcbflags", "pcbgroups", "pcbstyles", "pcbdata", "pcbdefinitions",
536
"pcbdefinition", "@4", "via", "via_hi_format", "via_2.0_format",
537
"via_1.7_format", "via_newformat", "via_oldformat", "rats", "layer",
538
"@5", "layerdata", "layerdefinitions", "layerdefinition", "@6",
539
"line_hi_format", "line_1.7_format", "line_oldformat", "arc_hi_format",
540
"arc_1.7_format", "arc_oldformat", "text_oldformat", "text_newformat",
541
"text_hi_format", "polygonpoints", "polygonpoint", "element",
542
"element_oldformat", "@7", "element_1.3.4_format", "@8",
543
"element_newformat", "@9", "element_1.7_format", "@10",
544
"element_hi_format", "@11", "elementdefinitions", "elementdefinition",
545
"relementdefs", "relementdef", "pin_hi_format", "pin_1.7_format",
546
"pin_1.6.3_format", "pin_newformat", "pin_oldformat", "pad_hi_format",
547
"pad_1.7_format", "pad_newformat", "pad", "symbols", "symbol", "@12",
548
"@13", "symbolid", "symboldata", "symboldefinitions",
549
"symboldefinition", "hiressymbol", "pcbnetlist", "pcbnetdef", "nets",
550
"netdefs", "net", "@14", "connections", "conndefs", "conn", 0
555
/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
557
static const unsigned short yytoknum[] =
559
0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
560
265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
561
275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
562
285, 286, 287, 288, 40, 41, 91, 93
566
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
567
static const unsigned char yyr1[] =
569
0, 38, 39, 39, 39, 39, 41, 40, 43, 42,
570
44, 44, 46, 45, 47, 47, 47, 48, 48, 48,
571
48, 49, 50, 51, 52, 53, 53, 53, 53, 54,
572
54, 55, 55, 56, 56, 57, 57, 58, 58, 59,
573
59, 60, 60, 60, 60, 61, 61, 62, 62, 63,
574
63, 63, 64, 63, 63, 65, 65, 65, 65, 65,
575
66, 67, 68, 69, 70, 71, 71, 73, 72, 74,
576
74, 75, 75, 76, 76, 76, 76, 76, 76, 76,
577
76, 76, 76, 77, 76, 78, 79, 80, 81, 82,
578
83, 84, 85, 86, 87, 87, 88, 88, 88, 89,
579
89, 89, 89, 89, 91, 90, 93, 92, 95, 94,
580
97, 96, 99, 98, 100, 100, 101, 101, 101, 101,
581
101, 101, 101, 101, 101, 101, 101, 102, 102, 103,
582
103, 103, 103, 103, 103, 103, 103, 104, 105, 106,
583
107, 108, 109, 110, 111, 112, 113, 113, 115, 114,
584
116, 114, 117, 117, 118, 118, 119, 119, 119, 120,
585
121, 122, 122, 123, 124, 124, 125, 125, 127, 126,
586
128, 128, 129, 129, 130
589
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
590
static const unsigned char yyr2[] =
592
0, 2, 1, 1, 1, 1, 0, 12, 0, 2,
593
1, 0, 0, 2, 4, 6, 6, 1, 1, 1,
594
1, 6, 7, 7, 7, 6, 6, 6, 0, 0,
595
4, 1, 1, 0, 6, 0, 7, 4, 0, 4,
596
0, 4, 4, 0, 0, 1, 0, 1, 2, 1,
597
1, 1, 0, 2, 1, 1, 1, 1, 1, 1,
598
11, 11, 10, 9, 8, 10, 10, 0, 9, 1,
599
0, 1, 2, 1, 1, 1, 1, 1, 1, 8,
600
1, 1, 1, 0, 8, 10, 10, 9, 12, 12,
601
11, 8, 9, 9, 1, 2, 4, 4, 0, 1,
602
1, 1, 1, 1, 0, 12, 0, 15, 0, 16,
603
0, 18, 0, 18, 1, 2, 1, 1, 1, 1,
604
1, 8, 8, 10, 10, 5, 5, 1, 2, 1,
605
1, 1, 1, 8, 8, 10, 10, 12, 12, 10,
606
9, 8, 13, 13, 11, 10, 1, 2, 0, 9,
607
0, 9, 1, 1, 1, 2, 1, 1, 0, 8,
608
8, 1, 0, 6, 1, 0, 1, 2, 0, 9,
612
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
613
STATE-NUM when YYTABLE doesn't specify something else to do. Zero
614
means the default is an error. */
615
static const unsigned char yydefact[] =
617
0, 5, 0, 2, 0, 3, 0, 4, 0, 1,
618
0, 0, 54, 0, 0, 0, 9, 0, 47, 0,
619
49, 55, 56, 57, 58, 59, 50, 51, 0, 13,
620
146, 0, 0, 0, 28, 17, 18, 19, 20, 0,
621
0, 0, 0, 0, 48, 0, 53, 99, 100, 101,
622
102, 103, 0, 0, 147, 0, 0, 0, 0, 0,
623
29, 0, 0, 0, 0, 0, 0, 0, 152, 153,
624
0, 0, 0, 14, 0, 0, 0, 0, 0, 0,
625
0, 33, 0, 0, 0, 0, 0, 0, 0, 0,
626
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
627
0, 38, 31, 32, 0, 0, 0, 0, 0, 0,
628
0, 0, 0, 0, 15, 16, 0, 0, 0, 0,
629
0, 0, 0, 0, 40, 67, 0, 0, 0, 0,
630
0, 0, 0, 0, 150, 148, 0, 21, 0, 0,
631
0, 0, 0, 30, 0, 0, 0, 43, 70, 0,
632
0, 0, 0, 0, 0, 0, 0, 0, 0, 158,
633
158, 22, 23, 24, 25, 26, 27, 0, 0, 0,
634
0, 11, 0, 0, 0, 0, 0, 0, 69, 71,
635
73, 74, 75, 76, 77, 78, 82, 81, 80, 0,
636
0, 0, 64, 0, 0, 0, 0, 0, 0, 0,
637
0, 0, 154, 156, 157, 0, 0, 37, 0, 0,
638
0, 0, 10, 0, 0, 0, 0, 0, 0, 0,
639
0, 68, 72, 0, 0, 63, 0, 0, 0, 0,
640
0, 0, 0, 0, 0, 151, 155, 149, 0, 34,
641
39, 0, 0, 162, 0, 0, 0, 0, 0, 0,
642
0, 0, 0, 62, 0, 66, 65, 0, 0, 104,
643
0, 0, 0, 36, 41, 42, 0, 7, 161, 0,
644
0, 0, 0, 0, 0, 0, 0, 61, 60, 0,
645
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
646
0, 0, 0, 83, 0, 0, 0, 0, 0, 0,
647
0, 0, 114, 116, 117, 118, 119, 120, 0, 0,
648
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
649
98, 106, 0, 0, 0, 0, 0, 0, 0, 0,
650
0, 0, 105, 115, 0, 0, 0, 165, 0, 0,
651
0, 0, 0, 0, 0, 0, 0, 0, 0, 94,
652
0, 0, 108, 0, 0, 0, 0, 0, 0, 0,
653
0, 0, 0, 0, 0, 0, 164, 166, 0, 0,
654
0, 0, 79, 0, 91, 0, 0, 0, 84, 95,
655
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
656
0, 0, 159, 160, 0, 163, 167, 0, 87, 0,
657
0, 0, 92, 93, 0, 0, 107, 110, 0, 0,
658
0, 0, 0, 0, 0, 126, 125, 112, 0, 86,
659
85, 0, 0, 96, 97, 0, 109, 0, 0, 0,
660
0, 0, 0, 0, 0, 0, 0, 90, 0, 0,
661
0, 0, 0, 0, 127, 130, 129, 132, 131, 0,
662
0, 0, 0, 0, 0, 0, 0, 0, 89, 88,
663
0, 0, 0, 0, 0, 0, 0, 0, 111, 128,
664
122, 121, 0, 0, 141, 0, 0, 0, 113, 168,
665
0, 0, 0, 0, 0, 0, 0, 0, 140, 0,
666
0, 0, 0, 0, 171, 0, 0, 0, 0, 0,
667
0, 0, 0, 139, 145, 0, 124, 123, 0, 0,
668
170, 172, 0, 0, 0, 0, 0, 0, 0, 0,
669
144, 0, 169, 173, 0, 0, 0, 0, 0, 0,
670
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
671
0, 174, 134, 133, 0, 0, 0, 0, 0, 0,
672
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
673
136, 135, 0, 0, 0, 0, 138, 137, 0, 0,
677
/* YYDEFGOTO[NTERM-NUM]. */
678
static const short yydefgoto[] =
680
-1, 2, 3, 4, 5, 6, 211, 7, 8, 11,
681
34, 35, 36, 37, 38, 60, 81, 101, 102, 103,
682
124, 147, 171, 16, 17, 18, 19, 20, 21, 22,
683
23, 24, 25, 26, 27, 148, 177, 178, 179, 320,
684
180, 181, 182, 183, 184, 185, 186, 187, 188, 348,
685
349, 46, 47, 281, 48, 350, 49, 382, 50, 425,
686
51, 434, 301, 302, 443, 444, 445, 446, 303, 304,
687
305, 447, 448, 306, 307, 29, 30, 160, 159, 70,
688
201, 202, 203, 204, 267, 268, 365, 366, 367, 494,
692
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
694
#define YYPACT_NINF -425
695
static const short yypact[] =
697
42, -425, 18, -425, -4, -425, 86, -425, 5, -425,
698
96, 27, -425, 23, 97, 100, -425, 12, -425, 59,
699
-425, -425, -425, -425, -425, -425, -425, -425, 101, 5,
700
-425, 79, 85, 104, 58, -425, -425, -425, -425, 94,
701
106, 117, 147, 149, -425, 107, -425, -425, -425, -425,
702
-425, -425, 175, 175, -425, -1, 154, 139, 134, 111,
703
72, 121, 177, 178, 179, 180, 50, 181, -425, -425,
704
182, 183, 184, -425, 185, 186, 187, 188, 189, 190,
705
158, 162, 161, 194, 195, 196, 197, 198, 199, 200,
706
166, 165, 168, 170, 205, 206, 207, 208, 209, 210,
707
191, 193, -425, -425, 192, 66, 211, 213, 214, 212,
708
216, 215, 201, 202, -425, -425, 1, 217, 219, 220,
709
143, 203, 221, 204, 218, -425, 95, 222, 225, 226,
710
227, 105, 228, 231, -425, -425, 223, -425, 224, 229,
711
230, 232, 233, -425, 236, 238, 234, 235, 48, 112,
712
239, 237, 240, 242, 243, 244, 245, 246, 247, 241,
713
241, -425, -425, -425, -425, -425, -425, 248, 249, 250,
714
115, 252, 119, 120, 251, 124, 253, 254, 48, -425,
715
-425, -425, -425, -425, -425, -425, -425, -425, -425, 255,
716
257, 256, -425, 258, 264, 268, 271, 272, 259, 273,
717
125, -8, -425, -425, -425, -5, -2, -425, 260, 274,
718
275, 15, -425, 276, 279, 280, 283, 285, 287, 289,
719
290, -425, -425, 293, 262, -425, 295, 265, 266, 296,
720
298, 270, 299, 302, 303, -425, -425, -425, 277, -425,
721
-425, 278, 281, 282, 304, 305, 306, 307, 309, 312,
722
313, 284, 286, -425, 288, -425, -425, 314, 317, -425,
723
319, 320, 321, -425, -425, -425, 292, -425, -425, 324,
724
325, 326, 327, 328, 329, 330, 300, -425, -425, 301,
725
332, 88, 334, 335, 336, 308, 337, 338, 339, 341,
726
342, 116, 343, -425, 315, 2, 128, 316, 318, 129,
727
132, 30, -425, -425, -425, -425, -425, -425, 344, 345,
728
348, 322, 350, 351, 352, 354, 355, 353, 357, 356,
729
133, -425, 358, 331, 360, 361, 363, 364, 365, 366,
730
367, 368, -425, -425, 369, 370, 371, 346, 372, 374,
731
375, 376, 347, 377, 349, 378, 380, 382, -25, -425,
732
88, 359, -425, 383, 384, 385, 386, 387, 388, 389,
733
390, 362, 373, 379, 381, 391, 346, -425, 3, 392,
734
393, 394, -425, 395, -425, 396, 397, 398, -425, -425,
735
49, 400, 88, 399, 401, 402, 403, 404, 406, 405,
736
407, 408, -425, -425, 411, -425, -425, 410, -425, 409,
737
415, 416, -425, -425, 412, 413, -425, -425, 53, 417,
738
418, 118, 419, 420, 421, -425, -425, -425, 422, -425,
739
-425, 4, 424, -425, -425, 99, -425, 426, 428, 429,
740
433, 434, 435, 436, 99, 414, 423, -425, 425, 136,
741
137, 140, 141, 65, -425, -425, -425, -425, -425, 430,
742
427, 122, 431, 437, 438, 445, 75, 439, -425, -425,
743
448, 449, 450, 451, 452, 453, 454, 456, -425, -425,
744
-425, -425, 432, 457, -425, 123, 458, 460, -425, -425,
745
465, 466, 467, 468, 469, 471, 472, 473, -425, 442,
746
443, 476, 446, 447, 455, 477, 479, 480, 482, 484,
747
485, 486, 487, -425, -425, 459, -425, -425, 461, 462,
748
455, -425, 488, 489, 490, 493, 495, 496, 497, 498,
749
-425, 499, -425, -425, 500, 501, 503, 504, 505, 506,
750
507, 508, 478, 481, 475, 511, 512, 514, 515, 516,
751
517, -425, -425, -425, 518, 519, 520, 523, 524, 525,
752
526, 527, 528, 529, 494, 502, 533, 534, 532, 535,
753
-425, -425, 509, 510, 537, 539, -425, -425, 513, 521,
757
/* YYPGOTO[NTERM-NUM]. */
758
static const short yypgoto[] =
760
-425, -425, -425, -425, -425, -425, -425, 61, -425, -425,
761
-425, -425, -425, -425, -425, -425, -425, -425, -425, -425,
762
-425, -425, -425, 22, -425, 261, -425, -425, -425, -425,
763
-425, -425, -425, -425, -425, -425, -425, -425, 56, -425,
764
-425, -425, -425, -425, -425, -425, -425, -425, -425, -425,
765
-96, -425, -425, -425, -425, -425, -425, -425, -425, -425,
766
-425, -425, -342, -301, -181, -424, -425, -425, -425, -425,
767
-425, -425, -425, -425, -425, -425, 492, -425, -425, 522,
768
440, -172, -425, -425, -425, -425, -425, -425, -112, -425,
772
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
773
positive, shift that token. If negative, reduce the rule which
774
number is the opposite. If zero, do what YYDEFACT says.
775
If YYTABLE_NINF, syntax error. */
776
#define YYTABLE_NINF -53
777
static const short yytable[] =
779
333, 238, 72, 10, 136, 322, 397, 436, 380, 346,
780
378, 347, -45, 12, 200, -46, 12, 200, 9, 469,
781
13, 14, 15, 13, 14, 15, 28, 235, -52, 236,
782
237, -52, 469, 236, 73, 239, 137, 323, 398, 437,
783
408, -45, -8, 1, -46, 296, 33, 297, 298, -6,
784
-8, -8, -8, 87, 299, 300, 88, 39, -8, 172,
785
173, 174, 175, -12, 296, 332, 297, 298, 296, 126,
786
297, 298, 127, 299, 300, 45, 176, 299, 300, 333,
787
439, 59, 440, 441, 406, 55, -46, 12, 426, 442,
788
439, 56, 440, 441, 13, 14, 15, 61, 149, 442,
789
468, 150, -52, 296, 80, 297, 298, 333, 155, 62,
790
478, 156, 299, 300, 439, 189, 440, 441, 190, 317,
791
63, 429, 318, 442, 430, 472, 490, 82, 473, 491,
792
31, 40, 32, 41, 42, 52, 43, 53, 57, 77,
793
58, 66, 75, 67, 76, 78, 141, 79, 142, 209,
794
64, 210, 65, 213, 215, 214, 216, 74, 218, 233,
795
219, 234, 324, 328, 325, 329, 330, 346, 331, 347,
796
460, 462, 461, 463, 464, 466, 465, 467, 68, 69,
797
83, 84, 85, 86, 89, 90, 91, 92, 93, 94,
798
95, 96, 97, 98, 99, 100, 104, 105, 106, 107,
799
108, 112, 113, 114, 109, 110, 111, 115, 116, 117,
800
118, 119, 120, 123, 128, 121, 129, 130, 131, 132,
801
138, 133, 139, 140, 144, 151, 125, 122, 152, 153,
802
154, 157, 212, 243, 222, 134, 135, 158, 145, 167,
803
143, 168, 191, 193, 146, 194, 195, 196, 197, 198,
804
199, 206, 379, 456, 396, 523, 208, 0, 161, 162,
805
224, 223, 170, 200, 226, 164, 163, 227, 169, 165,
806
166, 228, 192, -12, 229, 230, 232, 0, 44, 244,
807
241, 242, 245, 246, 207, 217, 247, 220, 248, 221,
808
249, 225, 250, 251, 231, 240, 252, 253, 254, 257,
809
255, 258, 260, 256, 259, 261, 262, 269, 270, 271,
810
272, 266, 273, 264, 263, 274, 275, 279, 265, 276,
811
280, 277, 282, 283, 284, 278, 285, 286, 287, 288,
812
289, 290, 291, 292, 293, 295, 294, 308, 309, 310,
813
312, 313, 314, 311, 315, 316, 319, 334, 335, 321,
814
326, 336, 327, 338, 339, 340, 337, 341, 342, 343,
815
344, 351, 345, 353, 354, 352, 355, 356, 357, 358,
816
359, 360, 361, 362, 363, 368, 364, 369, 370, 371,
817
373, 375, 372, 376, 374, 377, 383, 384, 385, 386,
818
387, 388, 389, 390, 381, 399, 400, 401, 0, 391,
819
404, 405, 409, 0, 410, 411, 412, 413, 392, 414,
820
0, 0, 0, 0, 0, 394, 393, 418, 421, 422,
821
427, 428, 431, 432, 433, 0, 395, 438, 435, 449,
822
402, 450, 0, 403, 407, 451, 452, 453, 454, 455,
823
415, 476, 417, 475, 416, 419, 420, 423, 477, 457,
824
424, 480, 481, 482, 483, 484, 485, 486, 458, 487,
825
489, 492, 459, 493, 471, 470, 474, 488, 495, 496,
826
497, 498, 499, 479, 500, 501, 502, 503, 504, 505,
827
512, 506, 513, 514, 507, 515, 508, 516, 517, 518,
828
519, 524, 525, 526, 520, 521, 527, 522, 528, 529,
829
530, 531, 0, 533, 534, 532, 535, 536, 537, 538,
830
539, 540, 543, 541, 544, 545, 542, 546, 547, 548,
831
549, 54, 0, 552, 550, 551, 553, 554, 555, 560,
832
0, 0, 556, 557, 558, 559, 562, 563, 564, 561,
833
568, 565, 569, 0, 566, 0, 0, 567, 570, 0,
834
0, 0, 0, 0, 0, 0, 0, 0, 571, 0,
835
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
836
0, 0, 0, 0, 0, 71, 0, 0, 0, 0,
837
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
838
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
842
static const short yycheck[] =
844
301, 3, 3, 7, 3, 3, 3, 3, 350, 34,
845
35, 36, 0, 1, 22, 0, 1, 22, 0, 443,
846
8, 9, 10, 8, 9, 10, 21, 35, 16, 201,
847
35, 16, 456, 205, 35, 37, 35, 35, 35, 35,
848
382, 29, 0, 1, 29, 15, 19, 17, 18, 7,
849
8, 9, 10, 3, 24, 25, 6, 34, 16, 11,
850
12, 13, 14, 21, 15, 35, 17, 18, 15, 3,
851
17, 18, 6, 24, 25, 16, 28, 24, 25, 380,
852
15, 23, 17, 18, 35, 6, 0, 1, 35, 24,
853
15, 6, 17, 18, 8, 9, 10, 3, 3, 24,
854
35, 6, 16, 15, 32, 17, 18, 408, 3, 3,
855
35, 6, 24, 25, 15, 3, 17, 18, 6, 3,
856
3, 3, 6, 24, 6, 3, 3, 6, 6, 6,
857
34, 34, 36, 36, 34, 34, 36, 36, 34, 5,
858
36, 34, 3, 36, 5, 34, 3, 36, 5, 34,
859
3, 36, 3, 34, 34, 36, 36, 3, 34, 34,
860
36, 36, 34, 34, 36, 36, 34, 34, 36, 36,
861
34, 34, 36, 36, 34, 34, 36, 36, 3, 4,
862
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
863
3, 3, 3, 3, 36, 33, 35, 3, 3, 3,
864
3, 35, 37, 35, 6, 6, 6, 37, 3, 3,
865
3, 3, 3, 20, 3, 5, 3, 3, 6, 3,
866
3, 6, 3, 3, 3, 3, 34, 36, 3, 3,
867
3, 3, 171, 211, 178, 34, 34, 6, 34, 3,
868
37, 3, 3, 3, 26, 3, 3, 3, 3, 3,
869
3, 3, 348, 434, 366, 510, 6, -1, 35, 35,
870
3, 6, 27, 22, 6, 35, 37, 3, 34, 37,
871
37, 3, 35, 21, 3, 3, 3, -1, 17, 3,
872
6, 6, 3, 3, 35, 34, 3, 34, 3, 35,
873
3, 35, 3, 3, 35, 35, 3, 35, 3, 3,
874
35, 3, 3, 37, 34, 3, 3, 3, 3, 3,
875
3, 29, 3, 35, 37, 3, 3, 3, 37, 35,
876
3, 35, 3, 3, 3, 37, 34, 3, 3, 3,
877
3, 3, 3, 3, 34, 3, 35, 3, 3, 3,
878
3, 3, 3, 35, 3, 3, 3, 3, 3, 34,
879
34, 3, 34, 3, 3, 3, 34, 3, 3, 6,
880
3, 3, 6, 3, 3, 34, 3, 3, 3, 3,
881
3, 3, 3, 3, 3, 3, 30, 3, 3, 3,
882
3, 3, 35, 3, 35, 3, 3, 3, 3, 3,
883
3, 3, 3, 3, 35, 3, 3, 3, -1, 37,
884
3, 3, 3, -1, 3, 3, 3, 3, 35, 3,
885
-1, -1, -1, -1, -1, 34, 37, 6, 3, 3,
886
3, 3, 3, 3, 3, -1, 35, 3, 6, 3,
887
35, 3, -1, 37, 34, 6, 3, 3, 3, 3,
888
35, 3, 34, 6, 37, 35, 37, 35, 3, 35,
889
37, 3, 3, 3, 3, 3, 3, 3, 35, 3,
890
3, 3, 37, 3, 37, 35, 35, 35, 3, 3,
891
3, 3, 3, 34, 3, 3, 3, 35, 35, 3,
892
3, 35, 3, 3, 37, 3, 31, 3, 3, 3,
893
3, 3, 3, 3, 35, 34, 3, 35, 3, 3,
894
3, 3, -1, 3, 3, 6, 3, 3, 3, 3,
895
3, 3, 37, 35, 3, 3, 35, 3, 3, 3,
896
3, 29, -1, 3, 6, 6, 3, 3, 3, 35,
897
-1, -1, 6, 6, 6, 6, 3, 3, 6, 37,
898
3, 6, 3, -1, 35, -1, -1, 37, 35, -1,
899
-1, -1, -1, -1, -1, -1, -1, -1, 37, -1,
900
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
901
-1, -1, -1, -1, -1, 53, -1, -1, -1, -1,
902
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
903
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
907
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
908
symbol of state STATE-NUM. */
909
static const unsigned char yystos[] =
911
0, 1, 39, 40, 41, 42, 43, 45, 46, 0,
912
7, 47, 1, 8, 9, 10, 61, 62, 63, 64,
913
65, 66, 67, 68, 69, 70, 71, 72, 21, 113,
914
114, 34, 36, 19, 48, 49, 50, 51, 52, 34,
915
34, 36, 34, 36, 63, 16, 89, 90, 92, 94,
916
96, 98, 34, 36, 114, 6, 6, 34, 36, 23,
917
53, 3, 3, 3, 3, 3, 34, 36, 3, 4,
918
117, 117, 3, 35, 3, 3, 5, 5, 34, 36,
919
32, 54, 6, 3, 3, 3, 3, 3, 6, 3,
920
3, 3, 3, 3, 3, 3, 3, 3, 3, 36,
921
33, 55, 56, 57, 35, 3, 3, 3, 3, 6,
922
6, 6, 35, 37, 35, 37, 3, 3, 3, 3,
923
3, 5, 36, 20, 58, 34, 3, 6, 3, 3,
924
3, 6, 3, 6, 34, 34, 3, 35, 3, 3,
925
3, 3, 5, 37, 3, 34, 26, 59, 73, 3,
926
6, 3, 3, 3, 3, 3, 6, 3, 6, 116,
927
115, 35, 35, 37, 35, 37, 37, 3, 3, 34,
928
27, 60, 11, 12, 13, 14, 28, 74, 75, 76,
929
78, 79, 80, 81, 82, 83, 84, 85, 86, 3,
930
6, 3, 35, 3, 3, 3, 3, 3, 3, 3,
931
22, 118, 119, 120, 121, 118, 3, 35, 6, 34,
932
36, 44, 45, 34, 36, 34, 36, 34, 34, 36,
933
34, 35, 76, 6, 3, 35, 6, 3, 3, 3,
934
3, 35, 3, 34, 36, 35, 119, 35, 3, 37,
935
35, 6, 6, 61, 3, 3, 3, 3, 3, 3,
936
3, 3, 3, 35, 3, 35, 37, 3, 3, 34,
937
3, 3, 3, 37, 35, 37, 29, 122, 123, 3,
938
3, 3, 3, 3, 3, 3, 35, 35, 37, 3,
939
3, 91, 3, 3, 3, 34, 3, 3, 3, 3,
940
3, 3, 3, 34, 35, 3, 15, 17, 18, 24,
941
25, 100, 101, 106, 107, 108, 111, 112, 3, 3,
942
3, 35, 3, 3, 3, 3, 3, 3, 6, 3,
943
77, 34, 3, 35, 34, 36, 34, 34, 34, 36,
944
34, 36, 35, 101, 3, 3, 3, 34, 3, 3,
945
3, 3, 3, 6, 3, 6, 34, 36, 87, 88,
946
93, 3, 34, 3, 3, 3, 3, 3, 3, 3,
947
3, 3, 3, 3, 30, 124, 125, 126, 3, 3,
948
3, 3, 35, 3, 35, 3, 3, 3, 35, 88,
949
100, 35, 95, 3, 3, 3, 3, 3, 3, 3,
950
3, 37, 35, 37, 34, 35, 126, 3, 35, 3,
951
3, 3, 35, 37, 3, 3, 35, 34, 100, 3,
952
3, 3, 3, 3, 3, 35, 37, 34, 6, 35,
953
37, 3, 3, 35, 37, 97, 35, 3, 3, 3,
954
6, 3, 3, 3, 99, 6, 3, 35, 3, 15,
955
17, 18, 24, 102, 103, 104, 105, 109, 110, 3,
956
3, 6, 3, 3, 3, 3, 102, 35, 35, 37,
957
34, 36, 34, 36, 34, 36, 34, 36, 35, 103,
958
35, 37, 3, 6, 35, 6, 3, 3, 35, 34,
959
3, 3, 3, 3, 3, 3, 3, 3, 35, 3,
960
3, 6, 3, 3, 127, 3, 3, 3, 3, 3,
961
3, 3, 3, 35, 35, 3, 35, 37, 31, 128,
962
129, 130, 3, 3, 3, 3, 3, 3, 3, 3,
963
35, 34, 35, 130, 3, 3, 3, 3, 3, 3,
964
3, 3, 6, 3, 3, 3, 3, 3, 3, 3,
965
3, 35, 35, 37, 3, 3, 3, 3, 3, 3,
966
6, 6, 3, 3, 3, 3, 6, 6, 6, 6,
967
35, 37, 3, 3, 6, 6, 35, 37, 3, 3,
971
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
972
# define YYSIZE_T __SIZE_TYPE__
974
#if ! defined (YYSIZE_T) && defined (size_t)
975
# define YYSIZE_T size_t
977
#if ! defined (YYSIZE_T)
978
# if defined (__STDC__) || defined (__cplusplus)
979
# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
980
# define YYSIZE_T size_t
983
#if ! defined (YYSIZE_T)
984
# define YYSIZE_T unsigned int
987
#define yyerrok (yyerrstatus = 0)
988
#define yyclearin (yychar = YYEMPTY)
992
#define YYACCEPT goto yyacceptlab
993
#define YYABORT goto yyabortlab
994
#define YYERROR goto yyerrlab1
996
/* Like YYERROR except do call yyerror. This remains here temporarily
997
to ease the transition to the new meaning of YYERROR, for GCC.
998
Once GCC version 2 has supplanted version 1, this can go. */
1000
#define YYFAIL goto yyerrlab
1002
#define YYRECOVERING() (!!yyerrstatus)
1004
#define YYBACKUP(Token, Value) \
1006
if (yychar == YYEMPTY && yylen == 1) \
1010
yytoken = YYTRANSLATE (yychar); \
1016
yyerror ("syntax error: cannot back up");\
1022
#define YYERRCODE 256
1024
/* YYLLOC_DEFAULT -- Compute the default location (before the actions
1027
#ifndef YYLLOC_DEFAULT
1028
# define YYLLOC_DEFAULT(Current, Rhs, N) \
1029
Current.first_line = Rhs[1].first_line; \
1030
Current.first_column = Rhs[1].first_column; \
1031
Current.last_line = Rhs[N].last_line; \
1032
Current.last_column = Rhs[N].last_column;
1035
/* YYLEX -- calling `yylex' with the right arguments. */
1038
# define YYLEX yylex (YYLEX_PARAM)
1040
# define YYLEX yylex ()
1043
/* Enable debugging if requested. */
1047
# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1048
# define YYFPRINTF fprintf
1051
# define YYDPRINTF(Args) \
1057
# define YYDSYMPRINT(Args) \
1063
# define YYDSYMPRINTF(Title, Token, Value, LocationType) \
1067
YYFPRINTF (stderr, "%s ", Title); \
1068
yysymprint (stderr, \
1070
YYFPRINTF (stderr, "\n"); \
1074
/*------------------------------------------------------------------.
1075
| yy_stack_print -- Print the state stack from its BOTTOM up to its |
1077
`------------------------------------------------------------------*/
1079
#if defined (__STDC__) || defined (__cplusplus)
1081
yy_stack_print (short *bottom, short *top)
1084
yy_stack_print (bottom, top)
1089
YYFPRINTF (stderr, "Stack now");
1090
for (/* Nothing. */; bottom <= top; ++bottom)
1091
YYFPRINTF (stderr, " %d", *bottom);
1092
YYFPRINTF (stderr, "\n");
1095
# define YY_STACK_PRINT(Bottom, Top) \
1098
yy_stack_print ((Bottom), (Top)); \
1102
/*------------------------------------------------.
1103
| Report that the YYRULE is going to be reduced. |
1104
`------------------------------------------------*/
1106
#if defined (__STDC__) || defined (__cplusplus)
1108
yy_reduce_print (int yyrule)
1111
yy_reduce_print (yyrule)
1116
unsigned int yylineno = yyrline[yyrule];
1117
YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
1118
yyrule - 1, yylineno);
1119
/* Print the symbols being reduced, and their result. */
1120
for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
1121
YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
1122
YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
1125
# define YY_REDUCE_PRINT(Rule) \
1128
yy_reduce_print (Rule); \
1131
/* Nonzero means print parse trace. It is left uninitialized so that
1132
multiple parsers can coexist. */
1134
#else /* !YYDEBUG */
1135
# define YYDPRINTF(Args)
1136
# define YYDSYMPRINT(Args)
1137
# define YYDSYMPRINTF(Title, Token, Value, LocationType)
1138
# define YY_STACK_PRINT(Bottom, Top)
1139
# define YY_REDUCE_PRINT(Rule)
1140
#endif /* !YYDEBUG */
1143
/* YYINITDEPTH -- initial size of the parser's stacks. */
1145
# define YYINITDEPTH 200
1148
/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1149
if the built-in stack extension method is used).
1151
Do not make this value too large; the results are undefined if
1152
SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
1153
evaluated with infinite-precision integer arithmetic. */
1160
# define YYMAXDEPTH 10000
1168
# if defined (__GLIBC__) && defined (_STRING_H)
1169
# define yystrlen strlen
1171
/* Return the length of YYSTR. */
1173
# if defined (__STDC__) || defined (__cplusplus)
1174
yystrlen (const char *yystr)
1180
register const char *yys = yystr;
1182
while (*yys++ != '\0')
1185
return yys - yystr - 1;
1191
# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
1192
# define yystpcpy stpcpy
1194
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1197
# if defined (__STDC__) || defined (__cplusplus)
1198
yystpcpy (char *yydest, const char *yysrc)
1200
yystpcpy (yydest, yysrc)
1205
register char *yyd = yydest;
1206
register const char *yys = yysrc;
1208
while ((*yyd++ = *yys++) != '\0')
1216
#endif /* !YYERROR_VERBOSE */
1221
/*--------------------------------.
1222
| Print this symbol on YYOUTPUT. |
1223
`--------------------------------*/
1225
#if defined (__STDC__) || defined (__cplusplus)
1227
yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
1230
yysymprint (yyoutput, yytype, yyvaluep)
1236
/* Pacify ``unused variable'' warnings. */
1239
if (yytype < YYNTOKENS)
1241
YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1243
YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1247
YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1254
YYFPRINTF (yyoutput, ")");
1257
#endif /* ! YYDEBUG */
1258
/*-----------------------------------------------.
1259
| Release the memory associated to this symbol. |
1260
`-----------------------------------------------*/
1262
#if defined (__STDC__) || defined (__cplusplus)
1264
yydestruct (int yytype, YYSTYPE *yyvaluep)
1267
yydestruct (yytype, yyvaluep)
1272
/* Pacify ``unused variable'' warnings. */
1284
/* Prevent warnings from -Wmissing-prototypes. */
1286
#ifdef YYPARSE_PARAM
1287
# if defined (__STDC__) || defined (__cplusplus)
1288
int yyparse (void *YYPARSE_PARAM);
1292
#else /* ! YYPARSE_PARAM */
1293
#if defined (__STDC__) || defined (__cplusplus)
1298
#endif /* ! YYPARSE_PARAM */
1302
/* The lookahead symbol. */
1305
/* The semantic value of the lookahead symbol. */
1308
/* Number of syntax errors so far. */
1317
#ifdef YYPARSE_PARAM
1318
# if defined (__STDC__) || defined (__cplusplus)
1319
int yyparse (void *YYPARSE_PARAM)
1321
int yyparse (YYPARSE_PARAM)
1322
void *YYPARSE_PARAM;
1324
#else /* ! YYPARSE_PARAM */
1325
#if defined (__STDC__) || defined (__cplusplus)
1336
register int yystate;
1339
/* Number of tokens to shift before error messages enabled. */
1341
/* Lookahead token as an internal (translated) token number. */
1344
/* Three stacks and their tools:
1345
`yyss': related to states,
1346
`yyvs': related to semantic values,
1347
`yyls': related to locations.
1349
Refer to the stacks thru separate pointers, to allow yyoverflow
1350
to reallocate them elsewhere. */
1352
/* The state stack. */
1353
short yyssa[YYINITDEPTH];
1354
short *yyss = yyssa;
1355
register short *yyssp;
1357
/* The semantic value stack. */
1358
YYSTYPE yyvsa[YYINITDEPTH];
1359
YYSTYPE *yyvs = yyvsa;
1360
register YYSTYPE *yyvsp;
1364
#define YYPOPSTACK (yyvsp--, yyssp--)
1366
YYSIZE_T yystacksize = YYINITDEPTH;
1368
/* The variables used to return semantic value and location from the
1373
/* When reducing, the number of symbols on the RHS of the reduced
1377
YYDPRINTF ((stderr, "Starting parse\n"));
1382
yychar = YYEMPTY; /* Cause a token to be read. */
1384
/* Initialize stack pointers.
1385
Waste one element of value and location stack
1386
so that they stay on the same level as the state stack.
1387
The wasted elements are never initialized. */
1394
/*------------------------------------------------------------.
1395
| yynewstate -- Push a new state, which is found in yystate. |
1396
`------------------------------------------------------------*/
1398
/* In all cases, when you get here, the value and location stacks
1399
have just been pushed. so pushing a state here evens the stacks.
1406
if (yyss + yystacksize - 1 <= yyssp)
1408
/* Get the current used size of the three stacks, in elements. */
1409
YYSIZE_T yysize = yyssp - yyss + 1;
1413
/* Give user a chance to reallocate the stack. Use copies of
1414
these so that the &'s don't force the real ones into
1416
YYSTYPE *yyvs1 = yyvs;
1417
short *yyss1 = yyss;
1420
/* Each stack pointer address is followed by the size of the
1421
data in use in that stack, in bytes. This used to be a
1422
conditional around just the two extra args, but that might
1423
be undefined if yyoverflow is a macro. */
1424
yyoverflow ("parser stack overflow",
1425
&yyss1, yysize * sizeof (*yyssp),
1426
&yyvs1, yysize * sizeof (*yyvsp),
1433
#else /* no yyoverflow */
1434
# ifndef YYSTACK_RELOCATE
1437
/* Extend the stack our own way. */
1438
if (YYMAXDEPTH <= yystacksize)
1441
if (YYMAXDEPTH < yystacksize)
1442
yystacksize = YYMAXDEPTH;
1445
short *yyss1 = yyss;
1446
union yyalloc *yyptr =
1447
(union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1450
YYSTACK_RELOCATE (yyss);
1451
YYSTACK_RELOCATE (yyvs);
1453
# undef YYSTACK_RELOCATE
1455
YYSTACK_FREE (yyss1);
1458
#endif /* no yyoverflow */
1460
yyssp = yyss + yysize - 1;
1461
yyvsp = yyvs + yysize - 1;
1464
YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1465
(unsigned long int) yystacksize));
1467
if (yyss + yystacksize - 1 <= yyssp)
1471
YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1480
/* Do appropriate processing given the current state. */
1481
/* Read a lookahead token if we need one and don't already have one. */
1484
/* First try to decide what to do without reference to lookahead token. */
1486
yyn = yypact[yystate];
1487
if (yyn == YYPACT_NINF)
1490
/* Not known => get a lookahead token if don't already have one. */
1492
/* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
1493
if (yychar == YYEMPTY)
1495
YYDPRINTF ((stderr, "Reading a token: "));
1499
if (yychar <= YYEOF)
1501
yychar = yytoken = YYEOF;
1502
YYDPRINTF ((stderr, "Now at end of input.\n"));
1506
yytoken = YYTRANSLATE (yychar);
1507
YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
1510
/* If the proper action on seeing token YYTOKEN is to reduce or to
1511
detect an error, take that action. */
1513
if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1518
if (yyn == 0 || yyn == YYTABLE_NINF)
1527
/* Shift the lookahead token. */
1528
YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
1530
/* Discard the token being shifted unless it is eof. */
1531
if (yychar != YYEOF)
1537
/* Count tokens shifted since error; after three, turn off error
1546
/*-----------------------------------------------------------.
1547
| yydefault -- do the default action for the current state. |
1548
`-----------------------------------------------------------*/
1550
yyn = yydefact[yystate];
1556
/*-----------------------------.
1557
| yyreduce -- Do a reduction. |
1558
`-----------------------------*/
1560
/* yyn is the number of a rule to reduce with. */
1563
/* If YYLEN is nonzero, implement the default value of the action:
1566
Otherwise, the following line sets YYVAL to garbage.
1567
This behavior is undocumented and Bison
1568
users should not rely upon it. Assigning to YYVAL
1569
unconditionally makes the parser a bit smaller, and it avoids a
1570
GCC warning that YYVAL may be used uninitialized. */
1571
yyval = yyvsp[1-yylen];
1574
YY_REDUCE_PRINT (yyn);
1578
#line 96 "parse_y.y"
1583
#line 100 "parse_y.y"
1585
/* reset flags for 'used layers';
1586
* init font and data pointers
1592
Message("illegal fileformat\n");
1595
for (i = 0; i < MAX_LAYER + 2; i++)
1596
LayerFlag[i] = False;
1597
yyFont = &yyPCB->Font;
1598
yyData = yyPCB->Data;
1603
#line 130 "parse_y.y"
1605
/* reset flags for 'used layers';
1606
* init font and data pointers
1610
if (!yyData || !yyFont)
1612
Message("illegal fileformat\n");
1615
for (i = 0; i < MAX_LAYER + 2; i++)
1616
LayerFlag[i] = False;
1621
#line 154 "parse_y.y"
1623
/* mark all symbols invalid */
1628
Message("illegal fileformat\n");
1631
yyFont->Valid = False;
1632
for (i = 0; i <= MAX_FONTPOSITION; i++)
1633
yyFont->Symbol[i].Valid = False;
1638
#line 168 "parse_y.y"
1640
yyFont->Valid = True;
1641
SetFontInfo(yyFont);
1646
#line 176 "parse_y.y"
1648
yyPCB->Name = yyvsp[-1].string;
1649
yyPCB->MaxWidth = MAX_COORD;
1650
yyPCB->MaxHeight = MAX_COORD;
1655
#line 182 "parse_y.y"
1657
yyPCB->Name = yyvsp[-3].string;
1658
yyPCB->MaxWidth = yyvsp[-2].number*100;
1659
yyPCB->MaxHeight = yyvsp[-1].number*100;
1664
#line 188 "parse_y.y"
1666
yyPCB->Name = yyvsp[-3].string;
1667
yyPCB->MaxWidth = yyvsp[-2].number;
1668
yyPCB->MaxHeight = yyvsp[-1].number;
1673
#line 203 "parse_y.y"
1675
yyPCB->Grid = yyvsp[-3].number*100;
1676
yyPCB->GridOffsetX = yyvsp[-2].number*100;
1677
yyPCB->GridOffsetY = yyvsp[-1].number*100;
1682
#line 211 "parse_y.y"
1684
yyPCB->Grid = yyvsp[-4].number*100;
1685
yyPCB->GridOffsetX = yyvsp[-3].number*100;
1686
yyPCB->GridOffsetY = yyvsp[-2].number*100;
1687
if (yyvsp[-1].number)
1688
Settings.DrawGrid = True;
1690
Settings.DrawGrid = False;
1695
#line 224 "parse_y.y"
1697
yyPCB->Grid = yyvsp[-4].floating*100;
1698
yyPCB->GridOffsetX = yyvsp[-3].number*100;
1699
yyPCB->GridOffsetY = yyvsp[-2].number*100;
1700
if (yyvsp[-1].number)
1701
Settings.DrawGrid = True;
1703
Settings.DrawGrid = False;
1708
#line 236 "parse_y.y"
1710
yyPCB->Grid = yyvsp[-4].floating;
1711
yyPCB->GridOffsetX = yyvsp[-3].number;
1712
yyPCB->GridOffsetY = yyvsp[-2].number;
1713
if (yyvsp[-1].number)
1714
Settings.DrawGrid = True;
1716
Settings.DrawGrid = False;
1721
#line 249 "parse_y.y"
1723
yyPCB->CursorX = yyvsp[-3].number*100;
1724
yyPCB->CursorY = yyvsp[-2].number*100;
1725
yyPCB->Zoom = yyvsp[-1].number*2;
1730
#line 255 "parse_y.y"
1732
yyPCB->CursorX = yyvsp[-3].number;
1733
yyPCB->CursorY = yyvsp[-2].number;
1734
yyPCB->Zoom = yyvsp[-1].number;
1739
#line 261 "parse_y.y"
1741
yyPCB->CursorX = yyvsp[-3].number;
1742
yyPCB->CursorY = yyvsp[-2].number;
1743
yyPCB->Zoom = yyvsp[-1].floating;
1748
#line 272 "parse_y.y"
1750
yyPCB->ThermScale = yyvsp[-1].floating;
1755
#line 285 "parse_y.y"
1757
Settings.Bloat = yyvsp[-3].number;
1758
Settings.Shrink = yyvsp[-2].number;
1759
Settings.minWid = yyvsp[-1].number;
1764
#line 295 "parse_y.y"
1766
Settings.Bloat = yyvsp[-4].number;
1767
Settings.Shrink = yyvsp[-3].number;
1768
Settings.minWid = yyvsp[-2].number;
1769
Settings.minSlk = yyvsp[-1].number;
1774
#line 305 "parse_y.y"
1776
yyPCB->Flags = yyvsp[-1].number & PCB_FLAGS;
1781
#line 313 "parse_y.y"
1783
if (ParseGroupString(yyvsp[-1].string, &yyPCB->LayerGroups))
1785
Message("illegal layer-group string\n");
1792
#line 324 "parse_y.y"
1794
if (ParseRouteString(yyvsp[-1].string, &yyPCB->RouteStyle[0], 100))
1796
Message("illegal route-style string\n");
1803
#line 332 "parse_y.y"
1805
if (ParseRouteString(yyvsp[-1].string, &yyPCB->RouteStyle[0], 1))
1807
Message("illegal route-style string\n");
1814
#line 358 "parse_y.y"
1816
/* clear pointer to force memory allocation by
1817
* the appropriate subroutine
1824
#line 365 "parse_y.y"
1829
#line 379 "parse_y.y"
1831
CreateNewVia(yyData, yyvsp[-8].number, yyvsp[-7].number, yyvsp[-6].number, yyvsp[-5].number, yyvsp[-4].number, yyvsp[-3].number, yyvsp[-2].string,
1832
(yyvsp[-1].number & OBJ_FLAGS) | VIAFLAG);
1833
SaveFree(yyvsp[-2].string);
1838
#line 389 "parse_y.y"
1840
CreateNewVia(yyData, yyvsp[-8].number*100, yyvsp[-7].number*100, yyvsp[-6].number*100, yyvsp[-5].number*100, yyvsp[-4].number*100, yyvsp[-3].number*100, yyvsp[-2].string,
1841
(yyvsp[-1].number & OBJ_FLAGS) | VIAFLAG);
1842
SaveFree(yyvsp[-2].string);
1847
#line 400 "parse_y.y"
1849
CreateNewVia(yyData, yyvsp[-7].number*100, yyvsp[-6].number*100, yyvsp[-5].number*100, yyvsp[-4].number*100, (yyvsp[-5].number + yyvsp[-4].number)*100, yyvsp[-3].number*100, yyvsp[-2].string,
1850
(yyvsp[-1].number & OBJ_FLAGS) | VIAFLAG);
1851
SaveFree(yyvsp[-2].string);
1856
#line 410 "parse_y.y"
1858
CreateNewVia(yyData, yyvsp[-6].number*100, yyvsp[-5].number*100, yyvsp[-4].number*100, 200*GROUNDPLANEFRAME,
1859
(yyvsp[-4].number + 2*MASKFRAME)*100, yyvsp[-3].number*100, yyvsp[-2].string, (yyvsp[-1].number & OBJ_FLAGS) | VIAFLAG);
1860
SaveFree(yyvsp[-2].string);
1865
#line 420 "parse_y.y"
1867
BDimension hole = (yyvsp[-3].number *DEFAULT_DRILLINGHOLE);
1869
/* make sure that there's enough copper left */
1870
if (yyvsp[-3].number -hole < MIN_PINORVIACOPPER &&
1871
yyvsp[-3].number > MIN_PINORVIACOPPER)
1872
hole = yyvsp[-3].number -MIN_PINORVIACOPPER;
1874
CreateNewVia(yyData, yyvsp[-5].number*100, yyvsp[-4].number*100, yyvsp[-3].number*100, 200*GROUNDPLANEFRAME,
1875
(yyvsp[-3].number + 2*MASKFRAME)*100, hole, yyvsp[-2].string, (yyvsp[-1].number & OBJ_FLAGS) | VIAFLAG);
1876
SaveFree(yyvsp[-2].string);
1881
#line 436 "parse_y.y"
1883
CreateNewRat(yyData, yyvsp[-7].number, yyvsp[-6].number, yyvsp[-4].number, yyvsp[-3].number, yyvsp[-5].number, yyvsp[-2].number,
1884
Settings.RatThickness, (yyvsp[-1].number & OBJ_FLAGS));
1889
#line 441 "parse_y.y"
1891
CreateNewRat(yyData, yyvsp[-7].number*100, yyvsp[-6].number*100, yyvsp[-4].number*100, yyvsp[-3].number*100, yyvsp[-5].number, yyvsp[-2].number,
1892
Settings.RatThickness, (yyvsp[-1].number & OBJ_FLAGS));
1897
#line 450 "parse_y.y"
1899
if (yyvsp[-3].number <= 0 || yyvsp[-3].number > MAX_LAYER + 2)
1901
yyerror("Layernumber out of range");
1904
if (LayerFlag[yyvsp[-3].number-1])
1906
yyerror("Layernumber used twice");
1909
Layer = &yyData->Layer[yyvsp[-3].number-1];
1911
/* memory for name is alread allocated */
1912
Layer->Name = yyvsp[-2].string;
1913
LayerFlag[yyvsp[-3].number-1] = True;
1918
#line 489 "parse_y.y"
1920
CreateNewPolygonFromRectangle(Layer,
1921
yyvsp[-5].number*100, yyvsp[-4].number*100, (yyvsp[-5].number+yyvsp[-3].number)*100, (yyvsp[-4].number+yyvsp[-2].number)*100, yyvsp[-1].number & OBJ_FLAGS);
1926
#line 498 "parse_y.y"
1928
Polygon = CreateNewPolygon(Layer, yyvsp[-2].number & OBJ_FLAGS);
1933
#line 502 "parse_y.y"
1936
if (Polygon->PointN >= 3)
1937
SetPolygonBoundingBox(Polygon);
1940
Message("WARNING parsing file '%s'\n"
1942
" description: 'ignored polygon (< 3 points)'\n",
1943
yyfilename, yylineno);
1944
DestroyObject(PCB->Data, POLYGON_TYPE, Layer, Polygon, Polygon);
1950
#line 520 "parse_y.y"
1952
CreateNewLineOnLayer(Layer, yyvsp[-7].number, yyvsp[-6].number, yyvsp[-5].number, yyvsp[-4].number, yyvsp[-3].number, yyvsp[-2].number, yyvsp[-1].number & OBJ_FLAGS);
1957
#line 528 "parse_y.y"
1959
CreateNewLineOnLayer(Layer, yyvsp[-7].number*100, yyvsp[-6].number*100, yyvsp[-5].number*100, yyvsp[-4].number*100, yyvsp[-3].number*100, yyvsp[-2].number*100, yyvsp[-1].number & OBJ_FLAGS);
1964
#line 536 "parse_y.y"
1966
/* elliminate old-style rat-lines */
1967
if ((yyvsp[-1].number & RATFLAG) == 0)
1968
CreateNewLineOnLayer(Layer, yyvsp[-6].number*100, yyvsp[-5].number*100, yyvsp[-4].number*100, yyvsp[-3].number*100, yyvsp[-2].number*100,
1969
200*GROUNDPLANEFRAME, yyvsp[-1].number & OBJ_FLAGS);
1974
#line 547 "parse_y.y"
1976
CreateNewArcOnLayer(Layer, yyvsp[-9].number, yyvsp[-8].number, yyvsp[-7].number, yyvsp[-3].number, yyvsp[-2].number, yyvsp[-5].number, yyvsp[-4].number, yyvsp[-1].number & OBJ_FLAGS);
1981
#line 555 "parse_y.y"
1983
CreateNewArcOnLayer(Layer, yyvsp[-9].number*100, yyvsp[-8].number*100, yyvsp[-7].number*100, yyvsp[-3].number, yyvsp[-2].number, yyvsp[-5].number*100, yyvsp[-4].number*100, yyvsp[-1].number & OBJ_FLAGS);
1988
#line 563 "parse_y.y"
1990
CreateNewArcOnLayer(Layer, yyvsp[-8].number*100, yyvsp[-7].number*100, yyvsp[-6].number*100, yyvsp[-3].number, yyvsp[-2].number,
1991
yyvsp[-4].number*100, 200*GROUNDPLANEFRAME, yyvsp[-1].number & OBJ_FLAGS);
1996
#line 572 "parse_y.y"
1998
/* use a default scale of 100% */
1999
CreateNewText(Layer,yyFont,yyvsp[-5].number*100, yyvsp[-4].number*100, yyvsp[-3].number, 100, yyvsp[-2].string, yyvsp[-1].number & OBJ_FLAGS);
2000
SaveFree(yyvsp[-2].string);
2005
#line 582 "parse_y.y"
2007
if (yyvsp[-1].number & ONSILKFLAG)
2009
LayerTypePtr lay = &yyData->Layer[MAX_LAYER +
2010
((yyvsp[-1].number & ONSOLDERFLAG) ? SOLDER_LAYER : COMPONENT_LAYER)];
2012
CreateNewText(lay ,yyFont, yyvsp[-6].number*100, yyvsp[-5].number*100, yyvsp[-4].number, yyvsp[-3].number, yyvsp[-2].string, yyvsp[-1].number & OBJ_FLAGS);
2015
CreateNewText(Layer, yyFont, yyvsp[-6].number*100, yyvsp[-5].number*100, yyvsp[-4].number, yyvsp[-3].number, yyvsp[-2].string, yyvsp[-1].number & OBJ_FLAGS);
2016
SaveFree(yyvsp[-2].string);
2021
#line 598 "parse_y.y"
2023
if (yyvsp[-1].number & ONSILKFLAG)
2025
LayerTypePtr lay = &yyData->Layer[MAX_LAYER +
2026
((yyvsp[-1].number & ONSOLDERFLAG) ? SOLDER_LAYER : COMPONENT_LAYER)];
2028
CreateNewText(lay ,yyFont, yyvsp[-6].number, yyvsp[-5].number, yyvsp[-4].number, yyvsp[-3].number, yyvsp[-2].string, yyvsp[-1].number & OBJ_FLAGS);
2031
CreateNewText(Layer, yyFont, yyvsp[-6].number, yyvsp[-5].number, yyvsp[-4].number, yyvsp[-3].number, yyvsp[-2].string, yyvsp[-1].number & OBJ_FLAGS);
2032
SaveFree(yyvsp[-2].string);
2037
#line 620 "parse_y.y"
2039
CreateNewPointInPolygon(Polygon, yyvsp[-2].number*100, yyvsp[-1].number*100);
2044
#line 624 "parse_y.y"
2046
CreateNewPointInPolygon(Polygon, yyvsp[-2].number, yyvsp[-1].number);
2051
#line 643 "parse_y.y"
2053
yyElement = CreateNewElement(yyData, yyElement, yyFont, 0x0000,
2054
yyvsp[-6].string, yyvsp[-5].string, NULL, yyvsp[-4].number*100, yyvsp[-3].number*100, yyvsp[-2].number, 100, 0x0000, False);
2055
SaveFree(yyvsp[-6].string);
2056
SaveFree(yyvsp[-5].string);
2062
#line 651 "parse_y.y"
2064
SetElementBoundingBox(yyData, yyElement, yyFont);
2069
#line 661 "parse_y.y"
2071
yyElement = CreateNewElement(yyData, yyElement, yyFont, yyvsp[-9].number,
2072
yyvsp[-8].string, yyvsp[-7].string, NULL, yyvsp[-6].number*100, yyvsp[-5].number*100, yyvsp[-4].number, yyvsp[-3].number, yyvsp[-2].number, False);
2073
SaveFree(yyvsp[-8].string);
2074
SaveFree(yyvsp[-7].string);
2080
#line 669 "parse_y.y"
2082
SetElementBoundingBox(yyData, yyElement, yyFont);
2087
#line 679 "parse_y.y"
2089
yyElement = CreateNewElement(yyData, yyElement, yyFont, yyvsp[-10].number,
2090
yyvsp[-9].string, yyvsp[-8].string, yyvsp[-7].string, yyvsp[-6].number*100, yyvsp[-5].number*100, yyvsp[-4].number, yyvsp[-3].number, yyvsp[-2].number, False);
2091
SaveFree(yyvsp[-9].string);
2092
SaveFree(yyvsp[-8].string);
2093
SaveFree(yyvsp[-7].string);
2099
#line 688 "parse_y.y"
2101
SetElementBoundingBox(yyData, yyElement, yyFont);
2106
#line 699 "parse_y.y"
2108
yyElement = CreateNewElement(yyData, yyElement, yyFont, yyvsp[-12].number,
2109
yyvsp[-11].string, yyvsp[-10].string, yyvsp[-9].string, (yyvsp[-8].number+yyvsp[-6].number)*100, (yyvsp[-7].number+yyvsp[-5].number)*100, yyvsp[-4].number, yyvsp[-3].number, yyvsp[-2].number, False);
2110
yyElement->MarkX = yyvsp[-8].number*100;
2111
yyElement->MarkY = yyvsp[-7].number*100;
2112
SaveFree(yyvsp[-11].string);
2113
SaveFree(yyvsp[-10].string);
2114
SaveFree(yyvsp[-9].string);
2119
#line 709 "parse_y.y"
2121
SetElementBoundingBox(yyData, yyElement, yyFont);
2126
#line 720 "parse_y.y"
2128
yyElement = CreateNewElement(yyData, yyElement, yyFont, yyvsp[-12].number,
2129
yyvsp[-11].string, yyvsp[-10].string, yyvsp[-9].string, (yyvsp[-8].number+yyvsp[-6].number), (yyvsp[-7].number+yyvsp[-5].number), yyvsp[-4].number, yyvsp[-3].number, yyvsp[-2].number, False);
2130
yyElement->MarkX = yyvsp[-8].number;
2131
yyElement->MarkY = yyvsp[-7].number;
2132
SaveFree(yyvsp[-11].string);
2133
SaveFree(yyvsp[-10].string);
2134
SaveFree(yyvsp[-9].string);
2139
#line 730 "parse_y.y"
2141
SetElementBoundingBox(yyData, yyElement, yyFont);
2146
#line 748 "parse_y.y"
2148
CreateNewLineInElement(yyElement, yyvsp[-5].number, yyvsp[-4].number, yyvsp[-3].number, yyvsp[-2].number, yyvsp[-1].number);
2153
#line 753 "parse_y.y"
2155
CreateNewLineInElement(yyElement, yyvsp[-5].number*100, yyvsp[-4].number*100, yyvsp[-3].number*100, yyvsp[-2].number*100, yyvsp[-1].number*100);
2160
#line 758 "parse_y.y"
2162
CreateNewArcInElement(yyElement, yyvsp[-7].number, yyvsp[-6].number, yyvsp[-5].number, yyvsp[-4].number, yyvsp[-3].number, yyvsp[-2].number, yyvsp[-1].number);
2167
#line 762 "parse_y.y"
2169
CreateNewArcInElement(yyElement, yyvsp[-7].number*100, yyvsp[-6].number*100, yyvsp[-5].number*100, yyvsp[-4].number*100, yyvsp[-3].number, yyvsp[-2].number, yyvsp[-1].number*100);
2174
#line 767 "parse_y.y"
2176
yyElement->MarkX = yyvsp[-2].number;
2177
yyElement->MarkY = yyvsp[-1].number;
2182
#line 772 "parse_y.y"
2184
yyElement->MarkX = yyvsp[-2].number*100;
2185
yyElement->MarkY = yyvsp[-1].number*100;
2190
#line 790 "parse_y.y"
2192
CreateNewLineInElement(yyElement, yyvsp[-5].number + yyElement->MarkX,
2193
yyvsp[-4].number + yyElement->MarkY, yyvsp[-3].number + yyElement->MarkX,
2194
yyvsp[-2].number + yyElement->MarkY, yyvsp[-1].number);
2199
#line 796 "parse_y.y"
2201
CreateNewLineInElement(yyElement, yyvsp[-5].number*100 + yyElement->MarkX,
2202
yyvsp[-4].number*100 + yyElement->MarkY, yyvsp[-3].number*100 + yyElement->MarkX,
2203
yyvsp[-2].number*100 + yyElement->MarkY, yyvsp[-1].number*100);
2208
#line 803 "parse_y.y"
2210
CreateNewArcInElement(yyElement, yyvsp[-7].number + yyElement->MarkX,
2211
yyvsp[-6].number + yyElement->MarkY, yyvsp[-5].number, yyvsp[-4].number, yyvsp[-3].number, yyvsp[-2].number, yyvsp[-1].number);
2216
#line 808 "parse_y.y"
2218
CreateNewArcInElement(yyElement, yyvsp[-7].number*100 + yyElement->MarkX,
2219
yyvsp[-6].number*100 + yyElement->MarkY, yyvsp[-5].number*100, yyvsp[-4].number*100, yyvsp[-3].number, yyvsp[-2].number, yyvsp[-1].number*100);
2224
#line 818 "parse_y.y"
2226
CreateNewPin(yyElement, yyvsp[-9].number + yyElement->MarkX,
2227
yyvsp[-8].number + yyElement->MarkY, yyvsp[-7].number, yyvsp[-6].number, yyvsp[-5].number, yyvsp[-4].number, yyvsp[-3].string,
2228
yyvsp[-2].string, (yyvsp[-1].number & OBJ_FLAGS) | PINFLAG);
2229
SaveFree(yyvsp[-3].string);
2230
SaveFree(yyvsp[-2].string);
2235
#line 830 "parse_y.y"
2237
CreateNewPin(yyElement, yyvsp[-9].number*100 + yyElement->MarkX,
2238
yyvsp[-8].number*100 + yyElement->MarkY, yyvsp[-7].number*100, yyvsp[-6].number*100, yyvsp[-5].number*100, yyvsp[-4].number*100, yyvsp[-3].string,
2239
yyvsp[-2].string, (yyvsp[-1].number & OBJ_FLAGS) | PINFLAG);
2240
SaveFree(yyvsp[-3].string);
2241
SaveFree(yyvsp[-2].string);
2246
#line 842 "parse_y.y"
2248
CreateNewPin(yyElement, yyvsp[-7].number*100, yyvsp[-6].number*100, yyvsp[-5].number*100, 200*GROUNDPLANEFRAME,
2249
(yyvsp[-5].number + 2*MASKFRAME)*100, yyvsp[-4].number*100, yyvsp[-3].string, yyvsp[-2].string,
2250
(yyvsp[-1].number & OBJ_FLAGS) | PINFLAG);
2251
SaveFree(yyvsp[-3].string);
2252
SaveFree(yyvsp[-2].string);
2257
#line 854 "parse_y.y"
2261
sprintf(p_number, "%d", pin_num++);
2262
CreateNewPin(yyElement, yyvsp[-6].number*100, yyvsp[-5].number*100, yyvsp[-4].number*100, 200*GROUNDPLANEFRAME,
2263
(yyvsp[-4].number + 2*MASKFRAME)*100, yyvsp[-3].number*100, yyvsp[-2].string, p_number,
2264
(yyvsp[-1].number & OBJ_FLAGS) | PINFLAG);
2265
SaveFree(yyvsp[-2].string);
2270
#line 870 "parse_y.y"
2272
BDimension hole = (yyvsp[-3].number *DEFAULT_DRILLINGHOLE);
2275
/* make sure that there's enough copper left */
2276
if (yyvsp[-3].number -hole < MIN_PINORVIACOPPER &&
2277
yyvsp[-3].number > MIN_PINORVIACOPPER)
2278
hole = yyvsp[-3].number -MIN_PINORVIACOPPER;
2280
sprintf(p_number, "%d", pin_num++);
2281
CreateNewPin(yyElement, yyvsp[-5].number*100, yyvsp[-4].number*100, yyvsp[-3].number*100, 200*GROUNDPLANEFRAME,
2282
(yyvsp[-3].number + 2*MASKFRAME)*100, hole, yyvsp[-2].string, p_number,
2283
(yyvsp[-1].number & OBJ_FLAGS) | PINFLAG);
2284
SaveFree(yyvsp[-2].string);
2289
#line 890 "parse_y.y"
2291
CreateNewPad(yyElement, yyvsp[-10].number + yyElement->MarkX,
2292
yyvsp[-9].number + yyElement->MarkY,
2293
yyvsp[-8].number + yyElement->MarkX,
2294
yyvsp[-7].number + yyElement->MarkY, yyvsp[-6].number, yyvsp[-5].number, yyvsp[-4].number,
2295
yyvsp[-3].string, yyvsp[-2].string, (yyvsp[-1].number & OBJ_FLAGS));
2296
SaveFree(yyvsp[-3].string);
2297
SaveFree(yyvsp[-2].string);
2302
#line 904 "parse_y.y"
2304
CreateNewPad(yyElement,yyvsp[-10].number*100 + yyElement->MarkX,
2305
yyvsp[-9].number*100 + yyElement->MarkY, yyvsp[-8].number*100 + yyElement->MarkX,
2306
yyvsp[-7].number*100 + yyElement->MarkY, yyvsp[-6].number*100, yyvsp[-5].number*100, yyvsp[-4].number*100,
2307
yyvsp[-3].string, yyvsp[-2].string, (yyvsp[-1].number & OBJ_FLAGS));
2308
SaveFree(yyvsp[-3].string);
2309
SaveFree(yyvsp[-2].string);
2314
#line 917 "parse_y.y"
2316
CreateNewPad(yyElement,yyvsp[-8].number*100,yyvsp[-7].number*100,yyvsp[-6].number*100,yyvsp[-5].number*100,yyvsp[-4].number*100, 200*GROUNDPLANEFRAME,
2317
(yyvsp[-4].number + 2*MASKFRAME)*100, yyvsp[-3].string,yyvsp[-2].string, (yyvsp[-1].number & OBJ_FLAGS));
2318
SaveFree(yyvsp[-3].string);
2319
SaveFree(yyvsp[-2].string);
2324
#line 928 "parse_y.y"
2328
sprintf(p_number, "%d", pin_num++);
2329
CreateNewPad(yyElement,yyvsp[-7].number*100,yyvsp[-6].number*100,yyvsp[-5].number*100,yyvsp[-4].number*100,yyvsp[-3].number*100, 200*GROUNDPLANEFRAME,
2330
(yyvsp[-3].number + 2*MASKFRAME)*100, yyvsp[-2].string,p_number,
2331
(yyvsp[-1].number & OBJ_FLAGS));
2332
SaveFree(yyvsp[-2].string);
2337
#line 946 "parse_y.y"
2339
if (yyvsp[-3].number <= 0 || yyvsp[-3].number > MAX_FONTPOSITION)
2341
yyerror("fontposition out of range");
2344
Symbol = &yyFont->Symbol[yyvsp[-3].number];
2347
yyerror("symbol ID used twice");
2350
Symbol->Valid = True;
2351
Symbol->Delta = yyvsp[-2].number;
2356
#line 963 "parse_y.y"
2358
if (yyvsp[-3].number <= 0 || yyvsp[-3].number > MAX_FONTPOSITION)
2360
yyerror("fontposition out of range");
2363
Symbol = &yyFont->Symbol[yyvsp[-3].number];
2366
yyerror("symbol ID used twice");
2369
Symbol->Valid = True;
2370
Symbol->Delta = yyvsp[-2].number*100;
2375
#line 1000 "parse_y.y"
2377
CreateNewLineInSymbol(Symbol, yyvsp[-5].number*100, yyvsp[-4].number*100, yyvsp[-3].number*100, yyvsp[-2].number*100, yyvsp[-1].number*100);
2382
#line 1007 "parse_y.y"
2384
CreateNewLineInSymbol(Symbol, yyvsp[-5].number, yyvsp[-4].number, yyvsp[-3].number, yyvsp[-2].number, yyvsp[-1].number);
2389
#line 1034 "parse_y.y"
2391
Menu = CreateNewNet(&yyPCB->NetlistLib, yyvsp[-3].string, yyvsp[-2].string);
2392
SaveFree(yyvsp[-3].string);
2393
SaveFree(yyvsp[-2].string);
2398
#line 1054 "parse_y.y"
2400
CreateNewConnection(Menu, yyvsp[-1].string);
2401
SaveFree(yyvsp[-1].string);
2408
/* Line 991 of yacc.c. */
2409
#line 2409 "parse_y.c"
2415
YY_STACK_PRINT (yyss, yyssp);
2420
/* Now `shift' the result of the reduction. Determine what state
2421
that goes to, based on the state we popped back to and the rule
2422
number reduced by. */
2426
yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2427
if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2428
yystate = yytable[yystate];
2430
yystate = yydefgoto[yyn - YYNTOKENS];
2435
/*------------------------------------.
2436
| yyerrlab -- here on detecting error |
2437
`------------------------------------*/
2439
/* If not already recovering from an error, report this error. */
2444
yyn = yypact[yystate];
2446
if (YYPACT_NINF < yyn && yyn < YYLAST)
2448
YYSIZE_T yysize = 0;
2449
int yytype = YYTRANSLATE (yychar);
2454
/* Start YYX at -YYN if negative to avoid negative indexes in
2456
for (yyx = yyn < 0 ? -yyn : 0;
2457
yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
2458
if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2459
yysize += yystrlen (yytname[yyx]) + 15, yycount++;
2460
yysize += yystrlen ("syntax error, unexpected ") + 1;
2461
yysize += yystrlen (yytname[yytype]);
2462
yymsg = (char *) YYSTACK_ALLOC (yysize);
2465
char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
2466
yyp = yystpcpy (yyp, yytname[yytype]);
2471
for (yyx = yyn < 0 ? -yyn : 0;
2472
yyx < (int) (sizeof (yytname) / sizeof (char *));
2474
if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2476
const char *yyq = ! yycount ? ", expecting " : " or ";
2477
yyp = yystpcpy (yyp, yyq);
2478
yyp = yystpcpy (yyp, yytname[yyx]);
2483
YYSTACK_FREE (yymsg);
2486
yyerror ("syntax error; also virtual memory exhausted");
2489
#endif /* YYERROR_VERBOSE */
2490
yyerror ("syntax error");
2495
if (yyerrstatus == 3)
2497
/* If just tried and failed to reuse lookahead token after an
2498
error, discard it. */
2500
/* Return failure if at end of input. */
2501
if (yychar == YYEOF)
2503
/* Pop the error token. */
2505
/* Pop the rest of the stack. */
2506
while (yyss < yyssp)
2508
YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
2509
yydestruct (yystos[*yyssp], yyvsp);
2515
YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
2516
yydestruct (yytoken, &yylval);
2521
/* Else will try to reuse lookahead token after shifting the error
2526
/*----------------------------------------------------.
2527
| yyerrlab1 -- error raised explicitly by an action. |
2528
`----------------------------------------------------*/
2531
/* Suppress GCC warning that yyerrlab1 is unused when no action
2532
invokes YYERROR. MacOS 10.2.3's buggy "smart preprocessor"
2533
insists on the trailing semicolon. */
2534
#if defined (__GNUC_MINOR__) && 2093 <= (__GNUC__ * 1000 + __GNUC_MINOR__)
2535
__attribute__ ((__unused__));
2542
/*---------------------------------------------------------------.
2543
| yyerrlab2 -- pop states until the error token can be shifted. |
2544
`---------------------------------------------------------------*/
2546
yyerrstatus = 3; /* Each real token shifted decrements this. */
2550
yyn = yypact[yystate];
2551
if (yyn != YYPACT_NINF)
2554
if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2562
/* Pop the current state because it cannot handle the error token. */
2566
YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
2567
yydestruct (yystos[yystate], yyvsp);
2571
YY_STACK_PRINT (yyss, yyssp);
2577
YYDPRINTF ((stderr, "Shifting error token, "));
2586
/*-------------------------------------.
2587
| yyacceptlab -- YYACCEPT comes here. |
2588
`-------------------------------------*/
2593
/*-----------------------------------.
2594
| yyabortlab -- YYABORT comes here. |
2595
`-----------------------------------*/
2601
/*----------------------------------------------.
2602
| yyoverflowlab -- parser overflow comes here. |
2603
`----------------------------------------------*/
2605
yyerror ("parser stack overflow");
2613
YYSTACK_FREE (yyss);
2619
#line 92 "parse_y.y"
2622
/* ---------------------------------------------------------------------------
2623
* error routine called by parser library
2628
Message("ERROR parsing file '%s'\n"
2630
" description: '%s'\n",
2631
yyfilename, yylineno, s);