Index: trunk/src/Makefile.dep =================================================================== --- trunk/src/Makefile.dep (revision 911) +++ trunk/src/Makefile.dep (revision 912) @@ -158,6 +158,7 @@ hid.h polyarea.h libpcb_fp.h create.h data.h draw.h error.h file.h \ find.h misc.h ds.h mymem.h polygon.h rats.h search.h set.h undo.h \ pcb-mincut/graph.h pcb-mincut/solve.h pcb-mincut/graph.h +rats_patch.o: rats_patch.c rats_patch.h remove.o: remove.c ../config.h ../config.manual.h ../config.auto.h \ global.h const.h ../globalconst.h ../config.h macro.h hid.h polyarea.h \ libpcb_fp.h data.h draw.h error.h misc.h ds.h mymem.h move.h polygon.h \ @@ -260,7 +261,7 @@ parse_y.o: parse_y.c ../config.h ../config.manual.h ../config.auto.h \ global.h const.h ../globalconst.h ../config.h macro.h hid.h polyarea.h \ libpcb_fp.h create.h data.h error.h file.h mymem.h misc.h ds.h parse_l.h \ - polygon.h remove.h rtree.h strflags.h thermal.h parse_y.h + polygon.h remove.h rtree.h strflags.h thermal.h rats_patch.h parse_y.h parse_l.o: parse_l.c ../config.h ../config.manual.h ../config.auto.h \ global.h const.h ../globalconst.h ../config.h macro.h hid.h polyarea.h \ libpcb_fp.h crosshair.h data.h error.h file.h mymem.h misc.h ds.h \ Index: trunk/src/Makefile.in =================================================================== --- trunk/src/Makefile.in (revision 911) +++ trunk/src/Makefile.in (revision 912) @@ -53,6 +53,7 @@ print.o rats.o rats_mincut.o + rats_patch.o remove.o report.o rotate.o Index: trunk/src/global.h =================================================================== --- trunk/src/global.h (revision 911) +++ trunk/src/global.h (revision 912) @@ -65,6 +65,7 @@ typedef struct drc_violation_st DrcViolationType, *DrcViolationTypePtr; typedef struct rtree rtree_t; typedef struct AttributeListType AttributeListType, *AttributeListTypePtr; +typedef struct rats_patch_line_s rats_patch_line_t; typedef struct unit Unit; typedef struct increments Increments; @@ -532,6 +533,7 @@ LayerGroupType LayerGroups; RouteStyleType RouteStyle[NUM_STYLES]; LibraryType NetlistLib; + rats_patch_line_t *NetlistPatches; AttributeListType Attributes; DataTypePtr Data; /* entire database */ @@ -793,6 +795,26 @@ int *object_type_list; }; +typedef enum { + RATP_ADD_CONN, + RATP_DEL_CONN, + RATP_CHANGE_ATTRIB +} rats_patch_op_t; + +struct rats_patch_line_s { + rats_patch_op_t op; + char *id; + union { + char *net_name; + char *attrib_name; + } arg1; + union { + char *attrib_val; + } arg2; + + rats_patch_line_t *next; +}; + /* --------------------------------------------------------------------------- * define supported types of undo operations * note these must be separate bits now Index: trunk/src/parse_l.c =================================================================== --- trunk/src/parse_l.c (revision 911) +++ trunk/src/parse_l.c (revision 912) @@ -381,8 +381,8 @@ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 51 -#define YY_END_OF_BUFFER 52 +#define YY_NUM_RULES 55 +#define YY_END_OF_BUFFER 56 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -390,28 +390,33 @@ flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[189] = +static yyconst flex_int16_t yy_accept[222] = { 0, - 0, 0, 52, 50, 47, 48, 49, 50, 46, 50, - 50, 43, 43, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 35, 50, 50, 47, 0, 45, 0, 46, 0, - 43, 43, 42, 0, 43, 0, 0, 0, 0, 0, + 0, 0, 56, 54, 51, 52, 53, 54, 50, 54, + 54, 47, 47, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 39, 54, 54, 51, 0, 49, 0, + 50, 0, 47, 47, 46, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 40, 36, 0, 34, 32, 33, 41, 42, 44, - 27, 0, 0, 0, 7, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 29, 2, 11, 10, 0, 14, + 0, 0, 0, 0, 0, 0, 44, 40, 0, 38, + 36, 37, 45, 46, 48, 27, 0, 0, 0, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, - 0, 0, 0, 0, 0, 12, 0, 39, 0, 0, - 0, 0, 0, 0, 0, 3, 0, 26, 0, 13, - 22, 0, 0, 0, 0, 0, 16, 0, 38, 37, - 0, 0, 0, 0, 0, 8, 0, 9, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, - 23, 0, 0, 0, 0, 24, 21, 0, 0, 30, - 19, 0, 28, 0, 25, 0, 0, 5, 0, 0, - 0, 0, 6, 0, 0, 31, 0, 0, 0, 15, - 0, 18, 0, 0, 20, 17, 1, 0 + 2, 11, 10, 0, 14, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 0, 43, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 26, 0, 13, 22, 0, + 0, 0, 0, 0, 16, 0, 0, 0, 42, 0, + 41, 0, 0, 0, 0, 0, 8, 0, 9, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 0, 0, 23, 0, 0, 0, 0, 24, + 21, 0, 0, 0, 0, 0, 30, 19, 0, 28, + 0, 25, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 0, 0, 32, 0, 33, 35, + + 0, 0, 0, 0, 15, 0, 0, 18, 0, 0, + 0, 20, 0, 17, 1, 0, 0, 31, 0, 34, + 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -425,11 +430,11 @@ 1, 1, 1, 1, 12, 13, 14, 15, 16, 17, 18, 19, 1, 1, 1, 20, 21, 22, 1, 23, 1, 24, 25, 26, 1, 27, 1, 1, 1, 1, - 1, 28, 1, 1, 1, 1, 29, 30, 31, 32, + 1, 28, 1, 1, 29, 1, 30, 31, 32, 33, - 33, 34, 35, 36, 37, 1, 38, 39, 40, 41, - 42, 43, 1, 44, 45, 46, 47, 1, 1, 48, - 49, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 34, 35, 36, 37, 38, 1, 39, 40, 41, 42, + 43, 44, 1, 45, 46, 47, 48, 1, 1, 49, + 50, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -446,141 +451,155 @@ 1, 1, 1, 1, 1 } ; -static yyconst flex_int32_t yy_meta[50] = +static yyconst flex_int32_t yy_meta[51] = { 0, 1, 1, 2, 3, 1, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, - 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, + 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static yyconst flex_int16_t yy_base[193] = +static yyconst flex_int16_t yy_base[226] = { 0, - 0, 0, 224, 225, 221, 225, 225, 45, 0, 0, - 41, 44, 45, 13, 16, 198, 182, 23, 176, 177, - 32, 189, 184, 51, 35, 21, 38, 179, 175, 173, - 173, 35, 172, 171, 208, 61, 225, 205, 0, 201, - 198, 67, 71, 0, 74, 175, 159, 163, 159, 188, - 168, 161, 170, 49, 159, 148, 155, 151, 148, 180, - 160, 150, 151, 143, 157, 138, 146, 137, 151, 154, - 145, 225, 225, 142, 225, 225, 143, 225, 84, 0, - 225, 135, 137, 132, 225, 136, 142, 139, 141, 125, - 138, 137, 136, 130, 147, 225, 225, 225, 117, 225, + 0, 0, 256, 257, 253, 257, 257, 46, 0, 0, + 42, 45, 46, 13, 16, 230, 213, 23, 207, 208, + 32, 220, 215, 52, 35, 21, 38, 210, 214, 36, + 212, 203, 203, 38, 202, 201, 239, 73, 257, 236, + 0, 232, 229, 74, 70, 0, 77, 205, 189, 193, + 189, 219, 198, 191, 200, 53, 189, 178, 185, 181, + 178, 211, 190, 180, 181, 173, 187, 168, 176, 167, + 181, 184, 180, 182, 173, 170, 257, 257, 169, 257, + 257, 170, 257, 82, 0, 257, 162, 164, 159, 257, + 163, 169, 166, 168, 152, 165, 164, 163, 157, 175, - 119, 125, 133, 116, 117, 225, 121, 225, 120, 121, - 124, 114, 122, 127, 108, 225, 109, 225, 107, 225, - 225, 113, 67, 120, 115, 105, 225, 106, 225, 225, - 115, 113, 99, 101, 108, 225, 95, 225, 94, 94, - 95, 95, 90, 95, 104, 85, 85, 225, 84, 85, - 225, 82, 94, 85, 90, 225, 104, 84, 76, 225, - 78, 76, 225, 91, 225, 80, 81, 225, 84, 72, - 78, 75, 225, 75, 64, 225, 73, 60, 58, 225, - 66, 225, 64, 55, 225, 225, 225, 225, 102, 106, - 110, 83 + 257, 257, 257, 144, 257, 146, 152, 160, 143, 144, + 257, 159, 145, 146, 156, 257, 144, 145, 148, 138, + 146, 152, 132, 257, 133, 257, 131, 257, 257, 137, + 77, 144, 139, 129, 257, 130, 138, 133, 257, 136, + 257, 136, 134, 120, 122, 129, 257, 116, 257, 115, + 115, 116, 116, 111, 116, 125, 111, 119, 109, 103, + 103, 257, 102, 103, 257, 100, 112, 103, 108, 257, + 123, 102, 99, 111, 97, 91, 257, 85, 91, 113, + 105, 257, 94, 95, 257, 90, 101, 88, 95, 83, + 89, 88, 93, 257, 85, 74, 257, 68, 257, 257, + 80, 69, 67, 62, 257, 74, 60, 257, 72, 62, + 71, 257, 57, 257, 257, 63, 61, 257, 67, 257, + 257, 113, 117, 121, 63 } ; -static yyconst flex_int16_t yy_def[193] = +static yyconst flex_int16_t yy_def[226] = { 0, - 188, 1, 188, 188, 188, 188, 188, 189, 190, 191, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 189, 188, 189, 190, 188, - 188, 188, 188, 192, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 192, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 221, 1, 221, 221, 221, 221, 221, 222, 223, 224, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 222, 221, 222, + 223, 221, 221, 221, 221, 225, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 225, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 0, 188, 188, - 188, 188 + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 0, 221, 221, 221, 221 } ; -static yyconst flex_int16_t yy_nxt[275] = +static yyconst flex_int16_t yy_nxt[308] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 4, 12, 13, 14, 4, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 4, 4, 4, - 29, 4, 4, 4, 4, 4, 30, 31, 4, 32, - 33, 4, 4, 4, 4, 4, 34, 4, 4, 37, - 41, 42, 43, 43, 45, 45, 46, 48, 47, 52, - 56, 53, 49, 64, 60, 37, 66, 65, 57, 67, - 68, 74, 38, 69, 75, 43, 45, 45, 140, 61, - 79, 79, 43, 45, 45, 89, 80, 62, 38, 170, - 90, 44, 63, 79, 79, 187, 186, 171, 185, 184, + 22, 23, 24, 25, 26, 27, 28, 4, 4, 29, + 4, 30, 31, 4, 4, 4, 4, 32, 33, 4, + 34, 35, 4, 4, 4, 4, 4, 36, 4, 4, + 39, 43, 44, 45, 45, 47, 47, 48, 50, 49, + 54, 58, 55, 51, 66, 62, 85, 68, 67, 59, + 69, 70, 74, 40, 71, 79, 75, 39, 80, 84, + 84, 63, 45, 47, 47, 45, 47, 47, 151, 64, + 94, 84, 84, 46, 65, 95, 190, 220, 219, 218, - 183, 141, 36, 182, 181, 36, 39, 180, 39, 39, - 40, 179, 40, 40, 178, 177, 176, 175, 174, 173, - 172, 169, 168, 167, 166, 165, 164, 163, 162, 161, - 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, - 150, 149, 148, 147, 146, 145, 144, 143, 142, 139, - 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, - 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, - 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, - 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, - 98, 97, 96, 95, 94, 93, 92, 91, 88, 87, + 40, 217, 216, 215, 191, 214, 213, 212, 211, 210, + 209, 208, 152, 38, 207, 206, 38, 41, 205, 41, + 41, 42, 204, 42, 42, 203, 202, 201, 200, 199, + 198, 197, 196, 195, 194, 193, 192, 189, 188, 187, + 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, + 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, + 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, + 156, 155, 154, 153, 150, 149, 148, 147, 146, 145, + 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, + 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, - 86, 85, 84, 83, 82, 81, 43, 78, 36, 35, - 77, 76, 73, 72, 71, 70, 59, 58, 55, 54, - 51, 50, 35, 188, 3, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188 + 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, + 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, + 104, 103, 102, 101, 100, 99, 98, 97, 96, 93, + 92, 91, 90, 89, 88, 87, 86, 45, 83, 38, + 37, 82, 81, 78, 77, 76, 73, 72, 61, 60, + 57, 56, 53, 52, 37, 221, 3, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + + 221, 221, 221, 221, 221, 221, 221 } ; -static yyconst flex_int16_t yy_chk[275] = +static yyconst flex_int16_t yy_chk[308] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, - 11, 11, 12, 13, 13, 13, 14, 15, 14, 18, - 21, 18, 15, 25, 24, 36, 26, 25, 21, 26, - 27, 32, 8, 27, 32, 42, 42, 42, 123, 24, - 43, 43, 45, 45, 45, 54, 192, 24, 36, 161, - 54, 12, 24, 79, 79, 184, 183, 161, 181, 179, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 8, 11, 11, 12, 13, 13, 13, 14, 15, 14, + 18, 21, 18, 15, 25, 24, 225, 26, 25, 21, + 26, 27, 30, 8, 27, 34, 30, 38, 34, 45, + 45, 24, 44, 44, 44, 47, 47, 47, 131, 24, + 56, 84, 84, 12, 24, 56, 178, 219, 217, 216, - 178, 123, 189, 177, 175, 189, 190, 174, 190, 190, - 191, 172, 191, 191, 171, 170, 169, 167, 166, 164, - 162, 159, 158, 157, 155, 154, 153, 152, 150, 149, - 147, 146, 145, 144, 143, 142, 141, 140, 139, 137, - 135, 134, 133, 132, 131, 128, 126, 125, 124, 122, - 119, 117, 115, 114, 113, 112, 111, 110, 109, 107, - 105, 104, 103, 102, 101, 99, 95, 94, 93, 92, - 91, 90, 89, 88, 87, 86, 84, 83, 82, 77, - 74, 71, 70, 69, 68, 67, 66, 65, 64, 63, - 62, 61, 60, 59, 58, 57, 56, 55, 53, 52, + 38, 213, 211, 210, 178, 209, 207, 206, 204, 203, + 202, 201, 131, 222, 198, 196, 222, 223, 195, 223, + 223, 224, 193, 224, 224, 192, 191, 190, 189, 188, + 187, 186, 184, 183, 181, 180, 179, 176, 175, 174, + 173, 172, 171, 169, 168, 167, 166, 164, 163, 161, + 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, + 150, 148, 146, 145, 144, 143, 142, 140, 138, 137, + 136, 134, 133, 132, 130, 127, 125, 123, 122, 121, + 120, 119, 118, 117, 115, 114, 113, 112, 110, 109, + 108, 107, 106, 104, 100, 99, 98, 97, 96, 95, - 51, 50, 49, 48, 47, 46, 41, 40, 38, 35, - 34, 33, 31, 30, 29, 28, 23, 22, 20, 19, - 17, 16, 5, 3, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188 + 94, 93, 92, 91, 89, 88, 87, 82, 79, 76, + 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, + 65, 64, 63, 62, 61, 60, 59, 58, 57, 55, + 54, 53, 52, 51, 50, 49, 48, 43, 42, 40, + 37, 36, 35, 33, 32, 31, 29, 28, 23, 22, + 20, 19, 17, 16, 5, 3, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + + 221, 221, 221, 221, 221, 221, 221 } ; /* Table of booleans, true if rule could match eol. */ -static yyconst flex_int32_t yy_rule_can_match_eol[52] = +static yyconst flex_int32_t yy_rule_can_match_eol[56] = { 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, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, }; + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, }; static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; @@ -687,7 +706,7 @@ */ static int Parse(FILE *, char *, char *, char *, char *); -#line 691 "lex.yy.c" +#line 710 "lex.yy.c" #define INITIAL 0 @@ -877,7 +896,7 @@ #line 101 "parse_l.l" -#line 881 "lex.yy.c" +#line 900 "lex.yy.c" if ( !(yy_init) ) { @@ -930,13 +949,13 @@ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 189 ) + if ( yy_current_state >= 222 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 225 ); + while ( yy_base[yy_current_state] != 257 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1123,74 +1142,94 @@ case 31: YY_RULE_SETUP #line 133 "parse_l.l" -{ return(T_ATTRIBUTE); } +{ return(T_NETLISTPATCH); } YY_BREAK case 32: YY_RULE_SETUP -#line 135 "parse_l.l" -{ return T_NM; } +#line 134 "parse_l.l" +{ return(T_ADD_CONN); } YY_BREAK case 33: YY_RULE_SETUP -#line 136 "parse_l.l" -{ return T_UM; } +#line 135 "parse_l.l" +{ return(T_DEL_CONN); } YY_BREAK case 34: YY_RULE_SETUP -#line 137 "parse_l.l" -{ return T_MM; } +#line 136 "parse_l.l" +{ return(T_CHANGE_ATTRIB); } YY_BREAK case 35: YY_RULE_SETUP -#line 138 "parse_l.l" -{ return T_M; } +#line 137 "parse_l.l" +{ return(T_ATTRIBUTE); } YY_BREAK case 36: YY_RULE_SETUP #line 139 "parse_l.l" -{ return T_KM; } +{ return T_NM; } YY_BREAK case 37: YY_RULE_SETUP #line 140 "parse_l.l" -{ return T_UMIL; } +{ return T_UM; } YY_BREAK case 38: YY_RULE_SETUP #line 141 "parse_l.l" -{ return T_CMIL; } +{ return T_MM; } YY_BREAK case 39: YY_RULE_SETUP #line 142 "parse_l.l" -{ return T_MIL; } +{ return T_M; } YY_BREAK case 40: YY_RULE_SETUP #line 143 "parse_l.l" -{ return T_IN; } +{ return T_KM; } YY_BREAK case 41: YY_RULE_SETUP +#line 144 "parse_l.l" +{ return T_UMIL; } + YY_BREAK +case 42: +YY_RULE_SETUP #line 145 "parse_l.l" +{ return T_CMIL; } + YY_BREAK +case 43: +YY_RULE_SETUP +#line 146 "parse_l.l" +{ return T_MIL; } + YY_BREAK +case 44: +YY_RULE_SETUP +#line 147 "parse_l.l" +{ return T_IN; } + YY_BREAK +case 45: +YY_RULE_SETUP +#line 149 "parse_l.l" { yylval.integer = (unsigned) *(yytext+1); return(CHAR_CONST); } YY_BREAK -case 42: +case 46: YY_RULE_SETUP -#line 149 "parse_l.l" +#line 153 "parse_l.l" { return parse_number(); } YY_BREAK -case 43: +case 47: YY_RULE_SETUP -#line 150 "parse_l.l" +#line 154 "parse_l.l" { yylval.integer = round (g_ascii_strtod (yytext, NULL)); return INTEGER; } YY_BREAK -case 44: +case 48: YY_RULE_SETUP -#line 152 "parse_l.l" +#line 156 "parse_l.l" { unsigned n; sscanf((char *) yytext, "%x", &n); yylval.integer = n; @@ -1197,9 +1236,9 @@ return INTEGER; } YY_BREAK -case 45: +case 49: YY_RULE_SETUP -#line 157 "parse_l.l" +#line 161 "parse_l.l" { char *p1, *p2; @@ -1233,20 +1272,20 @@ return(STRING); } YY_BREAK -case 46: +case 50: YY_RULE_SETUP -#line 189 "parse_l.l" +#line 193 "parse_l.l" {} YY_BREAK -case 47: +case 51: YY_RULE_SETUP -#line 190 "parse_l.l" +#line 194 "parse_l.l" {} YY_BREAK -case 48: -/* rule 48 can match eol */ +case 52: +/* rule 52 can match eol */ YY_RULE_SETUP -#line 191 "parse_l.l" +#line 195 "parse_l.l" { #ifndef FLEX_SCANNER yylineno++; @@ -1253,22 +1292,22 @@ #endif } YY_BREAK -case 49: +case 53: YY_RULE_SETUP -#line 196 "parse_l.l" +#line 200 "parse_l.l" {} YY_BREAK -case 50: +case 54: YY_RULE_SETUP -#line 197 "parse_l.l" +#line 201 "parse_l.l" { return(*yytext); } YY_BREAK -case 51: +case 55: YY_RULE_SETUP -#line 199 "parse_l.l" +#line 203 "parse_l.l" ECHO; YY_BREAK -#line 1272 "lex.yy.c" +#line 1311 "lex.yy.c" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -1560,7 +1599,7 @@ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 189 ) + if ( yy_current_state >= 222 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -1588,11 +1627,11 @@ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 189 ) + if ( yy_current_state >= 222 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 188); + yy_is_jam = (yy_current_state == 221); return yy_is_jam ? 0 : yy_current_state; } @@ -2278,7 +2317,7 @@ #define YYTABLES_NAME "yytables" -#line 199 "parse_l.l" +#line 203 "parse_l.l" Index: trunk/src/parse_l.l =================================================================== --- trunk/src/parse_l.l (revision 911) +++ trunk/src/parse_l.l (revision 912) @@ -130,6 +130,10 @@ NetList { return(T_NETLIST); } Net { return(T_NET); } Connect { return(T_CONN); } +NetListPatch { return(T_NETLISTPATCH); } +add_conn { return(T_ADD_CONN); } +del_conn { return(T_DEL_CONN); } +change_attrib { return(T_CHANGE_ATTRIB); } Attribute { return(T_ATTRIBUTE); } nm { return T_NM; } Index: trunk/src/parse_y.c =================================================================== --- trunk/src/parse_y.c (revision 911) +++ trunk/src/parse_y.c (revision 912) @@ -108,6 +108,7 @@ #include "rtree.h" #include "strflags.h" #include "thermal.h" +#include "rats_patch.h" #ifdef HAVE_LIBDMALLOC # include /* see http://dmalloc.com */ @@ -157,7 +158,7 @@ #include "parse_y.h" -#line 161 "parse_y.tab.c" /* yacc.c:339 */ +#line 162 "parse_y.tab.c" /* yacc.c:339 */ # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus @@ -223,19 +224,23 @@ T_NETLIST = 286, T_NET = 287, T_CONN = 288, - T_AREA = 289, - T_THERMAL = 290, - T_DRC = 291, - T_ATTRIBUTE = 292, - T_UMIL = 293, - T_CMIL = 294, - T_MIL = 295, - T_IN = 296, - T_NM = 297, - T_UM = 298, - T_MM = 299, - T_M = 300, - T_KM = 301 + T_NETLISTPATCH = 289, + T_ADD_CONN = 290, + T_DEL_CONN = 291, + T_CHANGE_ATTRIB = 292, + T_AREA = 293, + T_THERMAL = 294, + T_DRC = 295, + T_ATTRIBUTE = 296, + T_UMIL = 297, + T_CMIL = 298, + T_MIL = 299, + T_IN = 300, + T_NM = 301, + T_UM = 302, + T_MM = 303, + T_M = 304, + T_KM = 305 }; #endif @@ -244,7 +249,7 @@ typedef union YYSTYPE YYSTYPE; union YYSTYPE { -#line 109 "parse_y.y" /* yacc.c:355 */ +#line 110 "parse_y.y" /* yacc.c:355 */ int integer; double number; @@ -252,7 +257,7 @@ FlagType flagtype; PLMeasure measure; -#line 256 "parse_y.tab.c" /* yacc.c:355 */ +#line 261 "parse_y.tab.c" /* yacc.c:355 */ }; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 @@ -267,7 +272,7 @@ /* Copy the second part of user declarations. */ -#line 271 "parse_y.tab.c" /* yacc.c:358 */ +#line 276 "parse_y.tab.c" /* yacc.c:358 */ #ifdef short # undef short @@ -509,21 +514,21 @@ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 10 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 584 +#define YYLAST 608 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 51 +#define YYNTOKENS 55 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 107 +#define YYNNTS 112 /* YYNRULES -- Number of rules. */ -#define YYNRULES 204 +#define YYNRULES 214 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 616 +#define YYNSTATES 643 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 301 +#define YYMAXUTOK 305 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -536,12 +541,12 @@ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 49, 50, 2, 2, 2, 2, 2, 2, 2, 2, + 53, 54, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 47, 2, 48, 2, 2, 2, 2, 2, 2, + 2, 51, 2, 52, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -562,7 +567,7 @@ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46 + 45, 46, 47, 48, 49, 50 }; #if YYDEBUG @@ -569,27 +574,28 @@ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 135, 135, 136, 137, 138, 162, 162, 217, 217, - 228, 228, 247, 248, 253, 253, 293, 295, 325, 331, - 337, 366, 367, 368, 371, 379, 392, 424, 430, 436, - 452, 454, 479, 481, 512, 514, 515, 516, 520, 530, - 541, 568, 572, 576, 604, 608, 652, 660, 668, 672, - 673, 677, 678, 682, 683, 683, 684, 685, 687, 687, - 694, 698, 699, 700, 701, 702, 738, 748, 759, 769, - 779, 815, 820, 852, 851, 875, 876, 880, 881, 885, - 886, 887, 888, 889, 890, 892, 897, 898, 899, 900, - 900, 901, 931, 940, 949, 997, 1006, 1015, 1052, 1062, - 1080, 1130, 1129, 1168, 1170, 1175, 1174, 1181, 1183, 1188, - 1192, 1252, 1253, 1254, 1255, 1256, 1264, 1263, 1282, 1281, - 1300, 1299, 1320, 1318, 1342, 1340, 1421, 1422, 1426, 1427, - 1428, 1429, 1430, 1432, 1437, 1442, 1447, 1452, 1457, 1462, - 1462, 1466, 1467, 1471, 1472, 1473, 1474, 1476, 1482, 1489, - 1494, 1499, 1499, 1540, 1552, 1564, 1575, 1591, 1645, 1659, - 1672, 1683, 1694, 1695, 1699, 1700, 1722, 1724, 1740, 1759, - 1760, 1763, 1765, 1766, 1787, 1794, 1810, 1811, 1815, 1820, - 1821, 1825, 1826, 1849, 1848, 1858, 1859, 1863, 1864, 1883, - 1913, 1921, 1922, 1926, 1927, 1932, 1933, 1934, 1935, 1936, - 1937, 1938, 1939, 1940, 1941 + 0, 137, 137, 138, 139, 140, 164, 164, 220, 220, + 231, 231, 250, 251, 256, 256, 296, 298, 328, 334, + 340, 369, 370, 371, 374, 382, 395, 427, 433, 439, + 455, 457, 482, 484, 515, 517, 518, 519, 523, 533, + 544, 571, 575, 579, 607, 611, 655, 663, 671, 675, + 676, 680, 681, 685, 686, 686, 687, 688, 690, 690, + 697, 701, 702, 703, 704, 705, 741, 751, 762, 772, + 782, 818, 823, 855, 854, 878, 879, 883, 884, 888, + 889, 890, 891, 892, 893, 895, 900, 901, 902, 903, + 903, 904, 934, 943, 952, 1000, 1009, 1018, 1055, 1065, + 1083, 1133, 1132, 1171, 1173, 1178, 1177, 1184, 1186, 1191, + 1195, 1255, 1256, 1257, 1258, 1259, 1267, 1266, 1285, 1284, + 1303, 1302, 1323, 1321, 1345, 1343, 1424, 1425, 1429, 1430, + 1431, 1432, 1433, 1435, 1440, 1445, 1450, 1455, 1460, 1465, + 1465, 1469, 1470, 1474, 1475, 1476, 1477, 1479, 1485, 1492, + 1497, 1502, 1502, 1543, 1555, 1567, 1578, 1594, 1648, 1662, + 1675, 1686, 1697, 1698, 1702, 1703, 1725, 1727, 1743, 1762, + 1763, 1766, 1768, 1769, 1790, 1797, 1813, 1814, 1818, 1823, + 1824, 1828, 1829, 1853, 1852, 1862, 1863, 1867, 1868, 1887, + 1904, 1905, 1909, 1914, 1915, 1919, 1920, 1935, 1936, 1937, + 1964, 1972, 1973, 1977, 1978, 1983, 1984, 1985, 1986, 1987, + 1988, 1989, 1990, 1991, 1992 }; #endif @@ -603,22 +609,23 @@ "T_LINE", "T_ARC", "T_RECTANGLE", "T_TEXT", "T_ELEMENTLINE", "T_ELEMENT", "T_PIN", "T_PAD", "T_GRID", "T_FLAGS", "T_SYMBOL", "T_SYMBOLLINE", "T_CURSOR", "T_ELEMENTARC", "T_MARK", "T_GROUPS", "T_STYLES", - "T_POLYGON", "T_POLYGON_HOLE", "T_NETLIST", "T_NET", "T_CONN", "T_AREA", - "T_THERMAL", "T_DRC", "T_ATTRIBUTE", "T_UMIL", "T_CMIL", "T_MIL", "T_IN", - "T_NM", "T_UM", "T_MM", "T_M", "T_KM", "'['", "']'", "'('", "')'", - "$accept", "parse", "parsepcb", "$@1", "$@2", "parsedata", "$@3", - "pcbfont", "parsefont", "$@4", "pcbfileversion", "pcbname", "pcbgrid", - "pcbgridold", "pcbgridnew", "pcbhigrid", "pcbcursor", "polyarea", - "pcbthermal", "pcbdrc", "pcbdrc1", "pcbdrc2", "pcbdrc3", "pcbflags", - "pcbgroups", "pcbstyles", "pcbdata", "pcbdefinitions", "pcbdefinition", - "$@5", "$@6", "via", "via_hi_format", "via_2.0_format", "via_1.7_format", - "via_newformat", "via_oldformat", "rats", "layer", "$@7", "layerdata", - "layerdefinitions", "layerdefinition", "$@8", "line_hi_format", - "line_1.7_format", "line_oldformat", "arc_hi_format", "arc_1.7_format", - "arc_oldformat", "text_oldformat", "text_newformat", "text_hi_format", - "polygon_format", "$@9", "polygonholes", "polygonhole", "$@10", - "polygonpoints", "polygonpoint", "element", "element_oldformat", "$@11", - "element_1.3.4_format", "$@12", "element_newformat", "$@13", + "T_POLYGON", "T_POLYGON_HOLE", "T_NETLIST", "T_NET", "T_CONN", + "T_NETLISTPATCH", "T_ADD_CONN", "T_DEL_CONN", "T_CHANGE_ATTRIB", + "T_AREA", "T_THERMAL", "T_DRC", "T_ATTRIBUTE", "T_UMIL", "T_CMIL", + "T_MIL", "T_IN", "T_NM", "T_UM", "T_MM", "T_M", "T_KM", "'['", "']'", + "'('", "')'", "$accept", "parse", "parsepcb", "$@1", "$@2", "parsedata", + "$@3", "pcbfont", "parsefont", "$@4", "pcbfileversion", "pcbname", + "pcbgrid", "pcbgridold", "pcbgridnew", "pcbhigrid", "pcbcursor", + "polyarea", "pcbthermal", "pcbdrc", "pcbdrc1", "pcbdrc2", "pcbdrc3", + "pcbflags", "pcbgroups", "pcbstyles", "pcbdata", "pcbdefinitions", + "pcbdefinition", "$@5", "$@6", "via", "via_hi_format", "via_2.0_format", + "via_1.7_format", "via_newformat", "via_oldformat", "rats", "layer", + "$@7", "layerdata", "layerdefinitions", "layerdefinition", "$@8", + "line_hi_format", "line_1.7_format", "line_oldformat", "arc_hi_format", + "arc_1.7_format", "arc_oldformat", "text_oldformat", "text_newformat", + "text_hi_format", "polygon_format", "$@9", "polygonholes", "polygonhole", + "$@10", "polygonpoints", "polygonpoint", "element", "element_oldformat", + "$@11", "element_1.3.4_format", "$@12", "element_newformat", "$@13", "element_1.7_format", "$@14", "element_hi_format", "$@15", "elementdefinitions", "elementdefinition", "$@16", "relementdefs", "relementdef", "$@17", "pin_hi_format", "pin_1.7_format", @@ -626,8 +633,9 @@ "pad_1.7_format", "pad_newformat", "pad", "flags", "symbols", "symbol", "symbolhead", "symbolid", "symboldata", "symboldefinition", "hiressymbol", "pcbnetlist", "pcbnetdef", "nets", "netdefs", "net", - "$@18", "connections", "conndefs", "conn", "attribute", "opt_string", - "number", "measure", YY_NULLPTR + "$@18", "connections", "conndefs", "conn", "pcbnetlistpatch", + "pcbnetpatchdef", "netpatches", "netpatchdefs", "netpatch", "attribute", + "opt_string", "number", "measure", YY_NULLPTR }; #endif @@ -640,15 +648,15 @@ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 91, 93, 40, - 41 + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 91, 93, 40, 41 }; # endif -#define YYPACT_NINF -445 +#define YYPACT_NINF -449 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-445))) + (!!((Yystate) == (-449))) #define YYTABLE_NINF -90 @@ -659,68 +667,71 @@ STATE-NUM. */ static const yytype_int16 yypact[] = { - 15, -445, 27, -445, 32, 61, -445, 189, -445, 67, - -445, 46, 86, 30, -445, -445, -445, -445, -445, -445, - -445, 52, 120, 136, -445, 147, -445, 75, 61, -445, - -445, -445, -445, -445, -445, -445, -445, 144, 67, -445, - -445, 109, 184, 114, 47, 84, 124, 44, 44, 44, - 44, -445, 80, -445, -445, 29, 29, -445, -4, 92, - 139, 143, 228, 135, -445, -445, -445, -445, -445, 157, - 164, 169, 173, -445, -445, 211, 44, 44, 44, 44, - 180, -445, -445, 44, 44, 241, -445, -445, -445, -445, - 44, 4, 44, 44, 255, 153, 186, 195, 44, 196, - -445, -445, -445, -445, -445, -445, -445, -445, -445, 44, - 44, 191, 204, 206, 168, 174, 44, 44, 44, -445, - 44, 44, 44, 44, 44, 192, 210, 236, 102, 44, - -445, 208, 44, 115, 44, 44, 209, 224, 225, 44, - 44, 230, 229, 44, 44, 44, 44, 44, 242, 260, - 44, 44, 44, 334, 281, 44, 349, 133, 44, 44, - -445, -445, -445, 44, 44, -445, -445, 357, -1, 44, - 44, 291, 44, 315, 356, -445, -445, -445, 44, 44, - 44, 328, -445, 44, 331, 383, 140, 384, 393, 44, - 44, 351, 350, -445, 354, 353, -445, 358, 44, 355, - 378, 44, 44, 44, 359, 294, 401, -445, 360, 405, - 406, 47, 407, 44, 44, -445, -445, -445, -445, -445, - 44, 299, 364, 386, 44, 44, 411, -445, 279, 280, - 367, 297, 368, 369, 294, -445, 75, -445, -445, -445, - -445, -445, -445, -445, -445, -445, -445, 47, -445, 372, - 414, 375, 374, 379, 380, 44, 381, 382, 422, 298, - 412, 44, 60, 385, 41, 44, 44, 44, 44, 44, - 44, 44, 47, -445, -445, -445, 396, -445, 395, -445, - -445, -445, -445, 8, -445, -445, 397, 423, 427, 151, - -445, 44, 398, 44, 400, 301, 402, 403, 302, 305, - 155, -445, 75, -445, -445, -445, -445, -445, 44, 44, - 44, 44, 44, 44, 44, 408, -445, -445, -445, 10, - -445, 409, 410, 415, 47, 404, 446, -445, 44, 44, - 44, 44, 44, 44, 44, 44, -445, -445, -445, 44, - 44, 44, 44, 44, 44, 44, 413, -445, 44, -445, - -445, 424, -445, -445, 416, -445, 425, 41, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 207, -445, 426, 428, 430, 41, 431, 178, - 44, 44, 44, 44, 44, 44, 429, 432, 44, 44, - 44, 44, 452, 453, 457, 470, 320, -445, 434, -445, - 222, -445, -445, 44, 44, 226, 44, 44, 44, -445, - -445, 44, 44, 44, 44, 442, 47, 443, 459, 44, - 44, -445, 320, 449, 108, -445, 108, 44, 44, 490, - 489, 44, 44, 44, 47, 5, 44, 44, -445, 448, - -445, 447, 44, 44, -12, -445, 450, 460, 449, -445, - 321, 326, 327, 335, 218, -445, 75, -445, -445, -445, - -445, 251, 461, 468, 471, 387, 492, 44, 44, 463, - 472, -445, 44, 79, -445, -445, 479, 480, 451, -445, - -445, 525, -445, -445, 44, 44, 44, 44, 44, 44, - 44, 44, -445, -445, -445, -445, -445, -445, -445, 482, - 529, 392, 44, 44, -445, -445, 47, 484, 531, -445, - -445, -445, 530, 44, 44, 44, 44, 44, 44, 44, - 44, -445, 491, 493, 538, 496, 495, 498, -445, 497, - 320, 499, 44, 44, 44, 44, 44, 44, 44, 44, - -445, -445, 500, -445, -445, -445, -445, 501, 503, 44, - 44, 44, 44, 44, 44, 44, 44, -445, -445, -445, - 44, 44, 44, 44, 44, 44, 44, 44, 515, 505, - 504, 44, 44, 44, 44, 44, 44, 506, 507, 515, - -445, -445, -445, 550, 552, 44, 44, 44, 44, 553, - -445, -445, 554, 555, 556, 557, 516, 517, 518, 47, - 561, 560, 563, -445, -445, -445, 522, 521, 47, 568, - -445, -445, 526, 523, -445, -445 + 151, -449, 39, -449, 4, 30, -449, 23, -449, 56, + -449, 32, 97, -31, -449, -449, -449, -449, -449, -449, + -449, 73, -5, 26, -449, 169, -449, 88, 30, -449, + -449, -449, -449, -449, -449, -449, -449, 48, 56, -449, + -449, 129, 55, 116, 49, 113, 140, 63, 63, 63, + 63, -449, 95, -449, -449, 84, 84, -449, -16, 105, + 143, 157, 92, 147, -449, -449, -449, -449, -449, 158, + 161, 168, 176, -449, -449, 305, 63, 63, 63, 63, + 187, -449, -449, 63, 63, 134, -449, -449, -449, -449, + 63, 6, 63, 63, 160, 156, 191, 192, 63, 210, + -449, -449, -449, -449, -449, -449, -449, -449, -449, 63, + 63, 224, 229, 233, 196, 197, 63, 63, 63, -449, + 63, 63, 63, 63, 63, 218, 257, 272, 185, 63, + -449, 236, 63, 221, 63, 63, 245, 255, 270, 63, + 63, 274, 287, 63, 63, 63, 63, 63, 283, 302, + 63, 63, 63, 353, 312, 63, 362, 239, 63, 63, + -449, -449, -449, 63, 63, -449, -449, 378, 0, 63, + 63, 334, 63, 341, 372, -449, -449, -449, 63, 63, + 63, 342, -449, 63, 343, 394, 251, 397, 398, 63, + 63, 351, 350, -449, 354, 355, -449, 356, 63, 357, + 380, 63, 63, 63, 358, 260, 399, -449, 359, 408, + 409, 49, 410, 63, 63, -449, -449, -449, -449, -449, + 63, 228, 363, 389, 63, 63, 414, -449, 205, 226, + 366, 253, 367, 368, 260, -449, 88, -449, -449, -449, + -449, -449, -449, -449, -449, -449, -449, 49, -449, 369, + 417, 373, 370, 376, 375, 63, 379, 381, 424, 256, + 412, 63, 90, 384, 33, 63, 63, 63, 63, 63, + 63, 63, 49, -449, -449, -449, 385, -449, 386, -449, + -449, -449, -449, 11, -449, -449, 387, 433, 436, 195, + -449, 63, 390, 63, 393, 276, 403, 404, 279, 280, + 102, -449, 88, -449, -449, -449, -449, -449, 63, 63, + 63, 63, 63, 63, 63, 405, -449, -449, -449, 13, + -449, 391, 406, 416, 49, 411, 454, -449, 63, 63, + 63, 63, 63, 63, 63, 63, -449, -449, -449, 63, + 63, 63, 63, 63, 63, 63, 415, -449, 63, -449, + -449, 418, 427, -449, 413, -449, 419, 33, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 264, -449, 420, 421, 423, -449, -449, 425, + 33, 426, 121, 63, 63, 63, 63, 63, 63, 422, + 437, 63, 63, 63, 63, 458, 457, 465, 464, 320, + -449, 428, 438, -449, 183, -449, -449, 63, 63, 299, + 63, 63, 63, -449, -449, 63, 63, 63, 63, 439, + 49, 440, 473, 63, 63, -449, 320, 448, 442, 165, + -449, 165, 63, 63, 486, 490, 63, 63, 63, 49, + 2, 63, 63, -449, 445, -449, 444, 63, 63, -17, + -449, 446, 447, 448, -449, -10, 321, 326, 327, 330, + 222, -449, 88, -449, -449, -449, -449, 234, 450, 449, + 459, 352, 494, 63, 63, 460, 461, -449, 63, 110, + -449, -449, 462, 463, 466, -449, -449, 510, -449, -449, + 467, 468, 469, 478, -10, -449, 63, 63, 63, 63, + 63, 63, 63, 63, -449, -449, -449, -449, -449, -449, + -449, 479, 514, 383, 63, 63, -449, -449, 49, 480, + 519, -449, -449, -449, 529, 530, 531, 538, -449, -449, + 63, 63, 63, 63, 63, 63, 63, 63, -449, 493, + 495, 544, 502, 503, 506, -449, 505, 320, 507, 554, + 556, 557, 63, 63, 63, 63, 63, 63, 63, 63, + -449, -449, 515, -449, -449, -449, -449, 516, 518, 520, + 521, 562, 63, 63, 63, 63, 63, 63, 63, 63, + -449, -449, -449, -449, -449, 522, 63, 63, 63, 63, + 63, 63, 63, 63, 539, -449, 525, 524, 63, 63, + 63, 63, 63, 63, 526, 527, 539, -449, -449, -449, + 567, 574, 63, 63, 63, 63, 576, -449, -449, 577, + 578, 579, 580, 535, 534, 536, 49, 585, 586, 587, + -449, -449, -449, 542, 537, 49, 591, -449, -449, 545, + 546, -449, -449 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -735,16 +746,16 @@ 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 55, 59, 0, 0, 165, 0, 0, 0, 0, 0, 29, 21, 22, 23, 162, 163, 0, - 0, 0, 0, 193, 194, 195, 0, 0, 0, 0, + 0, 0, 0, 203, 204, 205, 0, 0, 0, 0, 0, 169, 170, 0, 0, 0, 166, 172, 173, 17, - 0, 0, 0, 0, 0, 30, 0, 0, 0, 192, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 0, + 0, 0, 0, 0, 0, 30, 0, 0, 0, 202, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, - 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 190, 167, 168, 0, 0, 20, 19, 0, 0, 0, + 200, 167, 168, 0, 0, 20, 19, 0, 0, 0, 0, 0, 0, 0, 43, 35, 36, 37, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 31, 0, 0, 0, @@ -757,55 +768,59 @@ 13, 0, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 74, 78, 90, 0, 68, 0, 71, 72, 175, 174, 0, 41, 42, 0, 0, 0, 0, - 12, 0, 194, 0, 0, 0, 0, 0, 0, 0, + 12, 0, 204, 0, 0, 0, 0, 0, 0, 0, 139, 126, 0, 128, 129, 130, 131, 132, 0, 0, 0, 0, 0, 0, 0, 0, 66, 67, 38, 0, 44, 0, 0, 177, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 117, 127, 140, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 47, - 46, 0, 7, 176, 0, 120, 0, 139, 0, 0, + 46, 0, 191, 176, 0, 120, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 101, 0, 0, 0, 139, 0, 139, + 0, 0, 0, 101, 0, 0, 0, 7, 190, 0, + 139, 0, 139, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, + 40, 0, 0, 124, 139, 122, 119, 0, 0, 0, + 0, 0, 0, 137, 138, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 103, 107, 180, 0, 151, + 121, 151, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 85, 0, 98, 0, 0, 0, 0, + 108, 0, 0, 179, 181, 194, 0, 0, 0, 0, + 151, 141, 0, 144, 143, 146, 145, 151, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, + 100, 99, 0, 0, 0, 102, 104, 0, 178, 182, + 0, 0, 0, 0, 193, 195, 0, 0, 0, 0, + 0, 0, 0, 0, 125, 142, 152, 123, 133, 134, + 157, 0, 0, 0, 0, 0, 92, 93, 0, 204, + 0, 110, 109, 105, 0, 0, 0, 0, 192, 196, + 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, + 0, 0, 0, 0, 0, 97, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 107, 40, 0, 124, - 139, 122, 119, 0, 0, 0, 0, 0, 0, 137, - 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 103, 107, 180, 151, 121, 151, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, - 98, 0, 0, 0, 0, 108, 0, 0, 179, 181, - 0, 0, 0, 0, 151, 141, 0, 144, 143, 146, - 145, 151, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 94, 0, 0, 100, 99, 0, 0, 0, 102, - 104, 0, 178, 182, 0, 0, 0, 0, 0, 0, - 0, 0, 125, 142, 152, 123, 133, 134, 157, 0, - 0, 0, 0, 0, 92, 93, 0, 194, 0, 110, - 109, 105, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 156, 0, 0, 0, 0, 0, 0, 97, 0, - 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 161, 0, 135, 136, 95, 96, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 160, 106, 183, - 0, 0, 0, 0, 0, 0, 0, 0, 186, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, - 187, 147, 148, 0, 0, 0, 0, 0, 0, 0, - 184, 188, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 149, 150, 189, 0, 0, 0, 0, - 153, 154, 0, 0, 158, 159 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 160, 106, 183, 197, 198, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 186, 199, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 185, 187, 147, 148, + 0, 0, 0, 0, 0, 0, 0, 184, 188, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 149, 150, 189, 0, 0, 0, 0, 153, 154, 0, + 0, 158, 159 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -445, -445, -445, -445, -445, -445, -445, -445, 316, -445, - -445, -445, -445, -445, -445, -445, -445, -445, -445, -445, - -445, -445, -445, -445, -445, -445, 286, -445, 558, -445, - -445, -445, -445, -445, -445, -445, -445, -445, -445, -445, - -445, -445, 343, -445, -445, -445, -445, -445, -445, -445, - -445, -445, -445, -445, -445, -445, -445, -445, -416, -445, - 551, -445, -445, -445, -445, -445, -445, -445, -445, -445, - -445, -336, -280, -445, 152, -444, -445, -445, -445, -445, - -445, -445, -445, -445, -445, -445, -207, -445, 542, -445, - 528, -445, -445, -445, -445, -445, -445, -445, 134, -445, - -445, -445, 2, -231, -445, -47, -48 + -449, -449, -449, -449, -449, -449, -449, -449, 336, -449, + -449, -449, -449, -449, -449, -449, -449, -449, -449, -449, + -449, -449, -449, -449, -449, -449, 309, -449, 581, -449, + -449, -449, -449, -449, -449, -449, -449, -449, -449, -449, + -449, -449, 365, -449, -449, -449, -449, -449, -449, -449, + -449, -449, -449, -449, -449, -449, -449, -449, -423, -449, + 573, -449, -449, -449, -449, -449, -449, -449, -449, -449, + -449, -339, -292, -449, 171, -448, -449, -449, -449, -449, + -449, -449, -449, -449, -449, -449, -190, -449, 565, -449, + 548, -449, -449, -449, -449, -449, -449, -449, 152, -449, + -449, -449, 1, -449, -449, -449, -449, 114, -231, -449, + -47, -48 }; /* YYDEFGOTO[NTERM-NUM]. */ @@ -816,12 +831,13 @@ 175, 176, 177, 200, 223, 260, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 205, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 396, 444, 480, 530, 421, 422, - 14, 15, 264, 16, 357, 17, 377, 18, 426, 19, - 424, 300, 301, 302, 454, 455, 456, 457, 458, 303, - 304, 305, 459, 460, 306, 307, 69, 38, 39, 40, - 83, 58, 87, 88, 352, 353, 447, 448, 449, 568, - 578, 579, 580, 53, 131, 75, 76 + 243, 244, 245, 246, 399, 449, 486, 547, 425, 426, + 14, 15, 264, 16, 357, 17, 380, 18, 431, 19, + 429, 300, 301, 302, 460, 461, 462, 463, 464, 303, + 304, 305, 465, 466, 306, 307, 69, 38, 39, 40, + 83, 58, 87, 88, 352, 353, 452, 453, 454, 594, + 605, 606, 607, 377, 378, 493, 494, 495, 53, 131, + 75, 76 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -829,128 +845,132 @@ number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 77, 78, 79, 192, 251, 275, 445, 73, 74, 470, - 493, 73, 74, 73, 74, -10, 1, 493, 478, 85, - 337, 379, -6, -6, -10, -10, -10, 10, 109, 110, - 111, 112, -8, 81, 82, 114, 115, -14, 479, 11, - 276, 400, 118, 120, 121, 122, 86, 73, 74, 193, - 129, 67, -10, 68, 119, 471, 318, 295, 347, 296, - 297, 132, 133, 73, 292, 315, 298, 299, 139, 140, - 141, 338, 142, 143, 144, 145, 146, 44, 13, 45, - 152, 153, 73, 507, 155, 157, 158, 159, 70, 37, - 71, 163, 164, 41, 42, 167, 168, 169, 170, 337, - 171, 46, 178, 179, 180, 73, 74, 183, 151, 186, - 187, 188, 52, 59, 547, 189, 190, 354, 73, 74, - 337, 156, 194, 195, 450, 197, 451, 452, 72, 80, - 201, 202, 203, 453, 62, 206, 73, 74, 210, 185, - 89, 213, 214, 73, 74, 90, 209, -49, 20, 91, - 220, -50, 20, 224, 225, 226, 21, 22, 23, 94, - 21, 22, 23, 96, -58, 253, 254, 47, -58, 48, - 97, 295, 255, 296, 297, 98, 261, 262, -49, 99, - 298, 299, -50, 49, -54, 50, 113, 125, -54, -50, - 20, 55, 127, 56, 295, 134, 296, 297, 21, 22, - 23, 128, 130, 298, 299, 336, -58, 283, 135, 439, - 73, 74, 136, 394, 291, 293, 137, 308, 309, 310, - 311, 312, 313, 314, 138, 494, -54, 469, 402, 73, - 74, 60, 429, 61, 450, 319, 451, 452, 295, 147, - 296, 297, 150, 453, 324, 148, 326, 298, 299, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 154, 160, - 339, 340, 341, 342, 343, 344, 345, 450, 492, 451, - 452, 348, 425, 161, 162, 92, 453, 93, 165, 166, - 358, 359, 360, 361, 362, 363, 364, 365, 116, 172, - 117, 366, 367, 368, 369, 370, 173, 371, 372, 527, - 374, 495, 123, 256, 124, 257, 228, 229, 230, 231, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 232, 393, 395, 265, 267, 266, 268, - 182, -89, 403, 404, 405, 406, 407, 408, 181, 196, - 411, 412, 413, 414, 270, 287, 271, 288, 328, 332, - 329, 333, 334, 184, 335, 427, 428, 430, 431, 432, - 433, 191, 198, 434, 435, 436, 437, 419, 484, 420, - 485, 442, 443, 486, 488, 487, 489, 199, 204, 462, - 463, 207, 490, 466, 491, 467, 468, 208, 211, 472, - 473, 499, 606, 500, 476, 477, 523, 212, 524, 215, - 216, 612, 217, 218, 221, 222, 219, 247, 227, 249, - 248, 252, 250, 258, 259, 263, 269, 272, 278, 273, - 502, 503, 277, 279, 280, 506, 508, 281, 286, 321, - 282, 284, 285, 322, -14, 294, 513, 514, 515, 516, - 517, 518, 519, 520, 316, 317, 351, 320, 325, 327, - 356, 330, 331, 355, 525, 526, 415, 349, 346, 416, - 350, 417, 373, 441, 376, 532, 533, 534, 535, 536, - 537, 538, 539, 375, 397, 378, 418, 409, 398, 399, - 401, 446, 410, 423, 549, 550, 551, 552, 553, 554, - 555, 556, 438, 440, 464, 465, 474, 475, 501, 481, - 511, 560, 561, 562, 563, 564, 565, 566, 567, 496, - 482, 504, 569, 570, 571, 572, 573, 574, 497, 575, - 576, 498, 505, 583, 584, 585, 586, 509, 587, 588, - 510, 512, 521, 522, 528, 529, 531, 594, 595, 596, - 597, 540, 542, 541, 543, 544, 545, 546, 577, 548, - 557, 558, 559, 581, 582, 589, 592, 590, 593, 598, - 599, 600, 601, 602, 603, 607, 608, 604, 605, 609, - 610, 611, 613, 615, 614, 323, 290, 274, 461, 54, - 57, 591, 483, 51, 84 + 77, 78, 79, 450, 192, 275, 476, 85, 337, 73, + 74, 11, 505, 484, 73, 74, 73, 74, 382, 505, + 44, 251, 45, -50, 20, 490, 491, 492, 109, 110, + 111, 112, 21, 22, 23, 114, 115, 485, 86, 10, + -58, 404, 118, 120, 121, 122, 47, 13, 48, 295, + 129, 296, 297, 67, 193, 68, 477, 276, 298, 299, + 119, 132, 133, 318, -54, 347, 73, 74, 139, 140, + 141, 338, 142, 143, 144, 145, 146, 49, 37, 50, + 152, 153, 315, 41, 155, 157, 158, 159, 81, 82, + 337, 163, 164, 73, 292, 167, 168, 169, 170, 55, + 171, 56, 178, 179, 180, 42, 60, 183, 61, 186, + 187, 188, 337, 73, 519, 189, 190, 70, 295, 71, + 296, 297, 194, 195, 567, 197, 46, 298, 299, 52, + 201, 202, 203, 59, 354, 206, 62, 295, 210, 296, + 297, 213, 214, 92, 72, 93, 298, 299, 80, 90, + 220, -10, 1, 224, 225, 226, 336, 89, -6, -6, + -10, -10, -10, 91, 96, 253, 254, 97, -8, -49, + 20, 94, 255, -14, 98, 406, 261, 262, 21, 22, + 23, 456, 99, 457, 458, 116, -58, 117, 73, 74, + 459, 151, -10, 113, 125, -50, 20, 127, 128, 295, + -49, 296, 297, -49, 21, 22, 23, 283, 298, 299, + -54, 123, -58, 124, 291, 293, 130, 308, 309, 310, + 311, 312, 313, 314, 73, 74, -50, 156, 134, -50, + 444, 506, 256, 135, 257, 319, -54, 430, 456, 136, + 457, 458, 73, 74, 324, 185, 326, 459, 137, 475, + 456, 138, 457, 458, 73, 74, 265, 209, 266, 459, + 339, 340, 341, 342, 343, 344, 345, 73, 74, 147, + 397, 348, 228, 229, 230, 231, 504, 267, 150, 268, + 358, 359, 360, 361, 362, 363, 364, 365, 507, 232, + 154, 366, 367, 368, 369, 370, 148, 371, 372, 160, + 374, -89, 73, 74, 270, 434, 271, 287, 161, 288, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 162, 396, 398, 165, 328, 544, 329, + 332, 334, 333, 335, 172, 407, 408, 409, 410, 411, + 412, 166, 173, 415, 416, 417, 418, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 511, 181, 512, 432, + 433, 435, 436, 437, 438, 182, 184, 439, 440, 441, + 442, 423, 496, 424, 497, 447, 448, 498, 500, 499, + 501, 502, 191, 503, 468, 469, 196, 540, 472, 541, + 473, 474, 198, 199, 478, 479, 204, 207, 208, 482, + 483, 211, 212, 215, 216, 247, 217, 222, 219, 218, + 221, 227, 249, 248, 252, 250, 258, 259, 263, 269, + 272, 278, 273, 277, 280, 279, 514, 515, 281, 282, + 286, 518, 520, 284, -14, 285, 633, 316, 294, 321, + 317, 320, 322, 349, 325, 639, 327, 351, 530, 531, + 532, 533, 534, 535, 536, 537, 330, 331, 356, 346, + 350, 376, 419, 420, 355, 379, 542, 543, 373, 421, + 422, 375, 400, 381, 413, 401, 402, 446, 403, 405, + 451, 427, 552, 553, 554, 555, 556, 557, 558, 559, + 470, 414, 428, 443, 445, 455, 471, 480, 481, 487, + 513, 488, 508, 509, 572, 573, 574, 575, 576, 577, + 578, 579, 516, 510, 521, 517, 524, 522, 539, 523, + 525, 526, 527, 546, 586, 587, 588, 589, 590, 591, + 592, 593, 528, 538, 545, 548, 549, 550, 596, 597, + 598, 599, 600, 601, 551, 602, 603, 560, 562, 561, + 610, 611, 612, 613, 563, 614, 615, 564, 565, 566, + 569, 568, 570, 571, 621, 622, 623, 624, 585, 580, + 581, 582, 604, 619, 583, 584, 595, 608, 609, 616, + 620, 617, 625, 626, 627, 628, 629, 630, 631, 634, + 632, 638, 635, 636, 637, 640, 290, 641, 323, 274, + 642, 54, 467, 57, 84, 489, 51, 618, 529 }; static const yytype_uint16 yycheck[] = { - 48, 49, 50, 4, 211, 236, 422, 3, 4, 4, - 454, 3, 4, 3, 4, 0, 1, 461, 30, 23, - 300, 357, 7, 8, 9, 10, 11, 0, 76, 77, - 78, 79, 17, 4, 5, 83, 84, 22, 50, 7, - 247, 377, 90, 91, 92, 93, 50, 3, 4, 50, - 98, 4, 37, 6, 50, 50, 48, 16, 48, 18, - 19, 109, 110, 3, 4, 272, 25, 26, 116, 117, - 118, 302, 120, 121, 122, 123, 124, 47, 17, 49, - 128, 129, 3, 4, 132, 133, 134, 135, 4, 22, - 6, 139, 140, 47, 8, 143, 144, 145, 146, 379, - 147, 49, 150, 151, 152, 3, 4, 155, 6, 157, - 158, 159, 37, 4, 530, 163, 164, 324, 3, 4, - 400, 6, 169, 170, 16, 172, 18, 19, 4, 49, - 178, 179, 180, 25, 20, 183, 3, 4, 186, 6, - 48, 189, 190, 3, 4, 6, 6, 0, 1, 6, - 198, 0, 1, 201, 202, 203, 9, 10, 11, 24, - 9, 10, 11, 6, 17, 213, 214, 47, 17, 49, - 6, 16, 220, 18, 19, 6, 224, 225, 31, 6, - 25, 26, 31, 47, 37, 49, 6, 34, 37, 0, - 1, 47, 6, 49, 16, 4, 18, 19, 9, 10, - 11, 6, 6, 25, 26, 50, 17, 255, 4, 416, - 3, 4, 6, 6, 261, 262, 48, 265, 266, 267, - 268, 269, 270, 271, 50, 456, 37, 434, 50, 3, - 4, 47, 6, 49, 16, 283, 18, 19, 16, 47, - 18, 19, 6, 25, 291, 35, 293, 25, 26, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 50, 50, - 308, 309, 310, 311, 312, 313, 314, 16, 50, 18, - 19, 319, 50, 49, 49, 47, 25, 49, 48, 50, - 328, 329, 330, 331, 332, 333, 334, 335, 47, 47, - 49, 339, 340, 341, 342, 343, 36, 344, 345, 506, - 348, 50, 47, 4, 49, 6, 12, 13, 14, 15, + 48, 49, 50, 426, 4, 236, 4, 23, 300, 3, + 4, 7, 460, 30, 3, 4, 3, 4, 357, 467, + 51, 211, 53, 0, 1, 35, 36, 37, 76, 77, + 78, 79, 9, 10, 11, 83, 84, 54, 54, 0, + 17, 380, 90, 91, 92, 93, 51, 17, 53, 16, + 98, 18, 19, 4, 54, 6, 54, 247, 25, 26, + 54, 109, 110, 52, 41, 52, 3, 4, 116, 117, + 118, 302, 120, 121, 122, 123, 124, 51, 22, 53, + 128, 129, 272, 51, 132, 133, 134, 135, 4, 5, + 382, 139, 140, 3, 4, 143, 144, 145, 146, 51, + 147, 53, 150, 151, 152, 8, 51, 155, 53, 157, + 158, 159, 404, 3, 4, 163, 164, 4, 16, 6, + 18, 19, 169, 170, 547, 172, 53, 25, 26, 41, + 178, 179, 180, 4, 324, 183, 20, 16, 186, 18, + 19, 189, 190, 51, 4, 53, 25, 26, 53, 6, + 198, 0, 1, 201, 202, 203, 54, 52, 7, 8, + 9, 10, 11, 6, 6, 213, 214, 6, 17, 0, + 1, 24, 220, 22, 6, 54, 224, 225, 9, 10, + 11, 16, 6, 18, 19, 51, 17, 53, 3, 4, + 25, 6, 41, 6, 38, 0, 1, 6, 6, 16, + 31, 18, 19, 34, 9, 10, 11, 255, 25, 26, + 41, 51, 17, 53, 261, 262, 6, 265, 266, 267, + 268, 269, 270, 271, 3, 4, 31, 6, 4, 34, + 420, 462, 4, 4, 6, 283, 41, 54, 16, 6, + 18, 19, 3, 4, 291, 6, 293, 25, 52, 439, + 16, 54, 18, 19, 3, 4, 51, 6, 53, 25, + 308, 309, 310, 311, 312, 313, 314, 3, 4, 51, + 6, 319, 12, 13, 14, 15, 54, 51, 6, 53, + 328, 329, 330, 331, 332, 333, 334, 335, 54, 29, + 54, 339, 340, 341, 342, 343, 39, 344, 345, 54, + 348, 41, 3, 4, 51, 6, 53, 51, 53, 53, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 29, 371, 372, 47, 47, 49, 49, - 49, 37, 380, 381, 382, 383, 384, 385, 4, 48, - 388, 389, 390, 391, 47, 47, 49, 49, 47, 47, - 49, 49, 47, 4, 49, 403, 404, 405, 406, 407, - 408, 4, 47, 411, 412, 413, 414, 47, 47, 49, - 49, 419, 420, 47, 47, 49, 49, 21, 50, 427, - 428, 50, 47, 431, 49, 432, 433, 4, 4, 436, - 437, 4, 599, 6, 442, 443, 4, 4, 6, 48, - 50, 608, 48, 50, 49, 27, 48, 6, 49, 4, - 50, 4, 6, 49, 28, 4, 49, 49, 4, 50, - 467, 468, 50, 48, 50, 472, 473, 48, 6, 6, - 50, 50, 50, 6, 22, 50, 484, 485, 486, 487, - 488, 489, 490, 491, 48, 50, 31, 50, 50, 49, - 4, 49, 49, 49, 502, 503, 4, 48, 50, 6, - 50, 4, 49, 4, 48, 513, 514, 515, 516, 517, - 518, 519, 520, 49, 48, 50, 6, 48, 50, 49, - 49, 32, 50, 49, 532, 533, 534, 535, 536, 537, - 538, 539, 50, 50, 4, 6, 48, 50, 6, 49, - 49, 549, 550, 551, 552, 553, 554, 555, 556, 48, - 50, 48, 560, 561, 562, 563, 564, 565, 50, 566, - 567, 50, 50, 571, 572, 573, 574, 48, 575, 576, - 50, 6, 50, 4, 50, 4, 6, 585, 586, 587, - 588, 50, 4, 50, 48, 50, 48, 50, 33, 50, - 50, 50, 49, 48, 50, 49, 6, 50, 6, 6, - 6, 6, 6, 6, 48, 4, 6, 50, 50, 6, - 48, 50, 4, 50, 48, 289, 260, 234, 426, 28, - 38, 579, 448, 25, 56 + 368, 369, 370, 53, 371, 372, 52, 51, 518, 53, + 51, 51, 53, 53, 51, 383, 384, 385, 386, 387, + 388, 54, 40, 391, 392, 393, 394, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 4, 4, 6, 407, + 408, 409, 410, 411, 412, 53, 4, 415, 416, 417, + 418, 51, 51, 53, 53, 423, 424, 51, 51, 53, + 53, 51, 4, 53, 432, 433, 52, 4, 436, 6, + 437, 438, 51, 21, 441, 442, 54, 54, 4, 447, + 448, 4, 4, 52, 54, 6, 52, 27, 52, 54, + 53, 53, 4, 54, 4, 6, 53, 28, 4, 53, + 53, 4, 54, 54, 54, 52, 473, 474, 52, 54, + 6, 478, 479, 54, 22, 54, 626, 52, 54, 6, + 54, 54, 6, 52, 54, 635, 53, 31, 496, 497, + 498, 499, 500, 501, 502, 503, 53, 53, 4, 54, + 54, 34, 4, 6, 53, 52, 514, 515, 53, 4, + 6, 53, 52, 54, 52, 54, 53, 4, 53, 53, + 32, 53, 530, 531, 532, 533, 534, 535, 536, 537, + 4, 54, 54, 54, 54, 53, 6, 52, 54, 53, + 6, 54, 52, 54, 552, 553, 554, 555, 556, 557, + 558, 559, 52, 54, 52, 54, 6, 54, 4, 53, + 53, 53, 53, 4, 572, 573, 574, 575, 576, 577, + 578, 579, 54, 54, 54, 6, 6, 6, 586, 587, + 588, 589, 590, 591, 6, 592, 593, 54, 4, 54, + 598, 599, 600, 601, 52, 602, 603, 54, 52, 54, + 6, 54, 6, 6, 612, 613, 614, 615, 6, 54, + 54, 53, 33, 6, 54, 54, 54, 52, 54, 53, + 6, 54, 6, 6, 6, 6, 6, 52, 54, 4, + 54, 54, 6, 6, 52, 4, 260, 52, 289, 234, + 54, 28, 431, 38, 56, 453, 25, 606, 494 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -957,100 +977,104 @@ symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 1, 52, 53, 54, 55, 56, 57, 59, 60, - 0, 7, 61, 17, 111, 112, 114, 116, 118, 120, - 1, 9, 10, 11, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 22, 138, 139, - 140, 47, 8, 62, 47, 49, 49, 47, 49, 47, - 49, 79, 37, 154, 111, 47, 49, 139, 142, 4, - 47, 49, 20, 63, 64, 65, 66, 4, 6, 137, - 4, 6, 4, 3, 4, 156, 157, 157, 157, 157, - 49, 4, 5, 141, 141, 23, 50, 143, 144, 48, - 6, 6, 47, 49, 24, 67, 6, 6, 6, 6, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 157, - 157, 157, 157, 6, 157, 157, 47, 49, 157, 50, - 157, 157, 157, 47, 49, 34, 68, 6, 6, 157, - 6, 155, 157, 157, 4, 4, 6, 48, 50, 157, - 157, 157, 157, 157, 157, 157, 157, 47, 35, 69, - 6, 6, 157, 157, 50, 157, 6, 157, 157, 157, - 50, 49, 49, 157, 157, 48, 50, 157, 157, 157, - 157, 156, 47, 36, 70, 71, 72, 73, 157, 157, - 157, 4, 49, 157, 4, 6, 157, 157, 157, 157, - 157, 4, 4, 50, 156, 156, 48, 156, 47, 21, - 74, 157, 157, 157, 50, 90, 157, 50, 4, 6, - 157, 4, 4, 157, 157, 48, 50, 48, 50, 48, - 157, 49, 27, 75, 157, 157, 157, 49, 12, 13, - 14, 15, 29, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 6, 50, 4, - 6, 137, 4, 157, 157, 157, 4, 6, 49, 28, - 76, 157, 157, 4, 113, 47, 49, 47, 49, 49, - 47, 49, 49, 50, 93, 154, 137, 50, 4, 48, - 50, 48, 50, 157, 50, 50, 6, 47, 49, 58, - 59, 156, 4, 156, 50, 16, 18, 19, 25, 26, - 122, 123, 124, 130, 131, 132, 135, 136, 157, 157, - 157, 157, 157, 157, 157, 137, 48, 50, 48, 157, - 50, 6, 6, 77, 156, 50, 156, 49, 47, 49, - 49, 49, 47, 49, 47, 49, 50, 123, 154, 157, - 157, 157, 157, 157, 157, 157, 50, 48, 157, 48, - 50, 31, 145, 146, 137, 49, 4, 115, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 156, 156, 49, 157, 49, 48, 117, 50, 122, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 156, 6, 156, 105, 48, 50, 49, - 122, 49, 50, 157, 157, 157, 157, 157, 157, 48, - 50, 157, 157, 157, 157, 4, 6, 4, 6, 47, - 49, 109, 110, 49, 121, 50, 119, 157, 157, 6, - 157, 157, 157, 157, 157, 157, 157, 157, 50, 137, - 50, 4, 157, 157, 106, 109, 32, 147, 148, 149, - 16, 18, 19, 25, 125, 126, 127, 128, 129, 133, - 134, 125, 157, 157, 4, 6, 157, 156, 156, 137, - 4, 50, 156, 156, 48, 50, 157, 157, 30, 50, - 107, 49, 50, 149, 47, 49, 47, 49, 47, 49, - 47, 49, 50, 126, 154, 50, 48, 50, 50, 4, - 6, 6, 156, 156, 48, 50, 156, 4, 156, 48, - 50, 49, 6, 157, 157, 157, 157, 157, 157, 157, - 157, 50, 4, 4, 6, 157, 157, 137, 50, 4, - 108, 6, 157, 157, 157, 157, 157, 157, 157, 157, - 50, 50, 4, 48, 50, 48, 50, 109, 50, 157, - 157, 157, 157, 157, 157, 157, 157, 50, 50, 49, - 157, 157, 157, 157, 157, 157, 157, 157, 150, 157, - 157, 157, 157, 157, 157, 156, 156, 33, 151, 152, - 153, 48, 50, 157, 157, 157, 157, 156, 156, 49, - 50, 153, 6, 6, 157, 157, 157, 157, 6, 6, - 6, 6, 6, 48, 50, 50, 137, 4, 6, 6, - 48, 50, 137, 4, 48, 50 + 0, 1, 56, 57, 58, 59, 60, 61, 63, 64, + 0, 7, 65, 17, 115, 116, 118, 120, 122, 124, + 1, 9, 10, 11, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 22, 142, 143, + 144, 51, 8, 66, 51, 53, 53, 51, 53, 51, + 53, 83, 41, 163, 115, 51, 53, 143, 146, 4, + 51, 53, 20, 67, 68, 69, 70, 4, 6, 141, + 4, 6, 4, 3, 4, 165, 166, 166, 166, 166, + 53, 4, 5, 145, 145, 23, 54, 147, 148, 52, + 6, 6, 51, 53, 24, 71, 6, 6, 6, 6, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 166, + 166, 166, 166, 6, 166, 166, 51, 53, 166, 54, + 166, 166, 166, 51, 53, 38, 72, 6, 6, 166, + 6, 164, 166, 166, 4, 4, 6, 52, 54, 166, + 166, 166, 166, 166, 166, 166, 166, 51, 39, 73, + 6, 6, 166, 166, 54, 166, 6, 166, 166, 166, + 54, 53, 53, 166, 166, 52, 54, 166, 166, 166, + 166, 165, 51, 40, 74, 75, 76, 77, 166, 166, + 166, 4, 53, 166, 4, 6, 166, 166, 166, 166, + 166, 4, 4, 54, 165, 165, 52, 165, 51, 21, + 78, 166, 166, 166, 54, 94, 166, 54, 4, 6, + 166, 4, 4, 166, 166, 52, 54, 52, 54, 52, + 166, 53, 27, 79, 166, 166, 166, 53, 12, 13, + 14, 15, 29, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 6, 54, 4, + 6, 141, 4, 166, 166, 166, 4, 6, 53, 28, + 80, 166, 166, 4, 117, 51, 53, 51, 53, 53, + 51, 53, 53, 54, 97, 163, 141, 54, 4, 52, + 54, 52, 54, 166, 54, 54, 6, 51, 53, 62, + 63, 165, 4, 165, 54, 16, 18, 19, 25, 26, + 126, 127, 128, 134, 135, 136, 139, 140, 166, 166, + 166, 166, 166, 166, 166, 141, 52, 54, 52, 166, + 54, 6, 6, 81, 165, 54, 165, 53, 51, 53, + 53, 53, 51, 53, 51, 53, 54, 127, 163, 166, + 166, 166, 166, 166, 166, 166, 54, 52, 166, 52, + 54, 31, 149, 150, 141, 53, 4, 119, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, + 166, 165, 165, 53, 166, 53, 34, 158, 159, 52, + 121, 54, 126, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 165, 6, 165, 109, + 52, 54, 53, 53, 126, 53, 54, 166, 166, 166, + 166, 166, 166, 52, 54, 166, 166, 166, 166, 4, + 6, 4, 6, 51, 53, 113, 114, 53, 54, 125, + 54, 123, 166, 166, 6, 166, 166, 166, 166, 166, + 166, 166, 166, 54, 141, 54, 4, 166, 166, 110, + 113, 32, 151, 152, 153, 53, 16, 18, 19, 25, + 129, 130, 131, 132, 133, 137, 138, 129, 166, 166, + 4, 6, 166, 165, 165, 141, 4, 54, 165, 165, + 52, 54, 166, 166, 30, 54, 111, 53, 54, 153, + 35, 36, 37, 160, 161, 162, 51, 53, 51, 53, + 51, 53, 51, 53, 54, 130, 163, 54, 52, 54, + 54, 4, 6, 6, 165, 165, 52, 54, 165, 4, + 165, 52, 54, 53, 6, 53, 53, 53, 54, 162, + 166, 166, 166, 166, 166, 166, 166, 166, 54, 4, + 4, 6, 166, 166, 141, 54, 4, 112, 6, 6, + 6, 6, 166, 166, 166, 166, 166, 166, 166, 166, + 54, 54, 4, 52, 54, 52, 54, 113, 54, 6, + 6, 6, 166, 166, 166, 166, 166, 166, 166, 166, + 54, 54, 53, 54, 54, 6, 166, 166, 166, 166, + 166, 166, 166, 166, 154, 54, 166, 166, 166, 166, + 166, 166, 165, 165, 33, 155, 156, 157, 52, 54, + 166, 166, 166, 166, 165, 165, 53, 54, 157, 6, + 6, 166, 166, 166, 166, 6, 6, 6, 6, 6, + 52, 54, 54, 141, 4, 6, 6, 52, 54, 141, + 4, 52, 54 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 51, 52, 52, 52, 52, 54, 53, 55, 53, - 57, 56, 58, 58, 60, 59, 61, 61, 62, 62, - 62, 63, 63, 63, 64, 65, 66, 67, 67, 67, - 68, 68, 69, 69, 70, 70, 70, 70, 71, 72, - 73, 74, 74, 74, 75, 75, 76, 76, 76, 77, - 77, 78, 78, 79, 80, 79, 79, 79, 81, 79, - 79, 82, 82, 82, 82, 82, 83, 84, 85, 86, - 87, 88, 88, 90, 89, 91, 91, 92, 92, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 94, - 93, 93, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 105, 104, 106, 106, 108, 107, 109, 109, 110, - 110, 111, 111, 111, 111, 111, 113, 112, 115, 114, - 117, 116, 119, 118, 121, 120, 122, 122, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 124, - 123, 125, 125, 126, 126, 126, 126, 126, 126, 126, - 126, 127, 126, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 137, 138, 138, 139, 140, 140, 141, - 141, 142, 142, 142, 143, 144, 145, 145, 146, 147, - 147, 148, 148, 150, 149, 151, 151, 152, 152, 153, - 154, 155, 155, 156, 156, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157 + 0, 55, 56, 56, 56, 56, 58, 57, 59, 57, + 61, 60, 62, 62, 64, 63, 65, 65, 66, 66, + 66, 67, 67, 67, 68, 69, 70, 71, 71, 71, + 72, 72, 73, 73, 74, 74, 74, 74, 75, 76, + 77, 78, 78, 78, 79, 79, 80, 80, 80, 81, + 81, 82, 82, 83, 84, 83, 83, 83, 85, 83, + 83, 86, 86, 86, 86, 86, 87, 88, 89, 90, + 91, 92, 92, 94, 93, 95, 95, 96, 96, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, + 97, 97, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 109, 108, 110, 110, 112, 111, 113, 113, 114, + 114, 115, 115, 115, 115, 115, 117, 116, 119, 118, + 121, 120, 123, 122, 125, 124, 126, 126, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 128, + 127, 129, 129, 130, 130, 130, 130, 130, 130, 130, + 130, 131, 130, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 141, 142, 142, 143, 144, 144, 145, + 145, 146, 146, 146, 147, 148, 149, 149, 150, 151, + 151, 152, 152, 154, 153, 155, 155, 156, 156, 157, + 158, 158, 159, 160, 160, 161, 161, 162, 162, 162, + 163, 164, 164, 165, 165, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { - 0, 2, 1, 1, 1, 1, 0, 14, 0, 2, + 0, 2, 1, 1, 1, 1, 0, 15, 0, 2, 0, 2, 1, 0, 0, 2, 0, 4, 4, 6, 6, 1, 1, 1, 6, 7, 7, 6, 6, 0, 0, 4, 0, 4, 0, 1, 1, 1, 6, 7, @@ -1069,6 +1093,7 @@ 11, 10, 1, 1, 1, 2, 3, 6, 6, 1, 1, 0, 2, 2, 8, 8, 1, 0, 6, 1, 0, 1, 2, 0, 9, 1, 0, 1, 2, 4, + 1, 0, 6, 1, 0, 1, 2, 5, 5, 6, 5, 1, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2 }; @@ -1747,13 +1772,13 @@ switch (yyn) { case 5: -#line 138 "parse_y.y" /* yacc.c:1646 */ +#line 140 "parse_y.y" /* yacc.c:1646 */ { YYABORT; } -#line 1753 "parse_y.tab.c" /* yacc.c:1646 */ +#line 1778 "parse_y.tab.c" /* yacc.c:1646 */ break; case 6: -#line 162 "parse_y.y" /* yacc.c:1646 */ +#line 164 "parse_y.y" /* yacc.c:1646 */ { /* reset flags for 'used layers'; * init font and data pointers @@ -1773,11 +1798,11 @@ yyData->LayerN = 0; layer_group_string = NULL; } -#line 1777 "parse_y.tab.c" /* yacc.c:1646 */ +#line 1802 "parse_y.tab.c" /* yacc.c:1646 */ break; case 7: -#line 194 "parse_y.y" /* yacc.c:1646 */ +#line 197 "parse_y.y" /* yacc.c:1646 */ { PCBTypePtr pcb_save = PCB; @@ -1800,28 +1825,28 @@ ENDALL_LOOP; PCB = pcb_save; } -#line 1804 "parse_y.tab.c" /* yacc.c:1646 */ +#line 1829 "parse_y.tab.c" /* yacc.c:1646 */ break; case 8: -#line 217 "parse_y.y" /* yacc.c:1646 */ +#line 220 "parse_y.y" /* yacc.c:1646 */ { PreLoadElementPCB (); layer_group_string = NULL; } -#line 1811 "parse_y.tab.c" /* yacc.c:1646 */ +#line 1836 "parse_y.tab.c" /* yacc.c:1646 */ break; case 9: -#line 220 "parse_y.y" /* yacc.c:1646 */ +#line 223 "parse_y.y" /* yacc.c:1646 */ { LayerFlag[0] = true; LayerFlag[1] = true; yyData->LayerN = 2; PostLoadElementPCB (); } -#line 1821 "parse_y.tab.c" /* yacc.c:1646 */ +#line 1846 "parse_y.tab.c" /* yacc.c:1646 */ break; case 10: -#line 228 "parse_y.y" /* yacc.c:1646 */ +#line 231 "parse_y.y" /* yacc.c:1646 */ { /* reset flags for 'used layers'; * init font and data pointers @@ -1837,11 +1862,11 @@ LayerFlag[i] = false; yyData->LayerN = 0; } -#line 1841 "parse_y.tab.c" /* yacc.c:1646 */ +#line 1866 "parse_y.tab.c" /* yacc.c:1646 */ break; case 14: -#line 253 "parse_y.y" /* yacc.c:1646 */ +#line 256 "parse_y.y" /* yacc.c:1646 */ { /* mark all symbols invalid */ int i; @@ -1856,20 +1881,20 @@ free (yyFont->Symbol[i].Line); bzero(yyFont->Symbol, sizeof(yyFont->Symbol)); } -#line 1860 "parse_y.tab.c" /* yacc.c:1646 */ +#line 1885 "parse_y.tab.c" /* yacc.c:1646 */ break; case 15: -#line 268 "parse_y.y" /* yacc.c:1646 */ +#line 271 "parse_y.y" /* yacc.c:1646 */ { yyFont->Valid = true; SetFontInfo(yyFont); } -#line 1869 "parse_y.tab.c" /* yacc.c:1646 */ +#line 1894 "parse_y.tab.c" /* yacc.c:1646 */ break; case 17: -#line 296 "parse_y.y" /* yacc.c:1646 */ +#line 299 "parse_y.y" /* yacc.c:1646 */ { if (check_file_version ((yyvsp[-1].integer)) != 0) { @@ -1876,51 +1901,51 @@ YYABORT; } } -#line 1880 "parse_y.tab.c" /* yacc.c:1646 */ +#line 1905 "parse_y.tab.c" /* yacc.c:1646 */ break; case 18: -#line 326 "parse_y.y" /* yacc.c:1646 */ +#line 329 "parse_y.y" /* yacc.c:1646 */ { yyPCB->Name = (yyvsp[-1].string); yyPCB->MaxWidth = MAX_COORD; yyPCB->MaxHeight = MAX_COORD; } -#line 1890 "parse_y.tab.c" /* yacc.c:1646 */ +#line 1915 "parse_y.tab.c" /* yacc.c:1646 */ break; case 19: -#line 332 "parse_y.y" /* yacc.c:1646 */ +#line 335 "parse_y.y" /* yacc.c:1646 */ { yyPCB->Name = (yyvsp[-3].string); yyPCB->MaxWidth = OU ((yyvsp[-2].measure)); yyPCB->MaxHeight = OU ((yyvsp[-1].measure)); } -#line 1900 "parse_y.tab.c" /* yacc.c:1646 */ +#line 1925 "parse_y.tab.c" /* yacc.c:1646 */ break; case 20: -#line 338 "parse_y.y" /* yacc.c:1646 */ +#line 341 "parse_y.y" /* yacc.c:1646 */ { yyPCB->Name = (yyvsp[-3].string); yyPCB->MaxWidth = NU ((yyvsp[-2].measure)); yyPCB->MaxHeight = NU ((yyvsp[-1].measure)); } -#line 1910 "parse_y.tab.c" /* yacc.c:1646 */ +#line 1935 "parse_y.tab.c" /* yacc.c:1646 */ break; case 24: -#line 372 "parse_y.y" /* yacc.c:1646 */ +#line 375 "parse_y.y" /* yacc.c:1646 */ { yyPCB->Grid = OU ((yyvsp[-3].measure)); yyPCB->GridOffsetX = OU ((yyvsp[-2].measure)); yyPCB->GridOffsetY = OU ((yyvsp[-1].measure)); } -#line 1920 "parse_y.tab.c" /* yacc.c:1646 */ +#line 1945 "parse_y.tab.c" /* yacc.c:1646 */ break; case 25: -#line 380 "parse_y.y" /* yacc.c:1646 */ +#line 383 "parse_y.y" /* yacc.c:1646 */ { yyPCB->Grid = OU ((yyvsp[-4].measure)); yyPCB->GridOffsetX = OU ((yyvsp[-3].measure)); @@ -1930,11 +1955,11 @@ else Settings.DrawGrid = false; } -#line 1934 "parse_y.tab.c" /* yacc.c:1646 */ +#line 1959 "parse_y.tab.c" /* yacc.c:1646 */ break; case 26: -#line 393 "parse_y.y" /* yacc.c:1646 */ +#line 396 "parse_y.y" /* yacc.c:1646 */ { yyPCB->Grid = NU ((yyvsp[-4].measure)); yyPCB->GridOffsetX = NU ((yyvsp[-3].measure)); @@ -1944,48 +1969,48 @@ else Settings.DrawGrid = false; } -#line 1948 "parse_y.tab.c" /* yacc.c:1646 */ +#line 1973 "parse_y.tab.c" /* yacc.c:1646 */ break; case 27: -#line 425 "parse_y.y" /* yacc.c:1646 */ +#line 428 "parse_y.y" /* yacc.c:1646 */ { yyPCB->CursorX = OU ((yyvsp[-3].measure)); yyPCB->CursorY = OU ((yyvsp[-2].measure)); yyPCB->Zoom = (yyvsp[-1].number)*2; } -#line 1958 "parse_y.tab.c" /* yacc.c:1646 */ +#line 1983 "parse_y.tab.c" /* yacc.c:1646 */ break; case 28: -#line 431 "parse_y.y" /* yacc.c:1646 */ +#line 434 "parse_y.y" /* yacc.c:1646 */ { yyPCB->CursorX = NU ((yyvsp[-3].measure)); yyPCB->CursorY = NU ((yyvsp[-2].measure)); yyPCB->Zoom = (yyvsp[-1].number); } -#line 1968 "parse_y.tab.c" /* yacc.c:1646 */ +#line 1993 "parse_y.tab.c" /* yacc.c:1646 */ break; case 31: -#line 455 "parse_y.y" /* yacc.c:1646 */ +#line 458 "parse_y.y" /* yacc.c:1646 */ { /* Read in cmil^2 for now; in future this should be a noop. */ yyPCB->IsleArea = MIL_TO_COORD (MIL_TO_COORD ((yyvsp[-1].number)) / 100.0) / 100.0; } -#line 1977 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2002 "parse_y.tab.c" /* yacc.c:1646 */ break; case 33: -#line 482 "parse_y.y" /* yacc.c:1646 */ +#line 485 "parse_y.y" /* yacc.c:1646 */ { yyPCB->ThermScale = (yyvsp[-1].number); } -#line 1985 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2010 "parse_y.tab.c" /* yacc.c:1646 */ break; case 38: -#line 521 "parse_y.y" /* yacc.c:1646 */ +#line 524 "parse_y.y" /* yacc.c:1646 */ { yyPCB->Bloat = NU ((yyvsp[-3].measure)); yyPCB->Shrink = NU ((yyvsp[-2].measure)); @@ -1992,11 +2017,11 @@ yyPCB->minWid = NU ((yyvsp[-1].measure)); yyPCB->minRing = NU ((yyvsp[-1].measure)); } -#line 1996 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2021 "parse_y.tab.c" /* yacc.c:1646 */ break; case 39: -#line 531 "parse_y.y" /* yacc.c:1646 */ +#line 534 "parse_y.y" /* yacc.c:1646 */ { yyPCB->Bloat = NU ((yyvsp[-4].measure)); yyPCB->Shrink = NU ((yyvsp[-3].measure)); @@ -2004,11 +2029,11 @@ yyPCB->minSlk = NU ((yyvsp[-1].measure)); yyPCB->minRing = NU ((yyvsp[-2].measure)); } -#line 2008 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2033 "parse_y.tab.c" /* yacc.c:1646 */ break; case 40: -#line 542 "parse_y.y" /* yacc.c:1646 */ +#line 545 "parse_y.y" /* yacc.c:1646 */ { yyPCB->Bloat = NU ((yyvsp[-6].measure)); yyPCB->Shrink = NU ((yyvsp[-5].measure)); @@ -2017,35 +2042,35 @@ yyPCB->minDrill = NU ((yyvsp[-2].measure)); yyPCB->minRing = NU ((yyvsp[-1].measure)); } -#line 2021 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2046 "parse_y.tab.c" /* yacc.c:1646 */ break; case 41: -#line 569 "parse_y.y" /* yacc.c:1646 */ +#line 572 "parse_y.y" /* yacc.c:1646 */ { yyPCB->Flags = MakeFlags ((yyvsp[-1].integer) & PCB_FLAGS); } -#line 2029 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2054 "parse_y.tab.c" /* yacc.c:1646 */ break; case 42: -#line 573 "parse_y.y" /* yacc.c:1646 */ +#line 576 "parse_y.y" /* yacc.c:1646 */ { yyPCB->Flags = string_to_pcbflags ((yyvsp[-1].string), yyerror); } -#line 2037 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2062 "parse_y.tab.c" /* yacc.c:1646 */ break; case 44: -#line 605 "parse_y.y" /* yacc.c:1646 */ +#line 608 "parse_y.y" /* yacc.c:1646 */ { layer_group_string = (yyvsp[-1].string); } -#line 2045 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2070 "parse_y.tab.c" /* yacc.c:1646 */ break; case 46: -#line 653 "parse_y.y" /* yacc.c:1646 */ +#line 656 "parse_y.y" /* yacc.c:1646 */ { if (ParseRouteString((yyvsp[-1].string), &yyPCB->RouteStyle[0], "mil")) { @@ -2053,11 +2078,11 @@ YYABORT; } } -#line 2057 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2082 "parse_y.tab.c" /* yacc.c:1646 */ break; case 47: -#line 661 "parse_y.y" /* yacc.c:1646 */ +#line 664 "parse_y.y" /* yacc.c:1646 */ { if (ParseRouteString((yyvsp[-1].string), &yyPCB->RouteStyle[0], "cmil")) { @@ -2065,17 +2090,17 @@ YYABORT; } } -#line 2069 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2094 "parse_y.tab.c" /* yacc.c:1646 */ break; case 54: -#line 683 "parse_y.y" /* yacc.c:1646 */ +#line 686 "parse_y.y" /* yacc.c:1646 */ { attr_list = & yyPCB->Attributes; } -#line 2075 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2100 "parse_y.tab.c" /* yacc.c:1646 */ break; case 58: -#line 687 "parse_y.y" /* yacc.c:1646 */ +#line 690 "parse_y.y" /* yacc.c:1646 */ { /* clear pointer to force memory allocation by * the appropriate subroutine @@ -2082,57 +2107,57 @@ */ yyElement = NULL; } -#line 2086 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2111 "parse_y.tab.c" /* yacc.c:1646 */ break; case 60: -#line 694 "parse_y.y" /* yacc.c:1646 */ +#line 697 "parse_y.y" /* yacc.c:1646 */ { YYABORT; } -#line 2092 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2117 "parse_y.tab.c" /* yacc.c:1646 */ break; case 66: -#line 739 "parse_y.y" /* yacc.c:1646 */ +#line 742 "parse_y.y" /* yacc.c:1646 */ { CreateNewVia(yyData, NU ((yyvsp[-8].measure)), NU ((yyvsp[-7].measure)), NU ((yyvsp[-6].measure)), NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), NU ((yyvsp[-3].measure)), (yyvsp[-2].string), (yyvsp[-1].flagtype)); free ((yyvsp[-2].string)); } -#line 2102 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2127 "parse_y.tab.c" /* yacc.c:1646 */ break; case 67: -#line 749 "parse_y.y" /* yacc.c:1646 */ +#line 752 "parse_y.y" /* yacc.c:1646 */ { CreateNewVia(yyData, OU ((yyvsp[-8].measure)), OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-3].measure)), (yyvsp[-2].string), OldFlags((yyvsp[-1].integer))); free ((yyvsp[-2].string)); } -#line 2112 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2137 "parse_y.tab.c" /* yacc.c:1646 */ break; case 68: -#line 760 "parse_y.y" /* yacc.c:1646 */ +#line 763 "parse_y.y" /* yacc.c:1646 */ { CreateNewVia(yyData, OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-5].measure)) + OU((yyvsp[-4].measure)), OU ((yyvsp[-3].measure)), (yyvsp[-2].string), OldFlags((yyvsp[-1].integer))); free ((yyvsp[-2].string)); } -#line 2122 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2147 "parse_y.tab.c" /* yacc.c:1646 */ break; case 69: -#line 770 "parse_y.y" /* yacc.c:1646 */ +#line 773 "parse_y.y" /* yacc.c:1646 */ { CreateNewVia(yyData, OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), 2*GROUNDPLANEFRAME, OU((yyvsp[-4].measure)) + 2*MASKFRAME, OU ((yyvsp[-3].measure)), (yyvsp[-2].string), OldFlags((yyvsp[-1].integer))); free ((yyvsp[-2].string)); } -#line 2132 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2157 "parse_y.tab.c" /* yacc.c:1646 */ break; case 70: -#line 780 "parse_y.y" /* yacc.c:1646 */ +#line 783 "parse_y.y" /* yacc.c:1646 */ { Coord hole = (OU((yyvsp[-3].measure)) * DEFAULT_DRILLINGHOLE); @@ -2145,29 +2170,29 @@ OU((yyvsp[-3].measure)) + 2*MASKFRAME, hole, (yyvsp[-2].string), OldFlags((yyvsp[-1].integer))); free ((yyvsp[-2].string)); } -#line 2149 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2174 "parse_y.tab.c" /* yacc.c:1646 */ break; case 71: -#line 816 "parse_y.y" /* yacc.c:1646 */ +#line 819 "parse_y.y" /* yacc.c:1646 */ { CreateNewRat(yyData, NU ((yyvsp[-7].measure)), NU ((yyvsp[-6].measure)), NU ((yyvsp[-4].measure)), NU ((yyvsp[-3].measure)), (yyvsp[-5].integer), (yyvsp[-2].integer), Settings.RatThickness, (yyvsp[-1].flagtype)); } -#line 2158 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2183 "parse_y.tab.c" /* yacc.c:1646 */ break; case 72: -#line 821 "parse_y.y" /* yacc.c:1646 */ +#line 824 "parse_y.y" /* yacc.c:1646 */ { CreateNewRat(yyData, OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-3].measure)), (yyvsp[-5].integer), (yyvsp[-2].integer), Settings.RatThickness, OldFlags((yyvsp[-1].integer))); } -#line 2167 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2192 "parse_y.tab.c" /* yacc.c:1646 */ break; case 73: -#line 852 "parse_y.y" /* yacc.c:1646 */ +#line 855 "parse_y.y" /* yacc.c:1646 */ { if ((yyvsp[-4].integer) <= 0 || (yyvsp[-4].integer) > MAX_LAYER + 2) { @@ -2187,44 +2212,44 @@ if (yyData->LayerN + 2 < (yyvsp[-4].integer)) yyData->LayerN = (yyvsp[-4].integer) - 2; } -#line 2191 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2216 "parse_y.tab.c" /* yacc.c:1646 */ break; case 85: -#line 893 "parse_y.y" /* yacc.c:1646 */ +#line 896 "parse_y.y" /* yacc.c:1646 */ { CreateNewPolygonFromRectangle(Layer, OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-5].measure)) + OU ((yyvsp[-3].measure)), OU ((yyvsp[-4].measure)) + OU ((yyvsp[-2].measure)), OldFlags((yyvsp[-1].integer))); } -#line 2200 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2225 "parse_y.tab.c" /* yacc.c:1646 */ break; case 89: -#line 900 "parse_y.y" /* yacc.c:1646 */ +#line 903 "parse_y.y" /* yacc.c:1646 */ { attr_list = & Layer->Attributes; } -#line 2206 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2231 "parse_y.tab.c" /* yacc.c:1646 */ break; case 92: -#line 932 "parse_y.y" /* yacc.c:1646 */ +#line 935 "parse_y.y" /* yacc.c:1646 */ { CreateNewLineOnLayer(Layer, NU ((yyvsp[-7].measure)), NU ((yyvsp[-6].measure)), NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), NU ((yyvsp[-3].measure)), NU ((yyvsp[-2].measure)), (yyvsp[-1].flagtype)); } -#line 2215 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2240 "parse_y.tab.c" /* yacc.c:1646 */ break; case 93: -#line 941 "parse_y.y" /* yacc.c:1646 */ +#line 944 "parse_y.y" /* yacc.c:1646 */ { CreateNewLineOnLayer(Layer, OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-3].measure)), OU ((yyvsp[-2].measure)), OldFlags((yyvsp[-1].integer))); } -#line 2224 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2249 "parse_y.tab.c" /* yacc.c:1646 */ break; case 94: -#line 950 "parse_y.y" /* yacc.c:1646 */ +#line 953 "parse_y.y" /* yacc.c:1646 */ { /* eliminate old-style rat-lines */ if ((IV ((yyvsp[-1].measure)) & RATFLAG) == 0) @@ -2231,48 +2256,48 @@ CreateNewLineOnLayer(Layer, OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-3].measure)), OU ((yyvsp[-2].measure)), 200*GROUNDPLANEFRAME, OldFlags(IV ((yyvsp[-1].measure)))); } -#line 2235 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2260 "parse_y.tab.c" /* yacc.c:1646 */ break; case 95: -#line 998 "parse_y.y" /* yacc.c:1646 */ +#line 1001 "parse_y.y" /* yacc.c:1646 */ { CreateNewArcOnLayer(Layer, NU ((yyvsp[-9].measure)), NU ((yyvsp[-8].measure)), NU ((yyvsp[-7].measure)), NU ((yyvsp[-6].measure)), (yyvsp[-3].number), (yyvsp[-2].number), NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), (yyvsp[-1].flagtype)); } -#line 2244 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2269 "parse_y.tab.c" /* yacc.c:1646 */ break; case 96: -#line 1007 "parse_y.y" /* yacc.c:1646 */ +#line 1010 "parse_y.y" /* yacc.c:1646 */ { CreateNewArcOnLayer(Layer, OU ((yyvsp[-9].measure)), OU ((yyvsp[-8].measure)), OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), (yyvsp[-3].number), (yyvsp[-2].number), OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), OldFlags((yyvsp[-1].integer))); } -#line 2253 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2278 "parse_y.tab.c" /* yacc.c:1646 */ break; case 97: -#line 1016 "parse_y.y" /* yacc.c:1646 */ +#line 1019 "parse_y.y" /* yacc.c:1646 */ { CreateNewArcOnLayer(Layer, OU ((yyvsp[-8].measure)), OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), OU ((yyvsp[-6].measure)), IV ((yyvsp[-3].measure)), (yyvsp[-2].number), OU ((yyvsp[-4].measure)), 200*GROUNDPLANEFRAME, OldFlags((yyvsp[-1].integer))); } -#line 2262 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2287 "parse_y.tab.c" /* yacc.c:1646 */ break; case 98: -#line 1053 "parse_y.y" /* yacc.c:1646 */ +#line 1056 "parse_y.y" /* yacc.c:1646 */ { /* use a default scale of 100% */ CreateNewText(Layer,yyFont,OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), (yyvsp[-3].number), 100, (yyvsp[-2].string), OldFlags((yyvsp[-1].integer))); free ((yyvsp[-2].string)); } -#line 2272 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2297 "parse_y.tab.c" /* yacc.c:1646 */ break; case 99: -#line 1063 "parse_y.y" /* yacc.c:1646 */ +#line 1066 "parse_y.y" /* yacc.c:1646 */ { if ((yyvsp[-1].integer) & ONSILKFLAG) { @@ -2287,11 +2312,11 @@ OldFlags((yyvsp[-1].integer))); free ((yyvsp[-2].string)); } -#line 2291 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2316 "parse_y.tab.c" /* yacc.c:1646 */ break; case 100: -#line 1081 "parse_y.y" /* yacc.c:1646 */ +#line 1084 "parse_y.y" /* yacc.c:1646 */ { /* FIXME: shouldn't know about .f */ /* I don't think this matters because anything with hi_format @@ -2311,19 +2336,19 @@ CreateNewText(Layer, yyFont, NU ((yyvsp[-6].measure)), NU ((yyvsp[-5].measure)), (yyvsp[-4].number), (yyvsp[-3].number), (yyvsp[-2].string), (yyvsp[-1].flagtype)); free ((yyvsp[-2].string)); } -#line 2315 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2340 "parse_y.tab.c" /* yacc.c:1646 */ break; case 101: -#line 1130 "parse_y.y" /* yacc.c:1646 */ +#line 1133 "parse_y.y" /* yacc.c:1646 */ { Polygon = CreateNewPolygon(Layer, (yyvsp[-2].flagtype)); } -#line 2323 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2348 "parse_y.tab.c" /* yacc.c:1646 */ break; case 102: -#line 1135 "parse_y.y" /* yacc.c:1646 */ +#line 1138 "parse_y.y" /* yacc.c:1646 */ { Cardinal contour, contour_start, contour_end; bool bad_contour_found = false; @@ -2355,35 +2380,35 @@ r_insert_entry (Layer->polygon_tree, (BoxType *) Polygon, 0); } } -#line 2359 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2384 "parse_y.tab.c" /* yacc.c:1646 */ break; case 105: -#line 1175 "parse_y.y" /* yacc.c:1646 */ +#line 1178 "parse_y.y" /* yacc.c:1646 */ { CreateNewHoleInPolygon (Polygon); } -#line 2367 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2392 "parse_y.tab.c" /* yacc.c:1646 */ break; case 109: -#line 1189 "parse_y.y" /* yacc.c:1646 */ +#line 1192 "parse_y.y" /* yacc.c:1646 */ { CreateNewPointInPolygon(Polygon, OU ((yyvsp[-2].measure)), OU ((yyvsp[-1].measure))); } -#line 2375 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2400 "parse_y.tab.c" /* yacc.c:1646 */ break; case 110: -#line 1193 "parse_y.y" /* yacc.c:1646 */ +#line 1196 "parse_y.y" /* yacc.c:1646 */ { CreateNewPointInPolygon(Polygon, NU ((yyvsp[-2].measure)), NU ((yyvsp[-1].measure))); } -#line 2383 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2408 "parse_y.tab.c" /* yacc.c:1646 */ break; case 116: -#line 1264 "parse_y.y" /* yacc.c:1646 */ +#line 1267 "parse_y.y" /* yacc.c:1646 */ { yyElement = CreateNewElement(yyData, yyElement, yyFont, NoFlags(), (yyvsp[-6].string), (yyvsp[-5].string), NULL, OU ((yyvsp[-4].measure)), OU ((yyvsp[-3].measure)), (yyvsp[-2].integer), 100, NoFlags(), false); @@ -2391,19 +2416,19 @@ free ((yyvsp[-5].string)); pin_num = 1; } -#line 2395 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2420 "parse_y.tab.c" /* yacc.c:1646 */ break; case 117: -#line 1272 "parse_y.y" /* yacc.c:1646 */ +#line 1275 "parse_y.y" /* yacc.c:1646 */ { SetElementBoundingBox(yyData, yyElement, yyFont); } -#line 2403 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2428 "parse_y.tab.c" /* yacc.c:1646 */ break; case 118: -#line 1282 "parse_y.y" /* yacc.c:1646 */ +#line 1285 "parse_y.y" /* yacc.c:1646 */ { yyElement = CreateNewElement(yyData, yyElement, yyFont, OldFlags((yyvsp[-9].integer)), (yyvsp[-8].string), (yyvsp[-7].string), NULL, OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), IV ((yyvsp[-4].measure)), IV ((yyvsp[-3].measure)), OldFlags((yyvsp[-2].integer)), false); @@ -2411,19 +2436,19 @@ free ((yyvsp[-7].string)); pin_num = 1; } -#line 2415 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2440 "parse_y.tab.c" /* yacc.c:1646 */ break; case 119: -#line 1290 "parse_y.y" /* yacc.c:1646 */ +#line 1293 "parse_y.y" /* yacc.c:1646 */ { SetElementBoundingBox(yyData, yyElement, yyFont); } -#line 2423 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2448 "parse_y.tab.c" /* yacc.c:1646 */ break; case 120: -#line 1300 "parse_y.y" /* yacc.c:1646 */ +#line 1303 "parse_y.y" /* yacc.c:1646 */ { yyElement = CreateNewElement(yyData, yyElement, yyFont, OldFlags((yyvsp[-10].integer)), (yyvsp[-9].string), (yyvsp[-8].string), (yyvsp[-7].string), OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), IV ((yyvsp[-4].measure)), IV ((yyvsp[-3].measure)), OldFlags((yyvsp[-2].integer)), false); @@ -2432,19 +2457,19 @@ free ((yyvsp[-7].string)); pin_num = 1; } -#line 2436 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2461 "parse_y.tab.c" /* yacc.c:1646 */ break; case 121: -#line 1309 "parse_y.y" /* yacc.c:1646 */ +#line 1312 "parse_y.y" /* yacc.c:1646 */ { SetElementBoundingBox(yyData, yyElement, yyFont); } -#line 2444 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2469 "parse_y.tab.c" /* yacc.c:1646 */ break; case 122: -#line 1320 "parse_y.y" /* yacc.c:1646 */ +#line 1323 "parse_y.y" /* yacc.c:1646 */ { yyElement = CreateNewElement(yyData, yyElement, yyFont, OldFlags((yyvsp[-12].integer)), (yyvsp[-11].string), (yyvsp[-10].string), (yyvsp[-9].string), OU ((yyvsp[-8].measure)) + OU ((yyvsp[-6].measure)), OU ((yyvsp[-7].measure)) + OU ((yyvsp[-5].measure)), @@ -2455,19 +2480,19 @@ free ((yyvsp[-10].string)); free ((yyvsp[-9].string)); } -#line 2459 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2484 "parse_y.tab.c" /* yacc.c:1646 */ break; case 123: -#line 1331 "parse_y.y" /* yacc.c:1646 */ +#line 1334 "parse_y.y" /* yacc.c:1646 */ { SetElementBoundingBox(yyData, yyElement, yyFont); } -#line 2467 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2492 "parse_y.tab.c" /* yacc.c:1646 */ break; case 124: -#line 1342 "parse_y.y" /* yacc.c:1646 */ +#line 1345 "parse_y.y" /* yacc.c:1646 */ { yyElement = CreateNewElement(yyData, yyElement, yyFont, (yyvsp[-12].flagtype), (yyvsp[-11].string), (yyvsp[-10].string), (yyvsp[-9].string), NU ((yyvsp[-8].measure)) + NU ((yyvsp[-6].measure)), NU ((yyvsp[-7].measure)) + NU ((yyvsp[-5].measure)), @@ -2478,119 +2503,119 @@ free ((yyvsp[-10].string)); free ((yyvsp[-9].string)); } -#line 2482 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2507 "parse_y.tab.c" /* yacc.c:1646 */ break; case 125: -#line 1353 "parse_y.y" /* yacc.c:1646 */ +#line 1356 "parse_y.y" /* yacc.c:1646 */ { SetElementBoundingBox(yyData, yyElement, yyFont); } -#line 2490 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2515 "parse_y.tab.c" /* yacc.c:1646 */ break; case 133: -#line 1433 "parse_y.y" /* yacc.c:1646 */ +#line 1436 "parse_y.y" /* yacc.c:1646 */ { CreateNewLineInElement(yyElement, NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), NU ((yyvsp[-3].measure)), NU ((yyvsp[-2].measure)), NU ((yyvsp[-1].measure))); } -#line 2498 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2523 "parse_y.tab.c" /* yacc.c:1646 */ break; case 134: -#line 1438 "parse_y.y" /* yacc.c:1646 */ +#line 1441 "parse_y.y" /* yacc.c:1646 */ { CreateNewLineInElement(yyElement, OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-3].measure)), OU ((yyvsp[-2].measure)), OU ((yyvsp[-1].measure))); } -#line 2506 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2531 "parse_y.tab.c" /* yacc.c:1646 */ break; case 135: -#line 1443 "parse_y.y" /* yacc.c:1646 */ +#line 1446 "parse_y.y" /* yacc.c:1646 */ { CreateNewArcInElement(yyElement, NU ((yyvsp[-7].measure)), NU ((yyvsp[-6].measure)), NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), (yyvsp[-3].number), (yyvsp[-2].number), NU ((yyvsp[-1].measure))); } -#line 2514 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2539 "parse_y.tab.c" /* yacc.c:1646 */ break; case 136: -#line 1448 "parse_y.y" /* yacc.c:1646 */ +#line 1451 "parse_y.y" /* yacc.c:1646 */ { CreateNewArcInElement(yyElement, OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), (yyvsp[-3].number), (yyvsp[-2].number), OU ((yyvsp[-1].measure))); } -#line 2522 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2547 "parse_y.tab.c" /* yacc.c:1646 */ break; case 137: -#line 1453 "parse_y.y" /* yacc.c:1646 */ +#line 1456 "parse_y.y" /* yacc.c:1646 */ { yyElement->MarkX = NU ((yyvsp[-2].measure)); yyElement->MarkY = NU ((yyvsp[-1].measure)); } -#line 2531 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2556 "parse_y.tab.c" /* yacc.c:1646 */ break; case 138: -#line 1458 "parse_y.y" /* yacc.c:1646 */ +#line 1461 "parse_y.y" /* yacc.c:1646 */ { yyElement->MarkX = OU ((yyvsp[-2].measure)); yyElement->MarkY = OU ((yyvsp[-1].measure)); } -#line 2540 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2565 "parse_y.tab.c" /* yacc.c:1646 */ break; case 139: -#line 1462 "parse_y.y" /* yacc.c:1646 */ +#line 1465 "parse_y.y" /* yacc.c:1646 */ { attr_list = & yyElement->Attributes; } -#line 2546 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2571 "parse_y.tab.c" /* yacc.c:1646 */ break; case 147: -#line 1477 "parse_y.y" /* yacc.c:1646 */ +#line 1480 "parse_y.y" /* yacc.c:1646 */ { CreateNewLineInElement(yyElement, NU ((yyvsp[-5].measure)) + yyElement->MarkX, NU ((yyvsp[-4].measure)) + yyElement->MarkY, NU ((yyvsp[-3].measure)) + yyElement->MarkX, NU ((yyvsp[-2].measure)) + yyElement->MarkY, NU ((yyvsp[-1].measure))); } -#line 2556 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2581 "parse_y.tab.c" /* yacc.c:1646 */ break; case 148: -#line 1483 "parse_y.y" /* yacc.c:1646 */ +#line 1486 "parse_y.y" /* yacc.c:1646 */ { CreateNewLineInElement(yyElement, OU ((yyvsp[-5].measure)) + yyElement->MarkX, OU ((yyvsp[-4].measure)) + yyElement->MarkY, OU ((yyvsp[-3].measure)) + yyElement->MarkX, OU ((yyvsp[-2].measure)) + yyElement->MarkY, OU ((yyvsp[-1].measure))); } -#line 2566 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2591 "parse_y.tab.c" /* yacc.c:1646 */ break; case 149: -#line 1490 "parse_y.y" /* yacc.c:1646 */ +#line 1493 "parse_y.y" /* yacc.c:1646 */ { CreateNewArcInElement(yyElement, NU ((yyvsp[-7].measure)) + yyElement->MarkX, NU ((yyvsp[-6].measure)) + yyElement->MarkY, NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), (yyvsp[-3].number), (yyvsp[-2].number), NU ((yyvsp[-1].measure))); } -#line 2575 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2600 "parse_y.tab.c" /* yacc.c:1646 */ break; case 150: -#line 1495 "parse_y.y" /* yacc.c:1646 */ +#line 1498 "parse_y.y" /* yacc.c:1646 */ { CreateNewArcInElement(yyElement, OU ((yyvsp[-7].measure)) + yyElement->MarkX, OU ((yyvsp[-6].measure)) + yyElement->MarkY, OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), (yyvsp[-3].number), (yyvsp[-2].number), OU ((yyvsp[-1].measure))); } -#line 2584 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2609 "parse_y.tab.c" /* yacc.c:1646 */ break; case 151: -#line 1499 "parse_y.y" /* yacc.c:1646 */ +#line 1502 "parse_y.y" /* yacc.c:1646 */ { attr_list = & yyElement->Attributes; } -#line 2590 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2615 "parse_y.tab.c" /* yacc.c:1646 */ break; case 153: -#line 1541 "parse_y.y" /* yacc.c:1646 */ +#line 1544 "parse_y.y" /* yacc.c:1646 */ { CreateNewPin(yyElement, NU ((yyvsp[-9].measure)) + yyElement->MarkX, NU ((yyvsp[-8].measure)) + yyElement->MarkY, NU ((yyvsp[-7].measure)), NU ((yyvsp[-6].measure)), NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), (yyvsp[-3].string), @@ -2598,11 +2623,11 @@ free ((yyvsp[-3].string)); free ((yyvsp[-2].string)); } -#line 2602 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2627 "parse_y.tab.c" /* yacc.c:1646 */ break; case 154: -#line 1553 "parse_y.y" /* yacc.c:1646 */ +#line 1556 "parse_y.y" /* yacc.c:1646 */ { CreateNewPin(yyElement, OU ((yyvsp[-9].measure)) + yyElement->MarkX, OU ((yyvsp[-8].measure)) + yyElement->MarkY, OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), (yyvsp[-3].string), @@ -2610,11 +2635,11 @@ free ((yyvsp[-3].string)); free ((yyvsp[-2].string)); } -#line 2614 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2639 "parse_y.tab.c" /* yacc.c:1646 */ break; case 155: -#line 1565 "parse_y.y" /* yacc.c:1646 */ +#line 1568 "parse_y.y" /* yacc.c:1646 */ { CreateNewPin(yyElement, OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), 2*GROUNDPLANEFRAME, OU ((yyvsp[-5].measure)) + 2*MASKFRAME, OU ((yyvsp[-4].measure)), (yyvsp[-3].string), (yyvsp[-2].string), OldFlags((yyvsp[-1].integer))); @@ -2621,11 +2646,11 @@ free ((yyvsp[-3].string)); free ((yyvsp[-2].string)); } -#line 2625 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2650 "parse_y.tab.c" /* yacc.c:1646 */ break; case 156: -#line 1576 "parse_y.y" /* yacc.c:1646 */ +#line 1579 "parse_y.y" /* yacc.c:1646 */ { char p_number[8]; @@ -2635,11 +2660,11 @@ free ((yyvsp[-2].string)); } -#line 2639 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2664 "parse_y.tab.c" /* yacc.c:1646 */ break; case 157: -#line 1592 "parse_y.y" /* yacc.c:1646 */ +#line 1595 "parse_y.y" /* yacc.c:1646 */ { Coord hole = OU ((yyvsp[-3].measure)) * DEFAULT_DRILLINGHOLE; char p_number[8]; @@ -2654,11 +2679,11 @@ OU ((yyvsp[-3].measure)) + 2*MASKFRAME, hole, (yyvsp[-2].string), p_number, OldFlags((yyvsp[-1].integer))); free ((yyvsp[-2].string)); } -#line 2658 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2683 "parse_y.tab.c" /* yacc.c:1646 */ break; case 158: -#line 1646 "parse_y.y" /* yacc.c:1646 */ +#line 1649 "parse_y.y" /* yacc.c:1646 */ { CreateNewPad(yyElement, NU ((yyvsp[-10].measure)) + yyElement->MarkX, NU ((yyvsp[-9].measure)) + yyElement->MarkY, @@ -2668,11 +2693,11 @@ free ((yyvsp[-3].string)); free ((yyvsp[-2].string)); } -#line 2672 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2697 "parse_y.tab.c" /* yacc.c:1646 */ break; case 159: -#line 1660 "parse_y.y" /* yacc.c:1646 */ +#line 1663 "parse_y.y" /* yacc.c:1646 */ { CreateNewPad(yyElement,OU ((yyvsp[-10].measure)) + yyElement->MarkX, OU ((yyvsp[-9].measure)) + yyElement->MarkY, OU ((yyvsp[-8].measure)) + yyElement->MarkX, @@ -2681,11 +2706,11 @@ free ((yyvsp[-3].string)); free ((yyvsp[-2].string)); } -#line 2685 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2710 "parse_y.tab.c" /* yacc.c:1646 */ break; case 160: -#line 1673 "parse_y.y" /* yacc.c:1646 */ +#line 1676 "parse_y.y" /* yacc.c:1646 */ { CreateNewPad(yyElement,OU ((yyvsp[-8].measure)),OU ((yyvsp[-7].measure)),OU ((yyvsp[-6].measure)),OU ((yyvsp[-5].measure)),OU ((yyvsp[-4].measure)), 2*GROUNDPLANEFRAME, OU ((yyvsp[-4].measure)) + 2*MASKFRAME, (yyvsp[-3].string), (yyvsp[-2].string), OldFlags((yyvsp[-1].integer))); @@ -2692,11 +2717,11 @@ free ((yyvsp[-3].string)); free ((yyvsp[-2].string)); } -#line 2696 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2721 "parse_y.tab.c" /* yacc.c:1646 */ break; case 161: -#line 1684 "parse_y.y" /* yacc.c:1646 */ +#line 1687 "parse_y.y" /* yacc.c:1646 */ { char p_number[8]; @@ -2705,23 +2730,23 @@ OU ((yyvsp[-3].measure)) + 2*MASKFRAME, (yyvsp[-2].string),p_number, OldFlags((yyvsp[-1].integer))); free ((yyvsp[-2].string)); } -#line 2709 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2734 "parse_y.tab.c" /* yacc.c:1646 */ break; case 162: -#line 1694 "parse_y.y" /* yacc.c:1646 */ +#line 1697 "parse_y.y" /* yacc.c:1646 */ { (yyval.flagtype) = OldFlags((yyvsp[0].integer)); } -#line 2715 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2740 "parse_y.tab.c" /* yacc.c:1646 */ break; case 163: -#line 1695 "parse_y.y" /* yacc.c:1646 */ +#line 1698 "parse_y.y" /* yacc.c:1646 */ { (yyval.flagtype) = string_to_flags ((yyvsp[0].string), yyerror); } -#line 2721 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2746 "parse_y.tab.c" /* yacc.c:1646 */ break; case 167: -#line 1725 "parse_y.y" /* yacc.c:1646 */ +#line 1728 "parse_y.y" /* yacc.c:1646 */ { if ((yyvsp[-3].integer) <= 0 || (yyvsp[-3].integer) > MAX_FONTPOSITION) { @@ -2737,11 +2762,11 @@ Symbol->Valid = true; Symbol->Delta = NU ((yyvsp[-2].measure)); } -#line 2741 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2766 "parse_y.tab.c" /* yacc.c:1646 */ break; case 168: -#line 1741 "parse_y.y" /* yacc.c:1646 */ +#line 1744 "parse_y.y" /* yacc.c:1646 */ { if ((yyvsp[-3].integer) <= 0 || (yyvsp[-3].integer) > MAX_FONTPOSITION) { @@ -2757,140 +2782,158 @@ Symbol->Valid = true; Symbol->Delta = OU ((yyvsp[-2].measure)); } -#line 2761 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2786 "parse_y.tab.c" /* yacc.c:1646 */ break; case 174: -#line 1788 "parse_y.y" /* yacc.c:1646 */ +#line 1791 "parse_y.y" /* yacc.c:1646 */ { CreateNewLineInSymbol(Symbol, OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-3].measure)), OU ((yyvsp[-2].measure)), OU ((yyvsp[-1].measure))); } -#line 2769 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2794 "parse_y.tab.c" /* yacc.c:1646 */ break; case 175: -#line 1795 "parse_y.y" /* yacc.c:1646 */ +#line 1798 "parse_y.y" /* yacc.c:1646 */ { CreateNewLineInSymbol(Symbol, NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), NU ((yyvsp[-3].measure)), NU ((yyvsp[-2].measure)), NU ((yyvsp[-1].measure))); } -#line 2777 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2802 "parse_y.tab.c" /* yacc.c:1646 */ break; case 183: -#line 1849 "parse_y.y" /* yacc.c:1646 */ +#line 1853 "parse_y.y" /* yacc.c:1646 */ { Menu = CreateNewNet(&yyPCB->NetlistLib, (yyvsp[-3].string), (yyvsp[-2].string)); free ((yyvsp[-3].string)); free ((yyvsp[-2].string)); } -#line 2787 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2812 "parse_y.tab.c" /* yacc.c:1646 */ break; case 189: -#line 1884 "parse_y.y" /* yacc.c:1646 */ +#line 1888 "parse_y.y" /* yacc.c:1646 */ { CreateNewConnection(Menu, (yyvsp[-1].string)); free ((yyvsp[-1].string)); } -#line 2796 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2821 "parse_y.tab.c" /* yacc.c:1646 */ break; - case 190: -#line 1914 "parse_y.y" /* yacc.c:1646 */ + case 197: +#line 1935 "parse_y.y" /* yacc.c:1646 */ + { rats_patch_append(&yyPCB, RATP_ADD_CONN, (yyvsp[-2].string), (yyvsp[-1].string), NULL); } +#line 2827 "parse_y.tab.c" /* yacc.c:1646 */ + break; + + case 198: +#line 1936 "parse_y.y" /* yacc.c:1646 */ + { rats_patch_append(&yyPCB, RATP_DEL_CONN, (yyvsp[-2].string), (yyvsp[-1].string), NULL); } +#line 2833 "parse_y.tab.c" /* yacc.c:1646 */ + break; + + case 199: +#line 1937 "parse_y.y" /* yacc.c:1646 */ + { rats_patch_append(&yyPCB, RATP_CHANGE_ATTRIB, (yyvsp[-3].string), (yyvsp[-2].string), (yyvsp[-1].string)); } +#line 2839 "parse_y.tab.c" /* yacc.c:1646 */ + break; + + case 200: +#line 1965 "parse_y.y" /* yacc.c:1646 */ { CreateNewAttribute (attr_list, (yyvsp[-2].string), (yyvsp[-1].string) ? (yyvsp[-1].string) : (char *)""); free ((yyvsp[-2].string)); free ((yyvsp[-1].string)); } -#line 2806 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2849 "parse_y.tab.c" /* yacc.c:1646 */ break; - case 191: -#line 1921 "parse_y.y" /* yacc.c:1646 */ + case 201: +#line 1972 "parse_y.y" /* yacc.c:1646 */ { (yyval.string) = (yyvsp[0].string); } -#line 2812 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2855 "parse_y.tab.c" /* yacc.c:1646 */ break; - case 192: -#line 1922 "parse_y.y" /* yacc.c:1646 */ + case 202: +#line 1973 "parse_y.y" /* yacc.c:1646 */ { (yyval.string) = 0; } -#line 2818 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2861 "parse_y.tab.c" /* yacc.c:1646 */ break; - case 193: -#line 1926 "parse_y.y" /* yacc.c:1646 */ + case 203: +#line 1977 "parse_y.y" /* yacc.c:1646 */ { (yyval.number) = (yyvsp[0].number); } -#line 2824 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2867 "parse_y.tab.c" /* yacc.c:1646 */ break; - case 194: -#line 1927 "parse_y.y" /* yacc.c:1646 */ + case 204: +#line 1978 "parse_y.y" /* yacc.c:1646 */ { (yyval.number) = (yyvsp[0].integer); } -#line 2830 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2873 "parse_y.tab.c" /* yacc.c:1646 */ break; - case 195: -#line 1932 "parse_y.y" /* yacc.c:1646 */ + case 205: +#line 1983 "parse_y.y" /* yacc.c:1646 */ { do_measure(&(yyval.measure), (yyvsp[0].number), MIL_TO_COORD ((yyvsp[0].number)) / 100.0, 0); } -#line 2836 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2879 "parse_y.tab.c" /* yacc.c:1646 */ break; - case 196: -#line 1933 "parse_y.y" /* yacc.c:1646 */ + case 206: +#line 1984 "parse_y.y" /* yacc.c:1646 */ { M ((yyval.measure), (yyvsp[-1].number), MIL_TO_COORD ((yyvsp[-1].number)) / 100000.0); } -#line 2842 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2885 "parse_y.tab.c" /* yacc.c:1646 */ break; - case 197: -#line 1934 "parse_y.y" /* yacc.c:1646 */ + case 207: +#line 1985 "parse_y.y" /* yacc.c:1646 */ { M ((yyval.measure), (yyvsp[-1].number), MIL_TO_COORD ((yyvsp[-1].number)) / 100.0); } -#line 2848 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2891 "parse_y.tab.c" /* yacc.c:1646 */ break; - case 198: -#line 1935 "parse_y.y" /* yacc.c:1646 */ + case 208: +#line 1986 "parse_y.y" /* yacc.c:1646 */ { M ((yyval.measure), (yyvsp[-1].number), MIL_TO_COORD ((yyvsp[-1].number))); } -#line 2854 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2897 "parse_y.tab.c" /* yacc.c:1646 */ break; - case 199: -#line 1936 "parse_y.y" /* yacc.c:1646 */ + case 209: +#line 1987 "parse_y.y" /* yacc.c:1646 */ { M ((yyval.measure), (yyvsp[-1].number), INCH_TO_COORD ((yyvsp[-1].number))); } -#line 2860 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2903 "parse_y.tab.c" /* yacc.c:1646 */ break; - case 200: -#line 1937 "parse_y.y" /* yacc.c:1646 */ + case 210: +#line 1988 "parse_y.y" /* yacc.c:1646 */ { M ((yyval.measure), (yyvsp[-1].number), MM_TO_COORD ((yyvsp[-1].number)) / 1000000.0); } -#line 2866 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2909 "parse_y.tab.c" /* yacc.c:1646 */ break; - case 201: -#line 1938 "parse_y.y" /* yacc.c:1646 */ + case 211: +#line 1989 "parse_y.y" /* yacc.c:1646 */ { M ((yyval.measure), (yyvsp[-1].number), MM_TO_COORD ((yyvsp[-1].number)) / 1000.0); } -#line 2872 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2915 "parse_y.tab.c" /* yacc.c:1646 */ break; - case 202: -#line 1939 "parse_y.y" /* yacc.c:1646 */ + case 212: +#line 1990 "parse_y.y" /* yacc.c:1646 */ { M ((yyval.measure), (yyvsp[-1].number), MM_TO_COORD ((yyvsp[-1].number))); } -#line 2878 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2921 "parse_y.tab.c" /* yacc.c:1646 */ break; - case 203: -#line 1940 "parse_y.y" /* yacc.c:1646 */ + case 213: +#line 1991 "parse_y.y" /* yacc.c:1646 */ { M ((yyval.measure), (yyvsp[-1].number), MM_TO_COORD ((yyvsp[-1].number)) * 1000.0); } -#line 2884 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2927 "parse_y.tab.c" /* yacc.c:1646 */ break; - case 204: -#line 1941 "parse_y.y" /* yacc.c:1646 */ + case 214: +#line 1992 "parse_y.y" /* yacc.c:1646 */ { M ((yyval.measure), (yyvsp[-1].number), MM_TO_COORD ((yyvsp[-1].number)) * 1000000.0); } -#line 2890 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2933 "parse_y.tab.c" /* yacc.c:1646 */ break; -#line 2894 "parse_y.tab.c" /* yacc.c:1646 */ +#line 2937 "parse_y.tab.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -3118,7 +3161,7 @@ #endif return yyresult; } -#line 1944 "parse_y.y" /* yacc.c:1906 */ +#line 1995 "parse_y.y" /* yacc.c:1906 */ /* --------------------------------------------------------------------------- Index: trunk/src/parse_y.h =================================================================== --- trunk/src/parse_y.h (revision 911) +++ trunk/src/parse_y.h (revision 912) @@ -76,19 +76,23 @@ T_NETLIST = 286, T_NET = 287, T_CONN = 288, - T_AREA = 289, - T_THERMAL = 290, - T_DRC = 291, - T_ATTRIBUTE = 292, - T_UMIL = 293, - T_CMIL = 294, - T_MIL = 295, - T_IN = 296, - T_NM = 297, - T_UM = 298, - T_MM = 299, - T_M = 300, - T_KM = 301 + T_NETLISTPATCH = 289, + T_ADD_CONN = 290, + T_DEL_CONN = 291, + T_CHANGE_ATTRIB = 292, + T_AREA = 293, + T_THERMAL = 294, + T_DRC = 295, + T_ATTRIBUTE = 296, + T_UMIL = 297, + T_CMIL = 298, + T_MIL = 299, + T_IN = 300, + T_NM = 301, + T_UM = 302, + T_MM = 303, + T_M = 304, + T_KM = 305 }; #endif @@ -97,7 +101,7 @@ typedef union YYSTYPE YYSTYPE; union YYSTYPE { -#line 109 "parse_y.y" /* yacc.c:1909 */ +#line 110 "parse_y.y" /* yacc.c:1909 */ int integer; double number; @@ -105,7 +109,7 @@ FlagType flagtype; PLMeasure measure; -#line 109 "parse_y.tab.h" /* yacc.c:1909 */ +#line 113 "parse_y.tab.h" /* yacc.c:1909 */ }; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 Index: trunk/src/parse_y.y =================================================================== --- trunk/src/parse_y.y (revision 911) +++ trunk/src/parse_y.y (revision 912) @@ -53,6 +53,7 @@ #include "rtree.h" #include "strflags.h" #include "thermal.h" +#include "rats_patch.h" #ifdef HAVE_LIBDMALLOC # include /* see http://dmalloc.com */ @@ -121,6 +122,7 @@ %token T_FILEVERSION T_PCB T_LAYER T_VIA T_RAT T_LINE T_ARC T_RECTANGLE T_TEXT T_ELEMENTLINE %token T_ELEMENT T_PIN T_PAD T_GRID T_FLAGS T_SYMBOL T_SYMBOLLINE T_CURSOR %token T_ELEMENTARC T_MARK T_GROUPS T_STYLES T_POLYGON T_POLYGON_HOLE T_NETLIST T_NET T_CONN +%token T_NETLISTPATCH T_ADD_CONN T_DEL_CONN T_CHANGE_ATTRIB %token T_AREA T_THERMAL T_DRC T_ATTRIBUTE %token T_UMIL T_CMIL T_MIL T_IN T_NM T_UM T_MM T_M T_KM %type symbolid @@ -191,6 +193,7 @@ pcbfont pcbdata pcbnetlist + pcbnetlistpatch { PCBTypePtr pcb_save = PCB; @@ -1826,6 +1829,7 @@ | netdefs net ; + /* %start-doc pcbfile Net @syntax @@ -1887,6 +1891,53 @@ } ; +/* %start-doc pcbfile Netlistpatch + +@syntax +NetListPatch ( ) ( +@ @ @ @dots{} netpatch @dots{} +) +@end syntax + +%end-doc */ + +pcbnetlistpatch : pcbnetpatchdef + | + ; +pcbnetpatchdef + /* net(...) net(...) ... */ + : T_NETLISTPATCH '(' ')' '(' + netpatches ')' + ; + +netpatches + : netpatchdefs + | + ; + +netpatchdefs + : netpatch + | netpatchdefs netpatch + ; + +/* %start-doc pcbfile NetPatch + +@syntax +op (arg1 arg2 ...) ( +@ @ @ @dots{} netlist patch directive @dots{} +) +@end syntax + +%end-doc */ + +netpatch + /* name style pin pin ... */ + : T_ADD_CONN '(' STRING STRING ')' { rats_patch_append(&yyPCB, RATP_ADD_CONN, $3, $4, NULL); } + | T_DEL_CONN '(' STRING STRING ')' { rats_patch_append(&yyPCB, RATP_DEL_CONN, $3, $4, NULL); } + | T_CHANGE_ATTRIB '(' STRING STRING STRING ')' { rats_patch_append(&yyPCB, RATP_CHANGE_ATTRIB, $3, $4, $5); } + ; + + /* %start-doc pcbfile Attribute @syntax Index: trunk/src/rats_patch.h =================================================================== --- trunk/src/rats_patch.h (nonexistent) +++ trunk/src/rats_patch.h (revision 912) @@ -0,0 +1,3 @@ +#include "global.h" +void rats_patch_append(PCBTypePtr *pcb, rats_patch_op_t op, const char *id, const char *a1, const char *a2); +