Fossil SCM
Fix the build for Windows by adding macro M_PI if it is missing.
Commit
0df84add062e7b21938393ee8194a27d868204b917546d5de5de394113a52a4d
Parent
17d89b9a9a2d134…
1 file changed
+204
-201
+204
-201
| --- src/pikchr.c | ||
| +++ src/pikchr.c | ||
| @@ -121,10 +121,13 @@ | ||
| 121 | 121 | #include <string.h> |
| 122 | 122 | #include <ctype.h> |
| 123 | 123 | #include <math.h> |
| 124 | 124 | #include <assert.h> |
| 125 | 125 | #define count(X) (sizeof(X)/sizeof(X[0])) |
| 126 | +#ifndef M_PI | |
| 127 | +# define M_PI 3.1415926535897932385 | |
| 128 | +#endif | |
| 126 | 129 | |
| 127 | 130 | typedef struct Pik Pik; /* Complete parsing context */ |
| 128 | 131 | typedef struct PToken PToken; /* A single token */ |
| 129 | 132 | typedef struct PElem PElem; /* A single diagram object or "element" */ |
| 130 | 133 | typedef struct PEList PEList; /* A list of elements */ |
| @@ -405,11 +408,11 @@ | ||
| 405 | 408 | static void pik_same(Pik *p, PElem*, PToken*); |
| 406 | 409 | static PPoint pik_nth_vertex(Pik *p, PToken *pNth, PToken *pErr, PElem *pElem); |
| 407 | 410 | static PToken pik_next_semantic_token(Pik *p, PToken *pThis); |
| 408 | 411 | |
| 409 | 412 | |
| 410 | -#line 436 "pikchr.c" | |
| 413 | +#line 439 "pikchr.c" | |
| 411 | 414 | /**************** End of %include directives **********************************/ |
| 412 | 415 | /* These constants specify the various numeric values for terminal symbols. |
| 413 | 416 | ***************** Begin token definitions *************************************/ |
| 414 | 417 | #ifndef T_ID |
| 415 | 418 | #define T_ID 1 |
| @@ -1470,22 +1473,22 @@ | ||
| 1470 | 1473 | ** inside the C code. |
| 1471 | 1474 | */ |
| 1472 | 1475 | /********* Begin destructor definitions ***************************************/ |
| 1473 | 1476 | case 82: /* element_list */ |
| 1474 | 1477 | { |
| 1475 | -#line 419 "pikchr.y" | |
| 1478 | +#line 422 "pikchr.y" | |
| 1476 | 1479 | pik_elist_free(p,(yypminor->yy42)); |
| 1477 | -#line 1502 "pikchr.c" | |
| 1480 | +#line 1505 "pikchr.c" | |
| 1478 | 1481 | } |
| 1479 | 1482 | break; |
| 1480 | 1483 | case 83: /* element */ |
| 1481 | 1484 | case 84: /* unnamed_element */ |
| 1482 | 1485 | case 85: /* basetype */ |
| 1483 | 1486 | { |
| 1484 | -#line 421 "pikchr.y" | |
| 1487 | +#line 424 "pikchr.y" | |
| 1485 | 1488 | pik_elem_free(p,(yypminor->yy24)); |
| 1486 | -#line 1511 "pikchr.c" | |
| 1489 | +#line 1514 "pikchr.c" | |
| 1487 | 1490 | } |
| 1488 | 1491 | break; |
| 1489 | 1492 | /********* End destructor definitions *****************************************/ |
| 1490 | 1493 | default: break; /* If no destructor action specified: do nothing */ |
| 1491 | 1494 | } |
| @@ -1699,14 +1702,14 @@ | ||
| 1699 | 1702 | #endif |
| 1700 | 1703 | while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser); |
| 1701 | 1704 | /* Here code is inserted which will execute if the parser |
| 1702 | 1705 | ** stack every overflows */ |
| 1703 | 1706 | /******** Begin %stack_overflow code ******************************************/ |
| 1704 | -#line 450 "pikchr.y" | |
| 1707 | +#line 453 "pikchr.y" | |
| 1705 | 1708 | |
| 1706 | 1709 | pik_error(p, 0, "parser stack overflow"); |
| 1707 | -#line 1732 "pikchr.c" | |
| 1710 | +#line 1735 "pikchr.c" | |
| 1708 | 1711 | /******** End %stack_overflow code ********************************************/ |
| 1709 | 1712 | pik_parserARG_STORE /* Suppress warning about unused %extra_argument var */ |
| 1710 | 1713 | pik_parserCTX_STORE |
| 1711 | 1714 | } |
| 1712 | 1715 | |
| @@ -2153,549 +2156,549 @@ | ||
| 2153 | 2156 | ** break; |
| 2154 | 2157 | */ |
| 2155 | 2158 | /********** Begin reduce actions **********************************************/ |
| 2156 | 2159 | YYMINORTYPE yylhsminor; |
| 2157 | 2160 | case 0: /* document ::= element_list */ |
| 2158 | -#line 454 "pikchr.y" | |
| 2161 | +#line 457 "pikchr.y" | |
| 2159 | 2162 | {pik_render(p,yymsp[0].minor.yy42);} |
| 2160 | -#line 2185 "pikchr.c" | |
| 2163 | +#line 2188 "pikchr.c" | |
| 2161 | 2164 | break; |
| 2162 | 2165 | case 1: /* element_list ::= element */ |
| 2163 | -#line 457 "pikchr.y" | |
| 2166 | +#line 460 "pikchr.y" | |
| 2164 | 2167 | { yylhsminor.yy42 = pik_elist_append(p,0,yymsp[0].minor.yy24); } |
| 2165 | -#line 2190 "pikchr.c" | |
| 2168 | +#line 2193 "pikchr.c" | |
| 2166 | 2169 | yymsp[0].minor.yy42 = yylhsminor.yy42; |
| 2167 | 2170 | break; |
| 2168 | 2171 | case 2: /* element_list ::= element_list EOL element */ |
| 2169 | -#line 459 "pikchr.y" | |
| 2172 | +#line 462 "pikchr.y" | |
| 2170 | 2173 | { yylhsminor.yy42 = pik_elist_append(p,yymsp[-2].minor.yy42,yymsp[0].minor.yy24); } |
| 2171 | -#line 2196 "pikchr.c" | |
| 2174 | +#line 2199 "pikchr.c" | |
| 2172 | 2175 | yymsp[-2].minor.yy42 = yylhsminor.yy42; |
| 2173 | 2176 | break; |
| 2174 | 2177 | case 3: /* element ::= */ |
| 2175 | -#line 462 "pikchr.y" | |
| 2178 | +#line 465 "pikchr.y" | |
| 2176 | 2179 | { yymsp[1].minor.yy24 = 0; } |
| 2177 | -#line 2202 "pikchr.c" | |
| 2180 | +#line 2205 "pikchr.c" | |
| 2178 | 2181 | break; |
| 2179 | 2182 | case 4: /* element ::= direction */ |
| 2180 | -#line 463 "pikchr.y" | |
| 2183 | +#line 466 "pikchr.y" | |
| 2181 | 2184 | { pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy24=0; } |
| 2182 | -#line 2207 "pikchr.c" | |
| 2185 | +#line 2210 "pikchr.c" | |
| 2183 | 2186 | yymsp[0].minor.yy24 = yylhsminor.yy24; |
| 2184 | 2187 | break; |
| 2185 | 2188 | case 5: /* element ::= lvalue ASSIGN rvalue */ |
| 2186 | -#line 464 "pikchr.y" | |
| 2189 | +#line 467 "pikchr.y" | |
| 2187 | 2190 | {pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy83,&yymsp[-1].minor.yy0); yylhsminor.yy24=0;} |
| 2188 | -#line 2213 "pikchr.c" | |
| 2191 | +#line 2216 "pikchr.c" | |
| 2189 | 2192 | yymsp[-2].minor.yy24 = yylhsminor.yy24; |
| 2190 | 2193 | break; |
| 2191 | 2194 | case 6: /* element ::= PLACENAME COLON unnamed_element */ |
| 2192 | -#line 466 "pikchr.y" | |
| 2195 | +#line 469 "pikchr.y" | |
| 2193 | 2196 | { yylhsminor.yy24 = yymsp[0].minor.yy24; pik_elem_setname(p,yymsp[0].minor.yy24,&yymsp[-2].minor.yy0); } |
| 2194 | -#line 2219 "pikchr.c" | |
| 2197 | +#line 2222 "pikchr.c" | |
| 2195 | 2198 | yymsp[-2].minor.yy24 = yylhsminor.yy24; |
| 2196 | 2199 | break; |
| 2197 | 2200 | case 7: /* element ::= PLACENAME COLON position */ |
| 2198 | -#line 468 "pikchr.y" | |
| 2201 | +#line 471 "pikchr.y" | |
| 2199 | 2202 | { yylhsminor.yy24 = pik_elem_new(p,0,0,0); |
| 2200 | 2203 | if(yylhsminor.yy24){ yylhsminor.yy24->ptAt = yymsp[0].minor.yy49; pik_elem_setname(p,yylhsminor.yy24,&yymsp[-2].minor.yy0); }} |
| 2201 | -#line 2226 "pikchr.c" | |
| 2204 | +#line 2229 "pikchr.c" | |
| 2202 | 2205 | yymsp[-2].minor.yy24 = yylhsminor.yy24; |
| 2203 | 2206 | break; |
| 2204 | 2207 | case 8: /* element ::= unnamed_element */ |
| 2205 | -#line 470 "pikchr.y" | |
| 2208 | +#line 473 "pikchr.y" | |
| 2206 | 2209 | {yylhsminor.yy24 = yymsp[0].minor.yy24;} |
| 2207 | -#line 2232 "pikchr.c" | |
| 2210 | +#line 2235 "pikchr.c" | |
| 2208 | 2211 | yymsp[0].minor.yy24 = yylhsminor.yy24; |
| 2209 | 2212 | break; |
| 2210 | 2213 | case 9: /* element ::= print prlist */ |
| 2211 | -#line 471 "pikchr.y" | |
| 2214 | +#line 474 "pikchr.y" | |
| 2212 | 2215 | {pik_append(p,"<br>\n",5); yymsp[-1].minor.yy24=0;} |
| 2213 | -#line 2238 "pikchr.c" | |
| 2216 | +#line 2241 "pikchr.c" | |
| 2214 | 2217 | break; |
| 2215 | 2218 | case 10: /* rvalue ::= PLACENAME */ |
| 2216 | -#line 481 "pikchr.y" | |
| 2219 | +#line 484 "pikchr.y" | |
| 2217 | 2220 | {yylhsminor.yy83 = pik_lookup_color(p,&yymsp[0].minor.yy0);} |
| 2218 | -#line 2243 "pikchr.c" | |
| 2221 | +#line 2246 "pikchr.c" | |
| 2219 | 2222 | yymsp[0].minor.yy83 = yylhsminor.yy83; |
| 2220 | 2223 | break; |
| 2221 | 2224 | case 11: /* pritem ::= rvalue */ |
| 2222 | -#line 486 "pikchr.y" | |
| 2225 | +#line 489 "pikchr.y" | |
| 2223 | 2226 | {pik_append_num(p,"",yymsp[0].minor.yy83);} |
| 2224 | -#line 2249 "pikchr.c" | |
| 2227 | +#line 2252 "pikchr.c" | |
| 2225 | 2228 | break; |
| 2226 | 2229 | case 12: /* pritem ::= STRING */ |
| 2227 | -#line 487 "pikchr.y" | |
| 2230 | +#line 490 "pikchr.y" | |
| 2228 | 2231 | {pik_append_text(p,yymsp[0].minor.yy0.z+1,yymsp[0].minor.yy0.n-2,0);} |
| 2229 | -#line 2254 "pikchr.c" | |
| 2232 | +#line 2257 "pikchr.c" | |
| 2230 | 2233 | break; |
| 2231 | 2234 | case 13: /* prsep ::= COMMA */ |
| 2232 | -#line 488 "pikchr.y" | |
| 2235 | +#line 491 "pikchr.y" | |
| 2233 | 2236 | {pik_append(p, " ", 1);} |
| 2234 | -#line 2259 "pikchr.c" | |
| 2237 | +#line 2262 "pikchr.c" | |
| 2235 | 2238 | break; |
| 2236 | 2239 | case 14: /* unnamed_element ::= basetype attribute_list */ |
| 2237 | -#line 491 "pikchr.y" | |
| 2240 | +#line 494 "pikchr.y" | |
| 2238 | 2241 | {yylhsminor.yy24 = yymsp[-1].minor.yy24; pik_after_adding_attributes(p,yylhsminor.yy24);} |
| 2239 | -#line 2264 "pikchr.c" | |
| 2242 | +#line 2267 "pikchr.c" | |
| 2240 | 2243 | yymsp[-1].minor.yy24 = yylhsminor.yy24; |
| 2241 | 2244 | break; |
| 2242 | 2245 | case 15: /* basetype ::= CLASSNAME */ |
| 2243 | -#line 493 "pikchr.y" | |
| 2246 | +#line 496 "pikchr.y" | |
| 2244 | 2247 | {yylhsminor.yy24 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); } |
| 2245 | -#line 2270 "pikchr.c" | |
| 2248 | +#line 2273 "pikchr.c" | |
| 2246 | 2249 | yymsp[0].minor.yy24 = yylhsminor.yy24; |
| 2247 | 2250 | break; |
| 2248 | 2251 | case 16: /* basetype ::= STRING textposition */ |
| 2249 | -#line 495 "pikchr.y" | |
| 2252 | +#line 498 "pikchr.y" | |
| 2250 | 2253 | {yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy52; yylhsminor.yy24 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); } |
| 2251 | -#line 2276 "pikchr.c" | |
| 2254 | +#line 2279 "pikchr.c" | |
| 2252 | 2255 | yymsp[-1].minor.yy24 = yylhsminor.yy24; |
| 2253 | 2256 | break; |
| 2254 | 2257 | case 17: /* basetype ::= LB savelist element_list RB */ |
| 2255 | -#line 497 "pikchr.y" | |
| 2258 | +#line 500 "pikchr.y" | |
| 2256 | 2259 | { p->list = yymsp[-2].minor.yy42; yymsp[-3].minor.yy24 = pik_elem_new(p,0,0,yymsp[-1].minor.yy42); if(yymsp[-3].minor.yy24) yymsp[-3].minor.yy24->errTok = yymsp[0].minor.yy0; } |
| 2257 | -#line 2282 "pikchr.c" | |
| 2260 | +#line 2285 "pikchr.c" | |
| 2258 | 2261 | break; |
| 2259 | 2262 | case 18: /* savelist ::= */ |
| 2260 | -#line 502 "pikchr.y" | |
| 2263 | +#line 505 "pikchr.y" | |
| 2261 | 2264 | {yymsp[1].minor.yy42 = p->list; p->list = 0;} |
| 2262 | -#line 2287 "pikchr.c" | |
| 2265 | +#line 2290 "pikchr.c" | |
| 2263 | 2266 | break; |
| 2264 | 2267 | case 19: /* attribute_list ::= expr */ |
| 2265 | -#line 509 "pikchr.y" | |
| 2268 | +#line 512 "pikchr.y" | |
| 2266 | 2269 | { pik_add_direction(p,0,&yymsp[0].minor.yy83,0);} |
| 2267 | -#line 2292 "pikchr.c" | |
| 2270 | +#line 2295 "pikchr.c" | |
| 2268 | 2271 | break; |
| 2269 | 2272 | case 20: /* attribute_list ::= expr PERCENT */ |
| 2270 | -#line 510 "pikchr.y" | |
| 2273 | +#line 513 "pikchr.y" | |
| 2271 | 2274 | { pik_add_direction(p,0,&yymsp[-1].minor.yy83,1);} |
| 2272 | -#line 2297 "pikchr.c" | |
| 2275 | +#line 2300 "pikchr.c" | |
| 2273 | 2276 | break; |
| 2274 | 2277 | case 21: /* attribute ::= numproperty expr PERCENT */ |
| 2275 | -#line 515 "pikchr.y" | |
| 2278 | +#line 518 "pikchr.y" | |
| 2276 | 2279 | { pik_set_numprop(p,&yymsp[-2].minor.yy0,0.0,yymsp[-1].minor.yy83/100.0); } |
| 2277 | -#line 2302 "pikchr.c" | |
| 2280 | +#line 2305 "pikchr.c" | |
| 2278 | 2281 | break; |
| 2279 | 2282 | case 22: /* attribute ::= numproperty expr */ |
| 2280 | 2283 | case 25: /* attribute ::= colorproperty rvalue */ yytestcase(yyruleno==25); |
| 2281 | -#line 516 "pikchr.y" | |
| 2284 | +#line 519 "pikchr.y" | |
| 2282 | 2285 | { pik_set_numprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy83,0.0); } |
| 2283 | -#line 2308 "pikchr.c" | |
| 2286 | +#line 2311 "pikchr.c" | |
| 2284 | 2287 | break; |
| 2285 | 2288 | case 23: /* attribute ::= dashproperty expr */ |
| 2286 | -#line 517 "pikchr.y" | |
| 2289 | +#line 520 "pikchr.y" | |
| 2287 | 2290 | { pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy83); } |
| 2288 | -#line 2313 "pikchr.c" | |
| 2291 | +#line 2316 "pikchr.c" | |
| 2289 | 2292 | break; |
| 2290 | 2293 | case 24: /* attribute ::= dashproperty */ |
| 2291 | -#line 518 "pikchr.y" | |
| 2294 | +#line 521 "pikchr.y" | |
| 2292 | 2295 | { pik_set_dashed(p,&yymsp[0].minor.yy0,0); } |
| 2293 | -#line 2318 "pikchr.c" | |
| 2296 | +#line 2321 "pikchr.c" | |
| 2294 | 2297 | break; |
| 2295 | 2298 | case 26: /* attribute ::= direction expr PERCENT */ |
| 2296 | -#line 521 "pikchr.y" | |
| 2299 | +#line 524 "pikchr.y" | |
| 2297 | 2300 | { pik_add_direction(p,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy83,1);} |
| 2298 | -#line 2323 "pikchr.c" | |
| 2301 | +#line 2326 "pikchr.c" | |
| 2299 | 2302 | break; |
| 2300 | 2303 | case 27: /* attribute ::= direction expr */ |
| 2301 | -#line 522 "pikchr.y" | |
| 2304 | +#line 525 "pikchr.y" | |
| 2302 | 2305 | { pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy83,0);} |
| 2303 | -#line 2328 "pikchr.c" | |
| 2306 | +#line 2331 "pikchr.c" | |
| 2304 | 2307 | break; |
| 2305 | 2308 | case 28: /* attribute ::= direction */ |
| 2306 | -#line 523 "pikchr.y" | |
| 2309 | +#line 526 "pikchr.y" | |
| 2307 | 2310 | { pik_add_direction(p,&yymsp[0].minor.yy0,0,0); } |
| 2308 | -#line 2333 "pikchr.c" | |
| 2311 | +#line 2336 "pikchr.c" | |
| 2309 | 2312 | break; |
| 2310 | 2313 | case 29: /* attribute ::= direction even position */ |
| 2311 | -#line 524 "pikchr.y" | |
| 2314 | +#line 527 "pikchr.y" | |
| 2312 | 2315 | {pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy49);} |
| 2313 | -#line 2338 "pikchr.c" | |
| 2316 | +#line 2341 "pikchr.c" | |
| 2314 | 2317 | break; |
| 2315 | 2318 | case 30: /* attribute ::= CLOSE */ |
| 2316 | -#line 525 "pikchr.y" | |
| 2319 | +#line 528 "pikchr.y" | |
| 2317 | 2320 | { pik_close_path(p,&yymsp[0].minor.yy0); } |
| 2318 | -#line 2343 "pikchr.c" | |
| 2321 | +#line 2346 "pikchr.c" | |
| 2319 | 2322 | break; |
| 2320 | 2323 | case 31: /* attribute ::= CHOP */ |
| 2321 | -#line 526 "pikchr.y" | |
| 2324 | +#line 529 "pikchr.y" | |
| 2322 | 2325 | { p->cur->bChop = 1; } |
| 2323 | -#line 2348 "pikchr.c" | |
| 2326 | +#line 2351 "pikchr.c" | |
| 2324 | 2327 | break; |
| 2325 | 2328 | case 32: /* attribute ::= FROM position */ |
| 2326 | -#line 527 "pikchr.y" | |
| 2329 | +#line 530 "pikchr.y" | |
| 2327 | 2330 | { pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy49); } |
| 2328 | -#line 2353 "pikchr.c" | |
| 2331 | +#line 2356 "pikchr.c" | |
| 2329 | 2332 | break; |
| 2330 | 2333 | case 33: /* attribute ::= TO position */ |
| 2331 | -#line 528 "pikchr.y" | |
| 2334 | +#line 531 "pikchr.y" | |
| 2332 | 2335 | { pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy49); } |
| 2333 | -#line 2358 "pikchr.c" | |
| 2336 | +#line 2361 "pikchr.c" | |
| 2334 | 2337 | break; |
| 2335 | 2338 | case 34: /* attribute ::= THEN */ |
| 2336 | -#line 529 "pikchr.y" | |
| 2339 | +#line 532 "pikchr.y" | |
| 2337 | 2340 | { pik_then(p, &yymsp[0].minor.yy0, p->cur); } |
| 2338 | -#line 2363 "pikchr.c" | |
| 2341 | +#line 2366 "pikchr.c" | |
| 2339 | 2342 | break; |
| 2340 | 2343 | case 35: /* attribute ::= AT position */ |
| 2341 | -#line 531 "pikchr.y" | |
| 2344 | +#line 534 "pikchr.y" | |
| 2342 | 2345 | { pik_set_at(p,0,&yymsp[0].minor.yy49,&yymsp[-1].minor.yy0); } |
| 2343 | -#line 2368 "pikchr.c" | |
| 2346 | +#line 2371 "pikchr.c" | |
| 2344 | 2347 | break; |
| 2345 | 2348 | case 36: /* attribute ::= SAME */ |
| 2346 | -#line 533 "pikchr.y" | |
| 2349 | +#line 536 "pikchr.y" | |
| 2347 | 2350 | {pik_same(p,0,&yymsp[0].minor.yy0);} |
| 2348 | -#line 2373 "pikchr.c" | |
| 2351 | +#line 2376 "pikchr.c" | |
| 2349 | 2352 | break; |
| 2350 | 2353 | case 37: /* attribute ::= SAME AS object */ |
| 2351 | -#line 534 "pikchr.y" | |
| 2354 | +#line 537 "pikchr.y" | |
| 2352 | 2355 | {pik_same(p,yymsp[0].minor.yy24,&yymsp[-2].minor.yy0);} |
| 2353 | -#line 2378 "pikchr.c" | |
| 2356 | +#line 2381 "pikchr.c" | |
| 2354 | 2357 | break; |
| 2355 | 2358 | case 38: /* attribute ::= STRING textposition */ |
| 2356 | -#line 535 "pikchr.y" | |
| 2359 | +#line 538 "pikchr.y" | |
| 2357 | 2360 | {pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy52);} |
| 2358 | -#line 2383 "pikchr.c" | |
| 2361 | +#line 2386 "pikchr.c" | |
| 2359 | 2362 | break; |
| 2360 | 2363 | case 39: /* attribute ::= FIT */ |
| 2361 | -#line 536 "pikchr.y" | |
| 2364 | +#line 539 "pikchr.y" | |
| 2362 | 2365 | {pik_size_to_fit(p,&yymsp[0].minor.yy0); } |
| 2363 | -#line 2388 "pikchr.c" | |
| 2366 | +#line 2391 "pikchr.c" | |
| 2364 | 2367 | break; |
| 2365 | 2368 | case 40: /* with ::= DOT_E edge AT position */ |
| 2366 | 2369 | case 41: /* with ::= edge AT position */ yytestcase(yyruleno==41); |
| 2367 | -#line 543 "pikchr.y" | |
| 2370 | +#line 546 "pikchr.y" | |
| 2368 | 2371 | { pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy49,&yymsp[-1].minor.yy0); } |
| 2369 | -#line 2394 "pikchr.c" | |
| 2372 | +#line 2397 "pikchr.c" | |
| 2370 | 2373 | break; |
| 2371 | 2374 | case 42: /* numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */ |
| 2372 | -#line 547 "pikchr.y" | |
| 2375 | +#line 550 "pikchr.y" | |
| 2373 | 2376 | {yylhsminor.yy0 = yymsp[0].minor.yy0;} |
| 2374 | -#line 2399 "pikchr.c" | |
| 2377 | +#line 2402 "pikchr.c" | |
| 2375 | 2378 | yymsp[0].minor.yy0 = yylhsminor.yy0; |
| 2376 | 2379 | break; |
| 2377 | 2380 | case 43: /* boolproperty ::= CW */ |
| 2378 | -#line 558 "pikchr.y" | |
| 2381 | +#line 561 "pikchr.y" | |
| 2379 | 2382 | {p->cur->cw = 1;} |
| 2380 | -#line 2405 "pikchr.c" | |
| 2383 | +#line 2408 "pikchr.c" | |
| 2381 | 2384 | break; |
| 2382 | 2385 | case 44: /* boolproperty ::= CCW */ |
| 2383 | -#line 559 "pikchr.y" | |
| 2386 | +#line 562 "pikchr.y" | |
| 2384 | 2387 | {p->cur->cw = 0;} |
| 2385 | -#line 2410 "pikchr.c" | |
| 2388 | +#line 2413 "pikchr.c" | |
| 2386 | 2389 | break; |
| 2387 | 2390 | case 45: /* boolproperty ::= LARROW */ |
| 2388 | -#line 560 "pikchr.y" | |
| 2391 | +#line 563 "pikchr.y" | |
| 2389 | 2392 | {p->cur->larrow=1; p->cur->rarrow=0; } |
| 2390 | -#line 2415 "pikchr.c" | |
| 2393 | +#line 2418 "pikchr.c" | |
| 2391 | 2394 | break; |
| 2392 | 2395 | case 46: /* boolproperty ::= RARROW */ |
| 2393 | -#line 561 "pikchr.y" | |
| 2396 | +#line 564 "pikchr.y" | |
| 2394 | 2397 | {p->cur->larrow=0; p->cur->rarrow=1; } |
| 2395 | -#line 2420 "pikchr.c" | |
| 2398 | +#line 2423 "pikchr.c" | |
| 2396 | 2399 | break; |
| 2397 | 2400 | case 47: /* boolproperty ::= LRARROW */ |
| 2398 | -#line 562 "pikchr.y" | |
| 2401 | +#line 565 "pikchr.y" | |
| 2399 | 2402 | {p->cur->larrow=1; p->cur->rarrow=1; } |
| 2400 | -#line 2425 "pikchr.c" | |
| 2403 | +#line 2428 "pikchr.c" | |
| 2401 | 2404 | break; |
| 2402 | 2405 | case 48: /* boolproperty ::= INVIS */ |
| 2403 | -#line 563 "pikchr.y" | |
| 2406 | +#line 566 "pikchr.y" | |
| 2404 | 2407 | {p->cur->sw = 0.0;} |
| 2405 | -#line 2430 "pikchr.c" | |
| 2408 | +#line 2433 "pikchr.c" | |
| 2406 | 2409 | break; |
| 2407 | 2410 | case 49: /* textposition ::= */ |
| 2408 | -#line 565 "pikchr.y" | |
| 2411 | +#line 568 "pikchr.y" | |
| 2409 | 2412 | {yymsp[1].minor.yy52 = 0;} |
| 2410 | -#line 2435 "pikchr.c" | |
| 2413 | +#line 2438 "pikchr.c" | |
| 2411 | 2414 | break; |
| 2412 | 2415 | case 50: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED */ |
| 2413 | -#line 568 "pikchr.y" | |
| 2416 | +#line 571 "pikchr.y" | |
| 2414 | 2417 | {yylhsminor.yy52 = pik_text_position(p,yymsp[-1].minor.yy52,&yymsp[0].minor.yy0);} |
| 2415 | -#line 2440 "pikchr.c" | |
| 2418 | +#line 2443 "pikchr.c" | |
| 2416 | 2419 | yymsp[-1].minor.yy52 = yylhsminor.yy52; |
| 2417 | 2420 | break; |
| 2418 | 2421 | case 51: /* position ::= expr COMMA expr */ |
| 2419 | -#line 571 "pikchr.y" | |
| 2422 | +#line 574 "pikchr.y" | |
| 2420 | 2423 | {yylhsminor.yy49.x=yymsp[-2].minor.yy83; yylhsminor.yy49.y=yymsp[0].minor.yy83;} |
| 2421 | -#line 2446 "pikchr.c" | |
| 2424 | +#line 2449 "pikchr.c" | |
| 2422 | 2425 | yymsp[-2].minor.yy49 = yylhsminor.yy49; |
| 2423 | 2426 | break; |
| 2424 | 2427 | case 52: /* position ::= place PLUS expr COMMA expr */ |
| 2425 | -#line 573 "pikchr.y" | |
| 2428 | +#line 576 "pikchr.y" | |
| 2426 | 2429 | {yylhsminor.yy49.x=yymsp[-4].minor.yy49.x+yymsp[-2].minor.yy83; yylhsminor.yy49.y=yymsp[-4].minor.yy49.y+yymsp[0].minor.yy83;} |
| 2427 | -#line 2452 "pikchr.c" | |
| 2430 | +#line 2455 "pikchr.c" | |
| 2428 | 2431 | yymsp[-4].minor.yy49 = yylhsminor.yy49; |
| 2429 | 2432 | break; |
| 2430 | 2433 | case 53: /* position ::= place MINUS expr COMMA expr */ |
| 2431 | -#line 574 "pikchr.y" | |
| 2434 | +#line 577 "pikchr.y" | |
| 2432 | 2435 | {yylhsminor.yy49.x=yymsp[-4].minor.yy49.x-yymsp[-2].minor.yy83; yylhsminor.yy49.y=yymsp[-4].minor.yy49.y-yymsp[0].minor.yy83;} |
| 2433 | -#line 2458 "pikchr.c" | |
| 2436 | +#line 2461 "pikchr.c" | |
| 2434 | 2437 | yymsp[-4].minor.yy49 = yylhsminor.yy49; |
| 2435 | 2438 | break; |
| 2436 | 2439 | case 54: /* position ::= place PLUS LP expr COMMA expr RP */ |
| 2437 | -#line 576 "pikchr.y" | |
| 2440 | +#line 579 "pikchr.y" | |
| 2438 | 2441 | {yylhsminor.yy49.x=yymsp[-6].minor.yy49.x+yymsp[-3].minor.yy83; yylhsminor.yy49.y=yymsp[-6].minor.yy49.y+yymsp[-1].minor.yy83;} |
| 2439 | -#line 2464 "pikchr.c" | |
| 2442 | +#line 2467 "pikchr.c" | |
| 2440 | 2443 | yymsp[-6].minor.yy49 = yylhsminor.yy49; |
| 2441 | 2444 | break; |
| 2442 | 2445 | case 55: /* position ::= place MINUS LP expr COMMA expr RP */ |
| 2443 | -#line 578 "pikchr.y" | |
| 2446 | +#line 581 "pikchr.y" | |
| 2444 | 2447 | {yylhsminor.yy49.x=yymsp[-6].minor.yy49.x-yymsp[-3].minor.yy83; yylhsminor.yy49.y=yymsp[-6].minor.yy49.y-yymsp[-1].minor.yy83;} |
| 2445 | -#line 2470 "pikchr.c" | |
| 2448 | +#line 2473 "pikchr.c" | |
| 2446 | 2449 | yymsp[-6].minor.yy49 = yylhsminor.yy49; |
| 2447 | 2450 | break; |
| 2448 | 2451 | case 56: /* position ::= LP position COMMA position RP */ |
| 2449 | -#line 579 "pikchr.y" | |
| 2452 | +#line 582 "pikchr.y" | |
| 2450 | 2453 | {yymsp[-4].minor.yy49.x=yymsp[-3].minor.yy49.x; yymsp[-4].minor.yy49.y=yymsp[-1].minor.yy49.y;} |
| 2451 | -#line 2476 "pikchr.c" | |
| 2454 | +#line 2479 "pikchr.c" | |
| 2452 | 2455 | break; |
| 2453 | 2456 | case 57: /* position ::= LP position RP */ |
| 2454 | -#line 580 "pikchr.y" | |
| 2457 | +#line 583 "pikchr.y" | |
| 2455 | 2458 | {yymsp[-2].minor.yy49=yymsp[-1].minor.yy49;} |
| 2456 | -#line 2481 "pikchr.c" | |
| 2459 | +#line 2484 "pikchr.c" | |
| 2457 | 2460 | break; |
| 2458 | 2461 | case 58: /* position ::= expr between position AND position */ |
| 2459 | -#line 582 "pikchr.y" | |
| 2462 | +#line 585 "pikchr.y" | |
| 2460 | 2463 | {yylhsminor.yy49 = pik_position_between(p,yymsp[-4].minor.yy83,yymsp[-2].minor.yy49,yymsp[0].minor.yy49);} |
| 2461 | -#line 2486 "pikchr.c" | |
| 2464 | +#line 2489 "pikchr.c" | |
| 2462 | 2465 | yymsp[-4].minor.yy49 = yylhsminor.yy49; |
| 2463 | 2466 | break; |
| 2464 | 2467 | case 59: /* position ::= expr ABOVE position */ |
| 2465 | -#line 583 "pikchr.y" | |
| 2468 | +#line 586 "pikchr.y" | |
| 2466 | 2469 | {yylhsminor.yy49=yymsp[0].minor.yy49; yylhsminor.yy49.y += yymsp[-2].minor.yy83;} |
| 2467 | -#line 2492 "pikchr.c" | |
| 2470 | +#line 2495 "pikchr.c" | |
| 2468 | 2471 | yymsp[-2].minor.yy49 = yylhsminor.yy49; |
| 2469 | 2472 | break; |
| 2470 | 2473 | case 60: /* position ::= expr BELOW position */ |
| 2471 | -#line 584 "pikchr.y" | |
| 2474 | +#line 587 "pikchr.y" | |
| 2472 | 2475 | {yylhsminor.yy49=yymsp[0].minor.yy49; yylhsminor.yy49.y -= yymsp[-2].minor.yy83;} |
| 2473 | -#line 2498 "pikchr.c" | |
| 2476 | +#line 2501 "pikchr.c" | |
| 2474 | 2477 | yymsp[-2].minor.yy49 = yylhsminor.yy49; |
| 2475 | 2478 | break; |
| 2476 | 2479 | case 61: /* position ::= expr LEFT OF position */ |
| 2477 | -#line 585 "pikchr.y" | |
| 2480 | +#line 588 "pikchr.y" | |
| 2478 | 2481 | {yylhsminor.yy49=yymsp[0].minor.yy49; yylhsminor.yy49.x -= yymsp[-3].minor.yy83;} |
| 2479 | -#line 2504 "pikchr.c" | |
| 2482 | +#line 2507 "pikchr.c" | |
| 2480 | 2483 | yymsp[-3].minor.yy49 = yylhsminor.yy49; |
| 2481 | 2484 | break; |
| 2482 | 2485 | case 62: /* position ::= expr RIGHT OF position */ |
| 2483 | -#line 586 "pikchr.y" | |
| 2486 | +#line 589 "pikchr.y" | |
| 2484 | 2487 | {yylhsminor.yy49=yymsp[0].minor.yy49; yylhsminor.yy49.x += yymsp[-3].minor.yy83;} |
| 2485 | -#line 2510 "pikchr.c" | |
| 2488 | +#line 2513 "pikchr.c" | |
| 2486 | 2489 | yymsp[-3].minor.yy49 = yylhsminor.yy49; |
| 2487 | 2490 | break; |
| 2488 | 2491 | case 63: /* position ::= expr EDGEPT OF position */ |
| 2489 | -#line 588 "pikchr.y" | |
| 2492 | +#line 591 "pikchr.y" | |
| 2490 | 2493 | {yylhsminor.yy49 = pik_position_at_hdg(p,yymsp[-3].minor.yy83,&yymsp[-2].minor.yy0,yymsp[0].minor.yy49);} |
| 2491 | -#line 2516 "pikchr.c" | |
| 2494 | +#line 2519 "pikchr.c" | |
| 2492 | 2495 | yymsp[-3].minor.yy49 = yylhsminor.yy49; |
| 2493 | 2496 | break; |
| 2494 | 2497 | case 64: /* position ::= expr HEADING expr FROM position */ |
| 2495 | -#line 590 "pikchr.y" | |
| 2498 | +#line 593 "pikchr.y" | |
| 2496 | 2499 | {yylhsminor.yy49 = pik_position_at_angle(p,yymsp[-4].minor.yy83,yymsp[-2].minor.yy83,yymsp[0].minor.yy49);} |
| 2497 | -#line 2522 "pikchr.c" | |
| 2500 | +#line 2525 "pikchr.c" | |
| 2498 | 2501 | yymsp[-4].minor.yy49 = yylhsminor.yy49; |
| 2499 | 2502 | break; |
| 2500 | 2503 | case 65: /* place ::= object */ |
| 2501 | -#line 596 "pikchr.y" | |
| 2504 | +#line 599 "pikchr.y" | |
| 2502 | 2505 | {yylhsminor.yy49 = pik_place_of_elem(p,yymsp[0].minor.yy24,0);} |
| 2503 | -#line 2528 "pikchr.c" | |
| 2506 | +#line 2531 "pikchr.c" | |
| 2504 | 2507 | yymsp[0].minor.yy49 = yylhsminor.yy49; |
| 2505 | 2508 | break; |
| 2506 | 2509 | case 66: /* place ::= object DOT_E edge */ |
| 2507 | 2510 | case 67: /* place ::= object DOT_L START */ yytestcase(yyruleno==67); |
| 2508 | 2511 | case 68: /* place ::= object DOT_L END */ yytestcase(yyruleno==68); |
| 2509 | -#line 597 "pikchr.y" | |
| 2512 | +#line 600 "pikchr.y" | |
| 2510 | 2513 | {yylhsminor.yy49 = pik_place_of_elem(p,yymsp[-2].minor.yy24,&yymsp[0].minor.yy0);} |
| 2511 | -#line 2536 "pikchr.c" | |
| 2514 | +#line 2539 "pikchr.c" | |
| 2512 | 2515 | yymsp[-2].minor.yy49 = yylhsminor.yy49; |
| 2513 | 2516 | break; |
| 2514 | 2517 | case 69: /* place ::= START OF object */ |
| 2515 | 2518 | case 70: /* place ::= END OF object */ yytestcase(yyruleno==70); |
| 2516 | 2519 | case 71: /* place ::= edge OF object */ yytestcase(yyruleno==71); |
| 2517 | -#line 600 "pikchr.y" | |
| 2520 | +#line 603 "pikchr.y" | |
| 2518 | 2521 | {yylhsminor.yy49 = pik_place_of_elem(p,yymsp[0].minor.yy24,&yymsp[-2].minor.yy0);} |
| 2519 | -#line 2544 "pikchr.c" | |
| 2522 | +#line 2547 "pikchr.c" | |
| 2520 | 2523 | yymsp[-2].minor.yy49 = yylhsminor.yy49; |
| 2521 | 2524 | break; |
| 2522 | 2525 | case 72: /* place ::= NTH VERTEX OF object */ |
| 2523 | -#line 603 "pikchr.y" | |
| 2526 | +#line 606 "pikchr.y" | |
| 2524 | 2527 | {yylhsminor.yy49 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy24);} |
| 2525 | -#line 2550 "pikchr.c" | |
| 2528 | +#line 2553 "pikchr.c" | |
| 2526 | 2529 | yymsp[-3].minor.yy49 = yylhsminor.yy49; |
| 2527 | 2530 | break; |
| 2528 | 2531 | case 73: /* object ::= nth */ |
| 2529 | -#line 606 "pikchr.y" | |
| 2532 | +#line 609 "pikchr.y" | |
| 2530 | 2533 | {yylhsminor.yy24 = pik_find_nth(p,0,&yymsp[0].minor.yy0);} |
| 2531 | -#line 2556 "pikchr.c" | |
| 2534 | +#line 2559 "pikchr.c" | |
| 2532 | 2535 | yymsp[0].minor.yy24 = yylhsminor.yy24; |
| 2533 | 2536 | break; |
| 2534 | 2537 | case 74: /* object ::= nth OF|IN object */ |
| 2535 | -#line 607 "pikchr.y" | |
| 2538 | +#line 610 "pikchr.y" | |
| 2536 | 2539 | {yylhsminor.yy24 = pik_find_nth(p,yymsp[0].minor.yy24,&yymsp[-2].minor.yy0);} |
| 2537 | -#line 2562 "pikchr.c" | |
| 2540 | +#line 2565 "pikchr.c" | |
| 2538 | 2541 | yymsp[-2].minor.yy24 = yylhsminor.yy24; |
| 2539 | 2542 | break; |
| 2540 | 2543 | case 75: /* objectname ::= PLACENAME */ |
| 2541 | -#line 609 "pikchr.y" | |
| 2544 | +#line 612 "pikchr.y" | |
| 2542 | 2545 | {yylhsminor.yy24 = pik_find_byname(p,0,&yymsp[0].minor.yy0);} |
| 2543 | -#line 2568 "pikchr.c" | |
| 2546 | +#line 2571 "pikchr.c" | |
| 2544 | 2547 | yymsp[0].minor.yy24 = yylhsminor.yy24; |
| 2545 | 2548 | break; |
| 2546 | 2549 | case 76: /* objectname ::= objectname DOT_U PLACENAME */ |
| 2547 | -#line 611 "pikchr.y" | |
| 2550 | +#line 614 "pikchr.y" | |
| 2548 | 2551 | {yylhsminor.yy24 = pik_find_byname(p,yymsp[-2].minor.yy24,&yymsp[0].minor.yy0);} |
| 2549 | -#line 2574 "pikchr.c" | |
| 2552 | +#line 2577 "pikchr.c" | |
| 2550 | 2553 | yymsp[-2].minor.yy24 = yylhsminor.yy24; |
| 2551 | 2554 | break; |
| 2552 | 2555 | case 77: /* nth ::= NTH CLASSNAME */ |
| 2553 | -#line 613 "pikchr.y" | |
| 2556 | +#line 616 "pikchr.y" | |
| 2554 | 2557 | {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-1].minor.yy0); } |
| 2555 | -#line 2580 "pikchr.c" | |
| 2558 | +#line 2583 "pikchr.c" | |
| 2556 | 2559 | yymsp[-1].minor.yy0 = yylhsminor.yy0; |
| 2557 | 2560 | break; |
| 2558 | 2561 | case 78: /* nth ::= NTH LAST CLASSNAME */ |
| 2559 | -#line 614 "pikchr.y" | |
| 2562 | +#line 617 "pikchr.y" | |
| 2560 | 2563 | {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-2].minor.yy0); } |
| 2561 | -#line 2586 "pikchr.c" | |
| 2564 | +#line 2589 "pikchr.c" | |
| 2562 | 2565 | yymsp[-2].minor.yy0 = yylhsminor.yy0; |
| 2563 | 2566 | break; |
| 2564 | 2567 | case 79: /* nth ::= LAST CLASSNAME */ |
| 2565 | -#line 615 "pikchr.y" | |
| 2568 | +#line 618 "pikchr.y" | |
| 2566 | 2569 | {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.eCode = -1;} |
| 2567 | -#line 2592 "pikchr.c" | |
| 2570 | +#line 2595 "pikchr.c" | |
| 2568 | 2571 | break; |
| 2569 | 2572 | case 80: /* nth ::= LAST */ |
| 2570 | -#line 616 "pikchr.y" | |
| 2573 | +#line 619 "pikchr.y" | |
| 2571 | 2574 | {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -1;} |
| 2572 | -#line 2597 "pikchr.c" | |
| 2575 | +#line 2600 "pikchr.c" | |
| 2573 | 2576 | yymsp[0].minor.yy0 = yylhsminor.yy0; |
| 2574 | 2577 | break; |
| 2575 | 2578 | case 81: /* nth ::= NTH LB RB */ |
| 2576 | -#line 617 "pikchr.y" | |
| 2579 | +#line 620 "pikchr.y" | |
| 2577 | 2580 | {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-2].minor.yy0);} |
| 2578 | -#line 2603 "pikchr.c" | |
| 2581 | +#line 2606 "pikchr.c" | |
| 2579 | 2582 | yymsp[-2].minor.yy0 = yylhsminor.yy0; |
| 2580 | 2583 | break; |
| 2581 | 2584 | case 82: /* nth ::= NTH LAST LB RB */ |
| 2582 | -#line 618 "pikchr.y" | |
| 2585 | +#line 621 "pikchr.y" | |
| 2583 | 2586 | {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-3].minor.yy0);} |
| 2584 | -#line 2609 "pikchr.c" | |
| 2587 | +#line 2612 "pikchr.c" | |
| 2585 | 2588 | yymsp[-3].minor.yy0 = yylhsminor.yy0; |
| 2586 | 2589 | break; |
| 2587 | 2590 | case 83: /* nth ::= LAST LB RB */ |
| 2588 | -#line 619 "pikchr.y" | |
| 2591 | +#line 622 "pikchr.y" | |
| 2589 | 2592 | {yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; } |
| 2590 | -#line 2615 "pikchr.c" | |
| 2593 | +#line 2618 "pikchr.c" | |
| 2591 | 2594 | break; |
| 2592 | 2595 | case 84: /* expr ::= expr PLUS expr */ |
| 2593 | -#line 626 "pikchr.y" | |
| 2596 | +#line 629 "pikchr.y" | |
| 2594 | 2597 | {yylhsminor.yy83=yymsp[-2].minor.yy83+yymsp[0].minor.yy83;} |
| 2595 | -#line 2620 "pikchr.c" | |
| 2598 | +#line 2623 "pikchr.c" | |
| 2596 | 2599 | yymsp[-2].minor.yy83 = yylhsminor.yy83; |
| 2597 | 2600 | break; |
| 2598 | 2601 | case 85: /* expr ::= expr MINUS expr */ |
| 2599 | -#line 627 "pikchr.y" | |
| 2602 | +#line 630 "pikchr.y" | |
| 2600 | 2603 | {yylhsminor.yy83=yymsp[-2].minor.yy83-yymsp[0].minor.yy83;} |
| 2601 | -#line 2626 "pikchr.c" | |
| 2604 | +#line 2629 "pikchr.c" | |
| 2602 | 2605 | yymsp[-2].minor.yy83 = yylhsminor.yy83; |
| 2603 | 2606 | break; |
| 2604 | 2607 | case 86: /* expr ::= expr STAR expr */ |
| 2605 | -#line 628 "pikchr.y" | |
| 2608 | +#line 631 "pikchr.y" | |
| 2606 | 2609 | {yylhsminor.yy83=yymsp[-2].minor.yy83*yymsp[0].minor.yy83;} |
| 2607 | -#line 2632 "pikchr.c" | |
| 2610 | +#line 2635 "pikchr.c" | |
| 2608 | 2611 | yymsp[-2].minor.yy83 = yylhsminor.yy83; |
| 2609 | 2612 | break; |
| 2610 | 2613 | case 87: /* expr ::= expr SLASH expr */ |
| 2611 | -#line 629 "pikchr.y" | |
| 2614 | +#line 632 "pikchr.y" | |
| 2612 | 2615 | { |
| 2613 | 2616 | if( yymsp[0].minor.yy83==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy83 = 0.0; } |
| 2614 | 2617 | else{ yylhsminor.yy83 = yymsp[-2].minor.yy83/yymsp[0].minor.yy83; } |
| 2615 | 2618 | } |
| 2616 | -#line 2641 "pikchr.c" | |
| 2619 | +#line 2644 "pikchr.c" | |
| 2617 | 2620 | yymsp[-2].minor.yy83 = yylhsminor.yy83; |
| 2618 | 2621 | break; |
| 2619 | 2622 | case 88: /* expr ::= MINUS expr */ |
| 2620 | -#line 633 "pikchr.y" | |
| 2623 | +#line 636 "pikchr.y" | |
| 2621 | 2624 | {yymsp[-1].minor.yy83=-yymsp[0].minor.yy83;} |
| 2622 | -#line 2647 "pikchr.c" | |
| 2625 | +#line 2650 "pikchr.c" | |
| 2623 | 2626 | break; |
| 2624 | 2627 | case 89: /* expr ::= PLUS expr */ |
| 2625 | -#line 634 "pikchr.y" | |
| 2628 | +#line 637 "pikchr.y" | |
| 2626 | 2629 | {yymsp[-1].minor.yy83=yymsp[0].minor.yy83;} |
| 2627 | -#line 2652 "pikchr.c" | |
| 2630 | +#line 2655 "pikchr.c" | |
| 2628 | 2631 | break; |
| 2629 | 2632 | case 90: /* expr ::= LP expr RP */ |
| 2630 | -#line 635 "pikchr.y" | |
| 2633 | +#line 638 "pikchr.y" | |
| 2631 | 2634 | {yymsp[-2].minor.yy83=yymsp[-1].minor.yy83;} |
| 2632 | -#line 2657 "pikchr.c" | |
| 2635 | +#line 2660 "pikchr.c" | |
| 2633 | 2636 | break; |
| 2634 | 2637 | case 91: /* expr ::= NUMBER */ |
| 2635 | -#line 636 "pikchr.y" | |
| 2638 | +#line 639 "pikchr.y" | |
| 2636 | 2639 | {yylhsminor.yy83=pik_atof(p,&yymsp[0].minor.yy0);} |
| 2637 | -#line 2662 "pikchr.c" | |
| 2640 | +#line 2665 "pikchr.c" | |
| 2638 | 2641 | yymsp[0].minor.yy83 = yylhsminor.yy83; |
| 2639 | 2642 | break; |
| 2640 | 2643 | case 92: /* expr ::= ID */ |
| 2641 | -#line 637 "pikchr.y" | |
| 2644 | +#line 640 "pikchr.y" | |
| 2642 | 2645 | {yylhsminor.yy83=pik_get_var(p,&yymsp[0].minor.yy0);} |
| 2643 | -#line 2668 "pikchr.c" | |
| 2646 | +#line 2671 "pikchr.c" | |
| 2644 | 2647 | yymsp[0].minor.yy83 = yylhsminor.yy83; |
| 2645 | 2648 | break; |
| 2646 | 2649 | case 93: /* expr ::= FUNC1 LP expr RP */ |
| 2647 | -#line 638 "pikchr.y" | |
| 2650 | +#line 641 "pikchr.y" | |
| 2648 | 2651 | {yylhsminor.yy83 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy83,0.0);} |
| 2649 | -#line 2674 "pikchr.c" | |
| 2652 | +#line 2677 "pikchr.c" | |
| 2650 | 2653 | yymsp[-3].minor.yy83 = yylhsminor.yy83; |
| 2651 | 2654 | break; |
| 2652 | 2655 | case 94: /* expr ::= FUNC2 LP expr COMMA expr RP */ |
| 2653 | -#line 639 "pikchr.y" | |
| 2656 | +#line 642 "pikchr.y" | |
| 2654 | 2657 | {yylhsminor.yy83 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy83,yymsp[-1].minor.yy83);} |
| 2655 | -#line 2680 "pikchr.c" | |
| 2658 | +#line 2683 "pikchr.c" | |
| 2656 | 2659 | yymsp[-5].minor.yy83 = yylhsminor.yy83; |
| 2657 | 2660 | break; |
| 2658 | 2661 | case 95: /* expr ::= object DOT_L locproperty */ |
| 2659 | 2662 | case 96: /* expr ::= object DOT_L numproperty */ yytestcase(yyruleno==96); |
| 2660 | 2663 | case 97: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==97); |
| 2661 | 2664 | case 98: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==98); |
| 2662 | -#line 641 "pikchr.y" | |
| 2665 | +#line 644 "pikchr.y" | |
| 2663 | 2666 | {yylhsminor.yy83=pik_property_of(p,yymsp[-2].minor.yy24,&yymsp[0].minor.yy0);} |
| 2664 | -#line 2689 "pikchr.c" | |
| 2667 | +#line 2692 "pikchr.c" | |
| 2665 | 2668 | yymsp[-2].minor.yy83 = yylhsminor.yy83; |
| 2666 | 2669 | break; |
| 2667 | 2670 | case 99: /* expr ::= object DOT_E edge DOT_L X */ |
| 2668 | -#line 645 "pikchr.y" | |
| 2671 | +#line 648 "pikchr.y" | |
| 2669 | 2672 | {yylhsminor.yy83=pik_place_of_elem(p,yymsp[-4].minor.yy24,&yymsp[-2].minor.yy0).x;} |
| 2670 | -#line 2695 "pikchr.c" | |
| 2673 | +#line 2698 "pikchr.c" | |
| 2671 | 2674 | yymsp[-4].minor.yy83 = yylhsminor.yy83; |
| 2672 | 2675 | break; |
| 2673 | 2676 | case 100: /* expr ::= object DOT_E edge DOT_L Y */ |
| 2674 | -#line 646 "pikchr.y" | |
| 2677 | +#line 649 "pikchr.y" | |
| 2675 | 2678 | {yylhsminor.yy83=pik_place_of_elem(p,yymsp[-4].minor.yy24,&yymsp[-2].minor.yy0).y;} |
| 2676 | -#line 2701 "pikchr.c" | |
| 2679 | +#line 2704 "pikchr.c" | |
| 2677 | 2680 | yymsp[-4].minor.yy83 = yylhsminor.yy83; |
| 2678 | 2681 | break; |
| 2679 | 2682 | case 101: /* expr ::= LP locproperty OF object RP */ |
| 2680 | 2683 | case 102: /* expr ::= LP dashproperty OF object RP */ yytestcase(yyruleno==102); |
| 2681 | 2684 | case 103: /* expr ::= LP numproperty OF object RP */ yytestcase(yyruleno==103); |
| 2682 | 2685 | case 104: /* expr ::= LP colorproperty OF object RP */ yytestcase(yyruleno==104); |
| 2683 | -#line 647 "pikchr.y" | |
| 2686 | +#line 650 "pikchr.y" | |
| 2684 | 2687 | {yymsp[-4].minor.yy83=pik_property_of(p,yymsp[-1].minor.yy24,&yymsp[-3].minor.yy0);} |
| 2685 | -#line 2710 "pikchr.c" | |
| 2688 | +#line 2713 "pikchr.c" | |
| 2686 | 2689 | break; |
| 2687 | 2690 | case 105: /* expr ::= NTH VERTEX OF object DOT_L X */ |
| 2688 | -#line 653 "pikchr.y" | |
| 2691 | +#line 656 "pikchr.y" | |
| 2689 | 2692 | {yylhsminor.yy83 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy24).x;} |
| 2690 | -#line 2715 "pikchr.c" | |
| 2693 | +#line 2718 "pikchr.c" | |
| 2691 | 2694 | yymsp[-5].minor.yy83 = yylhsminor.yy83; |
| 2692 | 2695 | break; |
| 2693 | 2696 | case 106: /* expr ::= NTH VERTEX OF object DOT_L Y */ |
| 2694 | -#line 655 "pikchr.y" | |
| 2697 | +#line 658 "pikchr.y" | |
| 2695 | 2698 | {yylhsminor.yy83 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy24).y;} |
| 2696 | -#line 2721 "pikchr.c" | |
| 2699 | +#line 2724 "pikchr.c" | |
| 2697 | 2700 | yymsp[-5].minor.yy83 = yylhsminor.yy83; |
| 2698 | 2701 | break; |
| 2699 | 2702 | default: |
| 2700 | 2703 | /* (107) lvalue ::= ID */ yytestcase(yyruleno==107); |
| 2701 | 2704 | /* (108) lvalue ::= FILL */ yytestcase(yyruleno==108); |
| @@ -2789,18 +2792,18 @@ | ||
| 2789 | 2792 | ){ |
| 2790 | 2793 | pik_parserARG_FETCH |
| 2791 | 2794 | pik_parserCTX_FETCH |
| 2792 | 2795 | #define TOKEN yyminor |
| 2793 | 2796 | /************ Begin %syntax_error code ****************************************/ |
| 2794 | -#line 443 "pikchr.y" | |
| 2797 | +#line 446 "pikchr.y" | |
| 2795 | 2798 | |
| 2796 | 2799 | if( TOKEN.z && TOKEN.z[0] ){ |
| 2797 | 2800 | pik_error(p, &TOKEN, "syntax error"); |
| 2798 | 2801 | }else{ |
| 2799 | 2802 | pik_error(p, 0, "syntax error"); |
| 2800 | 2803 | } |
| 2801 | -#line 2826 "pikchr.c" | |
| 2804 | +#line 2829 "pikchr.c" | |
| 2802 | 2805 | /************ End %syntax_error code ******************************************/ |
| 2803 | 2806 | pik_parserARG_STORE /* Suppress warning about unused %extra_argument variable */ |
| 2804 | 2807 | pik_parserCTX_STORE |
| 2805 | 2808 | } |
| 2806 | 2809 | |
| @@ -3029,11 +3032,11 @@ | ||
| 3029 | 3032 | #else |
| 3030 | 3033 | (void)iToken; |
| 3031 | 3034 | return 0; |
| 3032 | 3035 | #endif |
| 3033 | 3036 | } |
| 3034 | -#line 665 "pikchr.y" | |
| 3037 | +#line 668 "pikchr.y" | |
| 3035 | 3038 | |
| 3036 | 3039 | |
| 3037 | 3040 | |
| 3038 | 3041 | /* Chart of the 140 official HTML color names with their |
| 3039 | 3042 | ** corresponding RGB value. |
| @@ -6327,6 +6330,6 @@ | ||
| 6327 | 6330 | printf("</body></html>\n"); |
| 6328 | 6331 | return 0; |
| 6329 | 6332 | } |
| 6330 | 6333 | #endif /* PIKCHR_SHELL */ |
| 6331 | 6334 | |
| 6332 | -#line 6357 "pikchr.c" | |
| 6335 | +#line 6360 "pikchr.c" | |
| 6333 | 6336 |
| --- src/pikchr.c | |
| +++ src/pikchr.c | |
| @@ -121,10 +121,13 @@ | |
| 121 | #include <string.h> |
| 122 | #include <ctype.h> |
| 123 | #include <math.h> |
| 124 | #include <assert.h> |
| 125 | #define count(X) (sizeof(X)/sizeof(X[0])) |
| 126 | |
| 127 | typedef struct Pik Pik; /* Complete parsing context */ |
| 128 | typedef struct PToken PToken; /* A single token */ |
| 129 | typedef struct PElem PElem; /* A single diagram object or "element" */ |
| 130 | typedef struct PEList PEList; /* A list of elements */ |
| @@ -405,11 +408,11 @@ | |
| 405 | static void pik_same(Pik *p, PElem*, PToken*); |
| 406 | static PPoint pik_nth_vertex(Pik *p, PToken *pNth, PToken *pErr, PElem *pElem); |
| 407 | static PToken pik_next_semantic_token(Pik *p, PToken *pThis); |
| 408 | |
| 409 | |
| 410 | #line 436 "pikchr.c" |
| 411 | /**************** End of %include directives **********************************/ |
| 412 | /* These constants specify the various numeric values for terminal symbols. |
| 413 | ***************** Begin token definitions *************************************/ |
| 414 | #ifndef T_ID |
| 415 | #define T_ID 1 |
| @@ -1470,22 +1473,22 @@ | |
| 1470 | ** inside the C code. |
| 1471 | */ |
| 1472 | /********* Begin destructor definitions ***************************************/ |
| 1473 | case 82: /* element_list */ |
| 1474 | { |
| 1475 | #line 419 "pikchr.y" |
| 1476 | pik_elist_free(p,(yypminor->yy42)); |
| 1477 | #line 1502 "pikchr.c" |
| 1478 | } |
| 1479 | break; |
| 1480 | case 83: /* element */ |
| 1481 | case 84: /* unnamed_element */ |
| 1482 | case 85: /* basetype */ |
| 1483 | { |
| 1484 | #line 421 "pikchr.y" |
| 1485 | pik_elem_free(p,(yypminor->yy24)); |
| 1486 | #line 1511 "pikchr.c" |
| 1487 | } |
| 1488 | break; |
| 1489 | /********* End destructor definitions *****************************************/ |
| 1490 | default: break; /* If no destructor action specified: do nothing */ |
| 1491 | } |
| @@ -1699,14 +1702,14 @@ | |
| 1699 | #endif |
| 1700 | while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser); |
| 1701 | /* Here code is inserted which will execute if the parser |
| 1702 | ** stack every overflows */ |
| 1703 | /******** Begin %stack_overflow code ******************************************/ |
| 1704 | #line 450 "pikchr.y" |
| 1705 | |
| 1706 | pik_error(p, 0, "parser stack overflow"); |
| 1707 | #line 1732 "pikchr.c" |
| 1708 | /******** End %stack_overflow code ********************************************/ |
| 1709 | pik_parserARG_STORE /* Suppress warning about unused %extra_argument var */ |
| 1710 | pik_parserCTX_STORE |
| 1711 | } |
| 1712 | |
| @@ -2153,549 +2156,549 @@ | |
| 2153 | ** break; |
| 2154 | */ |
| 2155 | /********** Begin reduce actions **********************************************/ |
| 2156 | YYMINORTYPE yylhsminor; |
| 2157 | case 0: /* document ::= element_list */ |
| 2158 | #line 454 "pikchr.y" |
| 2159 | {pik_render(p,yymsp[0].minor.yy42);} |
| 2160 | #line 2185 "pikchr.c" |
| 2161 | break; |
| 2162 | case 1: /* element_list ::= element */ |
| 2163 | #line 457 "pikchr.y" |
| 2164 | { yylhsminor.yy42 = pik_elist_append(p,0,yymsp[0].minor.yy24); } |
| 2165 | #line 2190 "pikchr.c" |
| 2166 | yymsp[0].minor.yy42 = yylhsminor.yy42; |
| 2167 | break; |
| 2168 | case 2: /* element_list ::= element_list EOL element */ |
| 2169 | #line 459 "pikchr.y" |
| 2170 | { yylhsminor.yy42 = pik_elist_append(p,yymsp[-2].minor.yy42,yymsp[0].minor.yy24); } |
| 2171 | #line 2196 "pikchr.c" |
| 2172 | yymsp[-2].minor.yy42 = yylhsminor.yy42; |
| 2173 | break; |
| 2174 | case 3: /* element ::= */ |
| 2175 | #line 462 "pikchr.y" |
| 2176 | { yymsp[1].minor.yy24 = 0; } |
| 2177 | #line 2202 "pikchr.c" |
| 2178 | break; |
| 2179 | case 4: /* element ::= direction */ |
| 2180 | #line 463 "pikchr.y" |
| 2181 | { pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy24=0; } |
| 2182 | #line 2207 "pikchr.c" |
| 2183 | yymsp[0].minor.yy24 = yylhsminor.yy24; |
| 2184 | break; |
| 2185 | case 5: /* element ::= lvalue ASSIGN rvalue */ |
| 2186 | #line 464 "pikchr.y" |
| 2187 | {pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy83,&yymsp[-1].minor.yy0); yylhsminor.yy24=0;} |
| 2188 | #line 2213 "pikchr.c" |
| 2189 | yymsp[-2].minor.yy24 = yylhsminor.yy24; |
| 2190 | break; |
| 2191 | case 6: /* element ::= PLACENAME COLON unnamed_element */ |
| 2192 | #line 466 "pikchr.y" |
| 2193 | { yylhsminor.yy24 = yymsp[0].minor.yy24; pik_elem_setname(p,yymsp[0].minor.yy24,&yymsp[-2].minor.yy0); } |
| 2194 | #line 2219 "pikchr.c" |
| 2195 | yymsp[-2].minor.yy24 = yylhsminor.yy24; |
| 2196 | break; |
| 2197 | case 7: /* element ::= PLACENAME COLON position */ |
| 2198 | #line 468 "pikchr.y" |
| 2199 | { yylhsminor.yy24 = pik_elem_new(p,0,0,0); |
| 2200 | if(yylhsminor.yy24){ yylhsminor.yy24->ptAt = yymsp[0].minor.yy49; pik_elem_setname(p,yylhsminor.yy24,&yymsp[-2].minor.yy0); }} |
| 2201 | #line 2226 "pikchr.c" |
| 2202 | yymsp[-2].minor.yy24 = yylhsminor.yy24; |
| 2203 | break; |
| 2204 | case 8: /* element ::= unnamed_element */ |
| 2205 | #line 470 "pikchr.y" |
| 2206 | {yylhsminor.yy24 = yymsp[0].minor.yy24;} |
| 2207 | #line 2232 "pikchr.c" |
| 2208 | yymsp[0].minor.yy24 = yylhsminor.yy24; |
| 2209 | break; |
| 2210 | case 9: /* element ::= print prlist */ |
| 2211 | #line 471 "pikchr.y" |
| 2212 | {pik_append(p,"<br>\n",5); yymsp[-1].minor.yy24=0;} |
| 2213 | #line 2238 "pikchr.c" |
| 2214 | break; |
| 2215 | case 10: /* rvalue ::= PLACENAME */ |
| 2216 | #line 481 "pikchr.y" |
| 2217 | {yylhsminor.yy83 = pik_lookup_color(p,&yymsp[0].minor.yy0);} |
| 2218 | #line 2243 "pikchr.c" |
| 2219 | yymsp[0].minor.yy83 = yylhsminor.yy83; |
| 2220 | break; |
| 2221 | case 11: /* pritem ::= rvalue */ |
| 2222 | #line 486 "pikchr.y" |
| 2223 | {pik_append_num(p,"",yymsp[0].minor.yy83);} |
| 2224 | #line 2249 "pikchr.c" |
| 2225 | break; |
| 2226 | case 12: /* pritem ::= STRING */ |
| 2227 | #line 487 "pikchr.y" |
| 2228 | {pik_append_text(p,yymsp[0].minor.yy0.z+1,yymsp[0].minor.yy0.n-2,0);} |
| 2229 | #line 2254 "pikchr.c" |
| 2230 | break; |
| 2231 | case 13: /* prsep ::= COMMA */ |
| 2232 | #line 488 "pikchr.y" |
| 2233 | {pik_append(p, " ", 1);} |
| 2234 | #line 2259 "pikchr.c" |
| 2235 | break; |
| 2236 | case 14: /* unnamed_element ::= basetype attribute_list */ |
| 2237 | #line 491 "pikchr.y" |
| 2238 | {yylhsminor.yy24 = yymsp[-1].minor.yy24; pik_after_adding_attributes(p,yylhsminor.yy24);} |
| 2239 | #line 2264 "pikchr.c" |
| 2240 | yymsp[-1].minor.yy24 = yylhsminor.yy24; |
| 2241 | break; |
| 2242 | case 15: /* basetype ::= CLASSNAME */ |
| 2243 | #line 493 "pikchr.y" |
| 2244 | {yylhsminor.yy24 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); } |
| 2245 | #line 2270 "pikchr.c" |
| 2246 | yymsp[0].minor.yy24 = yylhsminor.yy24; |
| 2247 | break; |
| 2248 | case 16: /* basetype ::= STRING textposition */ |
| 2249 | #line 495 "pikchr.y" |
| 2250 | {yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy52; yylhsminor.yy24 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); } |
| 2251 | #line 2276 "pikchr.c" |
| 2252 | yymsp[-1].minor.yy24 = yylhsminor.yy24; |
| 2253 | break; |
| 2254 | case 17: /* basetype ::= LB savelist element_list RB */ |
| 2255 | #line 497 "pikchr.y" |
| 2256 | { p->list = yymsp[-2].minor.yy42; yymsp[-3].minor.yy24 = pik_elem_new(p,0,0,yymsp[-1].minor.yy42); if(yymsp[-3].minor.yy24) yymsp[-3].minor.yy24->errTok = yymsp[0].minor.yy0; } |
| 2257 | #line 2282 "pikchr.c" |
| 2258 | break; |
| 2259 | case 18: /* savelist ::= */ |
| 2260 | #line 502 "pikchr.y" |
| 2261 | {yymsp[1].minor.yy42 = p->list; p->list = 0;} |
| 2262 | #line 2287 "pikchr.c" |
| 2263 | break; |
| 2264 | case 19: /* attribute_list ::= expr */ |
| 2265 | #line 509 "pikchr.y" |
| 2266 | { pik_add_direction(p,0,&yymsp[0].minor.yy83,0);} |
| 2267 | #line 2292 "pikchr.c" |
| 2268 | break; |
| 2269 | case 20: /* attribute_list ::= expr PERCENT */ |
| 2270 | #line 510 "pikchr.y" |
| 2271 | { pik_add_direction(p,0,&yymsp[-1].minor.yy83,1);} |
| 2272 | #line 2297 "pikchr.c" |
| 2273 | break; |
| 2274 | case 21: /* attribute ::= numproperty expr PERCENT */ |
| 2275 | #line 515 "pikchr.y" |
| 2276 | { pik_set_numprop(p,&yymsp[-2].minor.yy0,0.0,yymsp[-1].minor.yy83/100.0); } |
| 2277 | #line 2302 "pikchr.c" |
| 2278 | break; |
| 2279 | case 22: /* attribute ::= numproperty expr */ |
| 2280 | case 25: /* attribute ::= colorproperty rvalue */ yytestcase(yyruleno==25); |
| 2281 | #line 516 "pikchr.y" |
| 2282 | { pik_set_numprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy83,0.0); } |
| 2283 | #line 2308 "pikchr.c" |
| 2284 | break; |
| 2285 | case 23: /* attribute ::= dashproperty expr */ |
| 2286 | #line 517 "pikchr.y" |
| 2287 | { pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy83); } |
| 2288 | #line 2313 "pikchr.c" |
| 2289 | break; |
| 2290 | case 24: /* attribute ::= dashproperty */ |
| 2291 | #line 518 "pikchr.y" |
| 2292 | { pik_set_dashed(p,&yymsp[0].minor.yy0,0); } |
| 2293 | #line 2318 "pikchr.c" |
| 2294 | break; |
| 2295 | case 26: /* attribute ::= direction expr PERCENT */ |
| 2296 | #line 521 "pikchr.y" |
| 2297 | { pik_add_direction(p,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy83,1);} |
| 2298 | #line 2323 "pikchr.c" |
| 2299 | break; |
| 2300 | case 27: /* attribute ::= direction expr */ |
| 2301 | #line 522 "pikchr.y" |
| 2302 | { pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy83,0);} |
| 2303 | #line 2328 "pikchr.c" |
| 2304 | break; |
| 2305 | case 28: /* attribute ::= direction */ |
| 2306 | #line 523 "pikchr.y" |
| 2307 | { pik_add_direction(p,&yymsp[0].minor.yy0,0,0); } |
| 2308 | #line 2333 "pikchr.c" |
| 2309 | break; |
| 2310 | case 29: /* attribute ::= direction even position */ |
| 2311 | #line 524 "pikchr.y" |
| 2312 | {pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy49);} |
| 2313 | #line 2338 "pikchr.c" |
| 2314 | break; |
| 2315 | case 30: /* attribute ::= CLOSE */ |
| 2316 | #line 525 "pikchr.y" |
| 2317 | { pik_close_path(p,&yymsp[0].minor.yy0); } |
| 2318 | #line 2343 "pikchr.c" |
| 2319 | break; |
| 2320 | case 31: /* attribute ::= CHOP */ |
| 2321 | #line 526 "pikchr.y" |
| 2322 | { p->cur->bChop = 1; } |
| 2323 | #line 2348 "pikchr.c" |
| 2324 | break; |
| 2325 | case 32: /* attribute ::= FROM position */ |
| 2326 | #line 527 "pikchr.y" |
| 2327 | { pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy49); } |
| 2328 | #line 2353 "pikchr.c" |
| 2329 | break; |
| 2330 | case 33: /* attribute ::= TO position */ |
| 2331 | #line 528 "pikchr.y" |
| 2332 | { pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy49); } |
| 2333 | #line 2358 "pikchr.c" |
| 2334 | break; |
| 2335 | case 34: /* attribute ::= THEN */ |
| 2336 | #line 529 "pikchr.y" |
| 2337 | { pik_then(p, &yymsp[0].minor.yy0, p->cur); } |
| 2338 | #line 2363 "pikchr.c" |
| 2339 | break; |
| 2340 | case 35: /* attribute ::= AT position */ |
| 2341 | #line 531 "pikchr.y" |
| 2342 | { pik_set_at(p,0,&yymsp[0].minor.yy49,&yymsp[-1].minor.yy0); } |
| 2343 | #line 2368 "pikchr.c" |
| 2344 | break; |
| 2345 | case 36: /* attribute ::= SAME */ |
| 2346 | #line 533 "pikchr.y" |
| 2347 | {pik_same(p,0,&yymsp[0].minor.yy0);} |
| 2348 | #line 2373 "pikchr.c" |
| 2349 | break; |
| 2350 | case 37: /* attribute ::= SAME AS object */ |
| 2351 | #line 534 "pikchr.y" |
| 2352 | {pik_same(p,yymsp[0].minor.yy24,&yymsp[-2].minor.yy0);} |
| 2353 | #line 2378 "pikchr.c" |
| 2354 | break; |
| 2355 | case 38: /* attribute ::= STRING textposition */ |
| 2356 | #line 535 "pikchr.y" |
| 2357 | {pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy52);} |
| 2358 | #line 2383 "pikchr.c" |
| 2359 | break; |
| 2360 | case 39: /* attribute ::= FIT */ |
| 2361 | #line 536 "pikchr.y" |
| 2362 | {pik_size_to_fit(p,&yymsp[0].minor.yy0); } |
| 2363 | #line 2388 "pikchr.c" |
| 2364 | break; |
| 2365 | case 40: /* with ::= DOT_E edge AT position */ |
| 2366 | case 41: /* with ::= edge AT position */ yytestcase(yyruleno==41); |
| 2367 | #line 543 "pikchr.y" |
| 2368 | { pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy49,&yymsp[-1].minor.yy0); } |
| 2369 | #line 2394 "pikchr.c" |
| 2370 | break; |
| 2371 | case 42: /* numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */ |
| 2372 | #line 547 "pikchr.y" |
| 2373 | {yylhsminor.yy0 = yymsp[0].minor.yy0;} |
| 2374 | #line 2399 "pikchr.c" |
| 2375 | yymsp[0].minor.yy0 = yylhsminor.yy0; |
| 2376 | break; |
| 2377 | case 43: /* boolproperty ::= CW */ |
| 2378 | #line 558 "pikchr.y" |
| 2379 | {p->cur->cw = 1;} |
| 2380 | #line 2405 "pikchr.c" |
| 2381 | break; |
| 2382 | case 44: /* boolproperty ::= CCW */ |
| 2383 | #line 559 "pikchr.y" |
| 2384 | {p->cur->cw = 0;} |
| 2385 | #line 2410 "pikchr.c" |
| 2386 | break; |
| 2387 | case 45: /* boolproperty ::= LARROW */ |
| 2388 | #line 560 "pikchr.y" |
| 2389 | {p->cur->larrow=1; p->cur->rarrow=0; } |
| 2390 | #line 2415 "pikchr.c" |
| 2391 | break; |
| 2392 | case 46: /* boolproperty ::= RARROW */ |
| 2393 | #line 561 "pikchr.y" |
| 2394 | {p->cur->larrow=0; p->cur->rarrow=1; } |
| 2395 | #line 2420 "pikchr.c" |
| 2396 | break; |
| 2397 | case 47: /* boolproperty ::= LRARROW */ |
| 2398 | #line 562 "pikchr.y" |
| 2399 | {p->cur->larrow=1; p->cur->rarrow=1; } |
| 2400 | #line 2425 "pikchr.c" |
| 2401 | break; |
| 2402 | case 48: /* boolproperty ::= INVIS */ |
| 2403 | #line 563 "pikchr.y" |
| 2404 | {p->cur->sw = 0.0;} |
| 2405 | #line 2430 "pikchr.c" |
| 2406 | break; |
| 2407 | case 49: /* textposition ::= */ |
| 2408 | #line 565 "pikchr.y" |
| 2409 | {yymsp[1].minor.yy52 = 0;} |
| 2410 | #line 2435 "pikchr.c" |
| 2411 | break; |
| 2412 | case 50: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED */ |
| 2413 | #line 568 "pikchr.y" |
| 2414 | {yylhsminor.yy52 = pik_text_position(p,yymsp[-1].minor.yy52,&yymsp[0].minor.yy0);} |
| 2415 | #line 2440 "pikchr.c" |
| 2416 | yymsp[-1].minor.yy52 = yylhsminor.yy52; |
| 2417 | break; |
| 2418 | case 51: /* position ::= expr COMMA expr */ |
| 2419 | #line 571 "pikchr.y" |
| 2420 | {yylhsminor.yy49.x=yymsp[-2].minor.yy83; yylhsminor.yy49.y=yymsp[0].minor.yy83;} |
| 2421 | #line 2446 "pikchr.c" |
| 2422 | yymsp[-2].minor.yy49 = yylhsminor.yy49; |
| 2423 | break; |
| 2424 | case 52: /* position ::= place PLUS expr COMMA expr */ |
| 2425 | #line 573 "pikchr.y" |
| 2426 | {yylhsminor.yy49.x=yymsp[-4].minor.yy49.x+yymsp[-2].minor.yy83; yylhsminor.yy49.y=yymsp[-4].minor.yy49.y+yymsp[0].minor.yy83;} |
| 2427 | #line 2452 "pikchr.c" |
| 2428 | yymsp[-4].minor.yy49 = yylhsminor.yy49; |
| 2429 | break; |
| 2430 | case 53: /* position ::= place MINUS expr COMMA expr */ |
| 2431 | #line 574 "pikchr.y" |
| 2432 | {yylhsminor.yy49.x=yymsp[-4].minor.yy49.x-yymsp[-2].minor.yy83; yylhsminor.yy49.y=yymsp[-4].minor.yy49.y-yymsp[0].minor.yy83;} |
| 2433 | #line 2458 "pikchr.c" |
| 2434 | yymsp[-4].minor.yy49 = yylhsminor.yy49; |
| 2435 | break; |
| 2436 | case 54: /* position ::= place PLUS LP expr COMMA expr RP */ |
| 2437 | #line 576 "pikchr.y" |
| 2438 | {yylhsminor.yy49.x=yymsp[-6].minor.yy49.x+yymsp[-3].minor.yy83; yylhsminor.yy49.y=yymsp[-6].minor.yy49.y+yymsp[-1].minor.yy83;} |
| 2439 | #line 2464 "pikchr.c" |
| 2440 | yymsp[-6].minor.yy49 = yylhsminor.yy49; |
| 2441 | break; |
| 2442 | case 55: /* position ::= place MINUS LP expr COMMA expr RP */ |
| 2443 | #line 578 "pikchr.y" |
| 2444 | {yylhsminor.yy49.x=yymsp[-6].minor.yy49.x-yymsp[-3].minor.yy83; yylhsminor.yy49.y=yymsp[-6].minor.yy49.y-yymsp[-1].minor.yy83;} |
| 2445 | #line 2470 "pikchr.c" |
| 2446 | yymsp[-6].minor.yy49 = yylhsminor.yy49; |
| 2447 | break; |
| 2448 | case 56: /* position ::= LP position COMMA position RP */ |
| 2449 | #line 579 "pikchr.y" |
| 2450 | {yymsp[-4].minor.yy49.x=yymsp[-3].minor.yy49.x; yymsp[-4].minor.yy49.y=yymsp[-1].minor.yy49.y;} |
| 2451 | #line 2476 "pikchr.c" |
| 2452 | break; |
| 2453 | case 57: /* position ::= LP position RP */ |
| 2454 | #line 580 "pikchr.y" |
| 2455 | {yymsp[-2].minor.yy49=yymsp[-1].minor.yy49;} |
| 2456 | #line 2481 "pikchr.c" |
| 2457 | break; |
| 2458 | case 58: /* position ::= expr between position AND position */ |
| 2459 | #line 582 "pikchr.y" |
| 2460 | {yylhsminor.yy49 = pik_position_between(p,yymsp[-4].minor.yy83,yymsp[-2].minor.yy49,yymsp[0].minor.yy49);} |
| 2461 | #line 2486 "pikchr.c" |
| 2462 | yymsp[-4].minor.yy49 = yylhsminor.yy49; |
| 2463 | break; |
| 2464 | case 59: /* position ::= expr ABOVE position */ |
| 2465 | #line 583 "pikchr.y" |
| 2466 | {yylhsminor.yy49=yymsp[0].minor.yy49; yylhsminor.yy49.y += yymsp[-2].minor.yy83;} |
| 2467 | #line 2492 "pikchr.c" |
| 2468 | yymsp[-2].minor.yy49 = yylhsminor.yy49; |
| 2469 | break; |
| 2470 | case 60: /* position ::= expr BELOW position */ |
| 2471 | #line 584 "pikchr.y" |
| 2472 | {yylhsminor.yy49=yymsp[0].minor.yy49; yylhsminor.yy49.y -= yymsp[-2].minor.yy83;} |
| 2473 | #line 2498 "pikchr.c" |
| 2474 | yymsp[-2].minor.yy49 = yylhsminor.yy49; |
| 2475 | break; |
| 2476 | case 61: /* position ::= expr LEFT OF position */ |
| 2477 | #line 585 "pikchr.y" |
| 2478 | {yylhsminor.yy49=yymsp[0].minor.yy49; yylhsminor.yy49.x -= yymsp[-3].minor.yy83;} |
| 2479 | #line 2504 "pikchr.c" |
| 2480 | yymsp[-3].minor.yy49 = yylhsminor.yy49; |
| 2481 | break; |
| 2482 | case 62: /* position ::= expr RIGHT OF position */ |
| 2483 | #line 586 "pikchr.y" |
| 2484 | {yylhsminor.yy49=yymsp[0].minor.yy49; yylhsminor.yy49.x += yymsp[-3].minor.yy83;} |
| 2485 | #line 2510 "pikchr.c" |
| 2486 | yymsp[-3].minor.yy49 = yylhsminor.yy49; |
| 2487 | break; |
| 2488 | case 63: /* position ::= expr EDGEPT OF position */ |
| 2489 | #line 588 "pikchr.y" |
| 2490 | {yylhsminor.yy49 = pik_position_at_hdg(p,yymsp[-3].minor.yy83,&yymsp[-2].minor.yy0,yymsp[0].minor.yy49);} |
| 2491 | #line 2516 "pikchr.c" |
| 2492 | yymsp[-3].minor.yy49 = yylhsminor.yy49; |
| 2493 | break; |
| 2494 | case 64: /* position ::= expr HEADING expr FROM position */ |
| 2495 | #line 590 "pikchr.y" |
| 2496 | {yylhsminor.yy49 = pik_position_at_angle(p,yymsp[-4].minor.yy83,yymsp[-2].minor.yy83,yymsp[0].minor.yy49);} |
| 2497 | #line 2522 "pikchr.c" |
| 2498 | yymsp[-4].minor.yy49 = yylhsminor.yy49; |
| 2499 | break; |
| 2500 | case 65: /* place ::= object */ |
| 2501 | #line 596 "pikchr.y" |
| 2502 | {yylhsminor.yy49 = pik_place_of_elem(p,yymsp[0].minor.yy24,0);} |
| 2503 | #line 2528 "pikchr.c" |
| 2504 | yymsp[0].minor.yy49 = yylhsminor.yy49; |
| 2505 | break; |
| 2506 | case 66: /* place ::= object DOT_E edge */ |
| 2507 | case 67: /* place ::= object DOT_L START */ yytestcase(yyruleno==67); |
| 2508 | case 68: /* place ::= object DOT_L END */ yytestcase(yyruleno==68); |
| 2509 | #line 597 "pikchr.y" |
| 2510 | {yylhsminor.yy49 = pik_place_of_elem(p,yymsp[-2].minor.yy24,&yymsp[0].minor.yy0);} |
| 2511 | #line 2536 "pikchr.c" |
| 2512 | yymsp[-2].minor.yy49 = yylhsminor.yy49; |
| 2513 | break; |
| 2514 | case 69: /* place ::= START OF object */ |
| 2515 | case 70: /* place ::= END OF object */ yytestcase(yyruleno==70); |
| 2516 | case 71: /* place ::= edge OF object */ yytestcase(yyruleno==71); |
| 2517 | #line 600 "pikchr.y" |
| 2518 | {yylhsminor.yy49 = pik_place_of_elem(p,yymsp[0].minor.yy24,&yymsp[-2].minor.yy0);} |
| 2519 | #line 2544 "pikchr.c" |
| 2520 | yymsp[-2].minor.yy49 = yylhsminor.yy49; |
| 2521 | break; |
| 2522 | case 72: /* place ::= NTH VERTEX OF object */ |
| 2523 | #line 603 "pikchr.y" |
| 2524 | {yylhsminor.yy49 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy24);} |
| 2525 | #line 2550 "pikchr.c" |
| 2526 | yymsp[-3].minor.yy49 = yylhsminor.yy49; |
| 2527 | break; |
| 2528 | case 73: /* object ::= nth */ |
| 2529 | #line 606 "pikchr.y" |
| 2530 | {yylhsminor.yy24 = pik_find_nth(p,0,&yymsp[0].minor.yy0);} |
| 2531 | #line 2556 "pikchr.c" |
| 2532 | yymsp[0].minor.yy24 = yylhsminor.yy24; |
| 2533 | break; |
| 2534 | case 74: /* object ::= nth OF|IN object */ |
| 2535 | #line 607 "pikchr.y" |
| 2536 | {yylhsminor.yy24 = pik_find_nth(p,yymsp[0].minor.yy24,&yymsp[-2].minor.yy0);} |
| 2537 | #line 2562 "pikchr.c" |
| 2538 | yymsp[-2].minor.yy24 = yylhsminor.yy24; |
| 2539 | break; |
| 2540 | case 75: /* objectname ::= PLACENAME */ |
| 2541 | #line 609 "pikchr.y" |
| 2542 | {yylhsminor.yy24 = pik_find_byname(p,0,&yymsp[0].minor.yy0);} |
| 2543 | #line 2568 "pikchr.c" |
| 2544 | yymsp[0].minor.yy24 = yylhsminor.yy24; |
| 2545 | break; |
| 2546 | case 76: /* objectname ::= objectname DOT_U PLACENAME */ |
| 2547 | #line 611 "pikchr.y" |
| 2548 | {yylhsminor.yy24 = pik_find_byname(p,yymsp[-2].minor.yy24,&yymsp[0].minor.yy0);} |
| 2549 | #line 2574 "pikchr.c" |
| 2550 | yymsp[-2].minor.yy24 = yylhsminor.yy24; |
| 2551 | break; |
| 2552 | case 77: /* nth ::= NTH CLASSNAME */ |
| 2553 | #line 613 "pikchr.y" |
| 2554 | {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-1].minor.yy0); } |
| 2555 | #line 2580 "pikchr.c" |
| 2556 | yymsp[-1].minor.yy0 = yylhsminor.yy0; |
| 2557 | break; |
| 2558 | case 78: /* nth ::= NTH LAST CLASSNAME */ |
| 2559 | #line 614 "pikchr.y" |
| 2560 | {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-2].minor.yy0); } |
| 2561 | #line 2586 "pikchr.c" |
| 2562 | yymsp[-2].minor.yy0 = yylhsminor.yy0; |
| 2563 | break; |
| 2564 | case 79: /* nth ::= LAST CLASSNAME */ |
| 2565 | #line 615 "pikchr.y" |
| 2566 | {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.eCode = -1;} |
| 2567 | #line 2592 "pikchr.c" |
| 2568 | break; |
| 2569 | case 80: /* nth ::= LAST */ |
| 2570 | #line 616 "pikchr.y" |
| 2571 | {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -1;} |
| 2572 | #line 2597 "pikchr.c" |
| 2573 | yymsp[0].minor.yy0 = yylhsminor.yy0; |
| 2574 | break; |
| 2575 | case 81: /* nth ::= NTH LB RB */ |
| 2576 | #line 617 "pikchr.y" |
| 2577 | {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-2].minor.yy0);} |
| 2578 | #line 2603 "pikchr.c" |
| 2579 | yymsp[-2].minor.yy0 = yylhsminor.yy0; |
| 2580 | break; |
| 2581 | case 82: /* nth ::= NTH LAST LB RB */ |
| 2582 | #line 618 "pikchr.y" |
| 2583 | {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-3].minor.yy0);} |
| 2584 | #line 2609 "pikchr.c" |
| 2585 | yymsp[-3].minor.yy0 = yylhsminor.yy0; |
| 2586 | break; |
| 2587 | case 83: /* nth ::= LAST LB RB */ |
| 2588 | #line 619 "pikchr.y" |
| 2589 | {yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; } |
| 2590 | #line 2615 "pikchr.c" |
| 2591 | break; |
| 2592 | case 84: /* expr ::= expr PLUS expr */ |
| 2593 | #line 626 "pikchr.y" |
| 2594 | {yylhsminor.yy83=yymsp[-2].minor.yy83+yymsp[0].minor.yy83;} |
| 2595 | #line 2620 "pikchr.c" |
| 2596 | yymsp[-2].minor.yy83 = yylhsminor.yy83; |
| 2597 | break; |
| 2598 | case 85: /* expr ::= expr MINUS expr */ |
| 2599 | #line 627 "pikchr.y" |
| 2600 | {yylhsminor.yy83=yymsp[-2].minor.yy83-yymsp[0].minor.yy83;} |
| 2601 | #line 2626 "pikchr.c" |
| 2602 | yymsp[-2].minor.yy83 = yylhsminor.yy83; |
| 2603 | break; |
| 2604 | case 86: /* expr ::= expr STAR expr */ |
| 2605 | #line 628 "pikchr.y" |
| 2606 | {yylhsminor.yy83=yymsp[-2].minor.yy83*yymsp[0].minor.yy83;} |
| 2607 | #line 2632 "pikchr.c" |
| 2608 | yymsp[-2].minor.yy83 = yylhsminor.yy83; |
| 2609 | break; |
| 2610 | case 87: /* expr ::= expr SLASH expr */ |
| 2611 | #line 629 "pikchr.y" |
| 2612 | { |
| 2613 | if( yymsp[0].minor.yy83==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy83 = 0.0; } |
| 2614 | else{ yylhsminor.yy83 = yymsp[-2].minor.yy83/yymsp[0].minor.yy83; } |
| 2615 | } |
| 2616 | #line 2641 "pikchr.c" |
| 2617 | yymsp[-2].minor.yy83 = yylhsminor.yy83; |
| 2618 | break; |
| 2619 | case 88: /* expr ::= MINUS expr */ |
| 2620 | #line 633 "pikchr.y" |
| 2621 | {yymsp[-1].minor.yy83=-yymsp[0].minor.yy83;} |
| 2622 | #line 2647 "pikchr.c" |
| 2623 | break; |
| 2624 | case 89: /* expr ::= PLUS expr */ |
| 2625 | #line 634 "pikchr.y" |
| 2626 | {yymsp[-1].minor.yy83=yymsp[0].minor.yy83;} |
| 2627 | #line 2652 "pikchr.c" |
| 2628 | break; |
| 2629 | case 90: /* expr ::= LP expr RP */ |
| 2630 | #line 635 "pikchr.y" |
| 2631 | {yymsp[-2].minor.yy83=yymsp[-1].minor.yy83;} |
| 2632 | #line 2657 "pikchr.c" |
| 2633 | break; |
| 2634 | case 91: /* expr ::= NUMBER */ |
| 2635 | #line 636 "pikchr.y" |
| 2636 | {yylhsminor.yy83=pik_atof(p,&yymsp[0].minor.yy0);} |
| 2637 | #line 2662 "pikchr.c" |
| 2638 | yymsp[0].minor.yy83 = yylhsminor.yy83; |
| 2639 | break; |
| 2640 | case 92: /* expr ::= ID */ |
| 2641 | #line 637 "pikchr.y" |
| 2642 | {yylhsminor.yy83=pik_get_var(p,&yymsp[0].minor.yy0);} |
| 2643 | #line 2668 "pikchr.c" |
| 2644 | yymsp[0].minor.yy83 = yylhsminor.yy83; |
| 2645 | break; |
| 2646 | case 93: /* expr ::= FUNC1 LP expr RP */ |
| 2647 | #line 638 "pikchr.y" |
| 2648 | {yylhsminor.yy83 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy83,0.0);} |
| 2649 | #line 2674 "pikchr.c" |
| 2650 | yymsp[-3].minor.yy83 = yylhsminor.yy83; |
| 2651 | break; |
| 2652 | case 94: /* expr ::= FUNC2 LP expr COMMA expr RP */ |
| 2653 | #line 639 "pikchr.y" |
| 2654 | {yylhsminor.yy83 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy83,yymsp[-1].minor.yy83);} |
| 2655 | #line 2680 "pikchr.c" |
| 2656 | yymsp[-5].minor.yy83 = yylhsminor.yy83; |
| 2657 | break; |
| 2658 | case 95: /* expr ::= object DOT_L locproperty */ |
| 2659 | case 96: /* expr ::= object DOT_L numproperty */ yytestcase(yyruleno==96); |
| 2660 | case 97: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==97); |
| 2661 | case 98: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==98); |
| 2662 | #line 641 "pikchr.y" |
| 2663 | {yylhsminor.yy83=pik_property_of(p,yymsp[-2].minor.yy24,&yymsp[0].minor.yy0);} |
| 2664 | #line 2689 "pikchr.c" |
| 2665 | yymsp[-2].minor.yy83 = yylhsminor.yy83; |
| 2666 | break; |
| 2667 | case 99: /* expr ::= object DOT_E edge DOT_L X */ |
| 2668 | #line 645 "pikchr.y" |
| 2669 | {yylhsminor.yy83=pik_place_of_elem(p,yymsp[-4].minor.yy24,&yymsp[-2].minor.yy0).x;} |
| 2670 | #line 2695 "pikchr.c" |
| 2671 | yymsp[-4].minor.yy83 = yylhsminor.yy83; |
| 2672 | break; |
| 2673 | case 100: /* expr ::= object DOT_E edge DOT_L Y */ |
| 2674 | #line 646 "pikchr.y" |
| 2675 | {yylhsminor.yy83=pik_place_of_elem(p,yymsp[-4].minor.yy24,&yymsp[-2].minor.yy0).y;} |
| 2676 | #line 2701 "pikchr.c" |
| 2677 | yymsp[-4].minor.yy83 = yylhsminor.yy83; |
| 2678 | break; |
| 2679 | case 101: /* expr ::= LP locproperty OF object RP */ |
| 2680 | case 102: /* expr ::= LP dashproperty OF object RP */ yytestcase(yyruleno==102); |
| 2681 | case 103: /* expr ::= LP numproperty OF object RP */ yytestcase(yyruleno==103); |
| 2682 | case 104: /* expr ::= LP colorproperty OF object RP */ yytestcase(yyruleno==104); |
| 2683 | #line 647 "pikchr.y" |
| 2684 | {yymsp[-4].minor.yy83=pik_property_of(p,yymsp[-1].minor.yy24,&yymsp[-3].minor.yy0);} |
| 2685 | #line 2710 "pikchr.c" |
| 2686 | break; |
| 2687 | case 105: /* expr ::= NTH VERTEX OF object DOT_L X */ |
| 2688 | #line 653 "pikchr.y" |
| 2689 | {yylhsminor.yy83 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy24).x;} |
| 2690 | #line 2715 "pikchr.c" |
| 2691 | yymsp[-5].minor.yy83 = yylhsminor.yy83; |
| 2692 | break; |
| 2693 | case 106: /* expr ::= NTH VERTEX OF object DOT_L Y */ |
| 2694 | #line 655 "pikchr.y" |
| 2695 | {yylhsminor.yy83 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy24).y;} |
| 2696 | #line 2721 "pikchr.c" |
| 2697 | yymsp[-5].minor.yy83 = yylhsminor.yy83; |
| 2698 | break; |
| 2699 | default: |
| 2700 | /* (107) lvalue ::= ID */ yytestcase(yyruleno==107); |
| 2701 | /* (108) lvalue ::= FILL */ yytestcase(yyruleno==108); |
| @@ -2789,18 +2792,18 @@ | |
| 2789 | ){ |
| 2790 | pik_parserARG_FETCH |
| 2791 | pik_parserCTX_FETCH |
| 2792 | #define TOKEN yyminor |
| 2793 | /************ Begin %syntax_error code ****************************************/ |
| 2794 | #line 443 "pikchr.y" |
| 2795 | |
| 2796 | if( TOKEN.z && TOKEN.z[0] ){ |
| 2797 | pik_error(p, &TOKEN, "syntax error"); |
| 2798 | }else{ |
| 2799 | pik_error(p, 0, "syntax error"); |
| 2800 | } |
| 2801 | #line 2826 "pikchr.c" |
| 2802 | /************ End %syntax_error code ******************************************/ |
| 2803 | pik_parserARG_STORE /* Suppress warning about unused %extra_argument variable */ |
| 2804 | pik_parserCTX_STORE |
| 2805 | } |
| 2806 | |
| @@ -3029,11 +3032,11 @@ | |
| 3029 | #else |
| 3030 | (void)iToken; |
| 3031 | return 0; |
| 3032 | #endif |
| 3033 | } |
| 3034 | #line 665 "pikchr.y" |
| 3035 | |
| 3036 | |
| 3037 | |
| 3038 | /* Chart of the 140 official HTML color names with their |
| 3039 | ** corresponding RGB value. |
| @@ -6327,6 +6330,6 @@ | |
| 6327 | printf("</body></html>\n"); |
| 6328 | return 0; |
| 6329 | } |
| 6330 | #endif /* PIKCHR_SHELL */ |
| 6331 | |
| 6332 | #line 6357 "pikchr.c" |
| 6333 |
| --- src/pikchr.c | |
| +++ src/pikchr.c | |
| @@ -121,10 +121,13 @@ | |
| 121 | #include <string.h> |
| 122 | #include <ctype.h> |
| 123 | #include <math.h> |
| 124 | #include <assert.h> |
| 125 | #define count(X) (sizeof(X)/sizeof(X[0])) |
| 126 | #ifndef M_PI |
| 127 | # define M_PI 3.1415926535897932385 |
| 128 | #endif |
| 129 | |
| 130 | typedef struct Pik Pik; /* Complete parsing context */ |
| 131 | typedef struct PToken PToken; /* A single token */ |
| 132 | typedef struct PElem PElem; /* A single diagram object or "element" */ |
| 133 | typedef struct PEList PEList; /* A list of elements */ |
| @@ -405,11 +408,11 @@ | |
| 408 | static void pik_same(Pik *p, PElem*, PToken*); |
| 409 | static PPoint pik_nth_vertex(Pik *p, PToken *pNth, PToken *pErr, PElem *pElem); |
| 410 | static PToken pik_next_semantic_token(Pik *p, PToken *pThis); |
| 411 | |
| 412 | |
| 413 | #line 439 "pikchr.c" |
| 414 | /**************** End of %include directives **********************************/ |
| 415 | /* These constants specify the various numeric values for terminal symbols. |
| 416 | ***************** Begin token definitions *************************************/ |
| 417 | #ifndef T_ID |
| 418 | #define T_ID 1 |
| @@ -1470,22 +1473,22 @@ | |
| 1473 | ** inside the C code. |
| 1474 | */ |
| 1475 | /********* Begin destructor definitions ***************************************/ |
| 1476 | case 82: /* element_list */ |
| 1477 | { |
| 1478 | #line 422 "pikchr.y" |
| 1479 | pik_elist_free(p,(yypminor->yy42)); |
| 1480 | #line 1505 "pikchr.c" |
| 1481 | } |
| 1482 | break; |
| 1483 | case 83: /* element */ |
| 1484 | case 84: /* unnamed_element */ |
| 1485 | case 85: /* basetype */ |
| 1486 | { |
| 1487 | #line 424 "pikchr.y" |
| 1488 | pik_elem_free(p,(yypminor->yy24)); |
| 1489 | #line 1514 "pikchr.c" |
| 1490 | } |
| 1491 | break; |
| 1492 | /********* End destructor definitions *****************************************/ |
| 1493 | default: break; /* If no destructor action specified: do nothing */ |
| 1494 | } |
| @@ -1699,14 +1702,14 @@ | |
| 1702 | #endif |
| 1703 | while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser); |
| 1704 | /* Here code is inserted which will execute if the parser |
| 1705 | ** stack every overflows */ |
| 1706 | /******** Begin %stack_overflow code ******************************************/ |
| 1707 | #line 453 "pikchr.y" |
| 1708 | |
| 1709 | pik_error(p, 0, "parser stack overflow"); |
| 1710 | #line 1735 "pikchr.c" |
| 1711 | /******** End %stack_overflow code ********************************************/ |
| 1712 | pik_parserARG_STORE /* Suppress warning about unused %extra_argument var */ |
| 1713 | pik_parserCTX_STORE |
| 1714 | } |
| 1715 | |
| @@ -2153,549 +2156,549 @@ | |
| 2156 | ** break; |
| 2157 | */ |
| 2158 | /********** Begin reduce actions **********************************************/ |
| 2159 | YYMINORTYPE yylhsminor; |
| 2160 | case 0: /* document ::= element_list */ |
| 2161 | #line 457 "pikchr.y" |
| 2162 | {pik_render(p,yymsp[0].minor.yy42);} |
| 2163 | #line 2188 "pikchr.c" |
| 2164 | break; |
| 2165 | case 1: /* element_list ::= element */ |
| 2166 | #line 460 "pikchr.y" |
| 2167 | { yylhsminor.yy42 = pik_elist_append(p,0,yymsp[0].minor.yy24); } |
| 2168 | #line 2193 "pikchr.c" |
| 2169 | yymsp[0].minor.yy42 = yylhsminor.yy42; |
| 2170 | break; |
| 2171 | case 2: /* element_list ::= element_list EOL element */ |
| 2172 | #line 462 "pikchr.y" |
| 2173 | { yylhsminor.yy42 = pik_elist_append(p,yymsp[-2].minor.yy42,yymsp[0].minor.yy24); } |
| 2174 | #line 2199 "pikchr.c" |
| 2175 | yymsp[-2].minor.yy42 = yylhsminor.yy42; |
| 2176 | break; |
| 2177 | case 3: /* element ::= */ |
| 2178 | #line 465 "pikchr.y" |
| 2179 | { yymsp[1].minor.yy24 = 0; } |
| 2180 | #line 2205 "pikchr.c" |
| 2181 | break; |
| 2182 | case 4: /* element ::= direction */ |
| 2183 | #line 466 "pikchr.y" |
| 2184 | { pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy24=0; } |
| 2185 | #line 2210 "pikchr.c" |
| 2186 | yymsp[0].minor.yy24 = yylhsminor.yy24; |
| 2187 | break; |
| 2188 | case 5: /* element ::= lvalue ASSIGN rvalue */ |
| 2189 | #line 467 "pikchr.y" |
| 2190 | {pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy83,&yymsp[-1].minor.yy0); yylhsminor.yy24=0;} |
| 2191 | #line 2216 "pikchr.c" |
| 2192 | yymsp[-2].minor.yy24 = yylhsminor.yy24; |
| 2193 | break; |
| 2194 | case 6: /* element ::= PLACENAME COLON unnamed_element */ |
| 2195 | #line 469 "pikchr.y" |
| 2196 | { yylhsminor.yy24 = yymsp[0].minor.yy24; pik_elem_setname(p,yymsp[0].minor.yy24,&yymsp[-2].minor.yy0); } |
| 2197 | #line 2222 "pikchr.c" |
| 2198 | yymsp[-2].minor.yy24 = yylhsminor.yy24; |
| 2199 | break; |
| 2200 | case 7: /* element ::= PLACENAME COLON position */ |
| 2201 | #line 471 "pikchr.y" |
| 2202 | { yylhsminor.yy24 = pik_elem_new(p,0,0,0); |
| 2203 | if(yylhsminor.yy24){ yylhsminor.yy24->ptAt = yymsp[0].minor.yy49; pik_elem_setname(p,yylhsminor.yy24,&yymsp[-2].minor.yy0); }} |
| 2204 | #line 2229 "pikchr.c" |
| 2205 | yymsp[-2].minor.yy24 = yylhsminor.yy24; |
| 2206 | break; |
| 2207 | case 8: /* element ::= unnamed_element */ |
| 2208 | #line 473 "pikchr.y" |
| 2209 | {yylhsminor.yy24 = yymsp[0].minor.yy24;} |
| 2210 | #line 2235 "pikchr.c" |
| 2211 | yymsp[0].minor.yy24 = yylhsminor.yy24; |
| 2212 | break; |
| 2213 | case 9: /* element ::= print prlist */ |
| 2214 | #line 474 "pikchr.y" |
| 2215 | {pik_append(p,"<br>\n",5); yymsp[-1].minor.yy24=0;} |
| 2216 | #line 2241 "pikchr.c" |
| 2217 | break; |
| 2218 | case 10: /* rvalue ::= PLACENAME */ |
| 2219 | #line 484 "pikchr.y" |
| 2220 | {yylhsminor.yy83 = pik_lookup_color(p,&yymsp[0].minor.yy0);} |
| 2221 | #line 2246 "pikchr.c" |
| 2222 | yymsp[0].minor.yy83 = yylhsminor.yy83; |
| 2223 | break; |
| 2224 | case 11: /* pritem ::= rvalue */ |
| 2225 | #line 489 "pikchr.y" |
| 2226 | {pik_append_num(p,"",yymsp[0].minor.yy83);} |
| 2227 | #line 2252 "pikchr.c" |
| 2228 | break; |
| 2229 | case 12: /* pritem ::= STRING */ |
| 2230 | #line 490 "pikchr.y" |
| 2231 | {pik_append_text(p,yymsp[0].minor.yy0.z+1,yymsp[0].minor.yy0.n-2,0);} |
| 2232 | #line 2257 "pikchr.c" |
| 2233 | break; |
| 2234 | case 13: /* prsep ::= COMMA */ |
| 2235 | #line 491 "pikchr.y" |
| 2236 | {pik_append(p, " ", 1);} |
| 2237 | #line 2262 "pikchr.c" |
| 2238 | break; |
| 2239 | case 14: /* unnamed_element ::= basetype attribute_list */ |
| 2240 | #line 494 "pikchr.y" |
| 2241 | {yylhsminor.yy24 = yymsp[-1].minor.yy24; pik_after_adding_attributes(p,yylhsminor.yy24);} |
| 2242 | #line 2267 "pikchr.c" |
| 2243 | yymsp[-1].minor.yy24 = yylhsminor.yy24; |
| 2244 | break; |
| 2245 | case 15: /* basetype ::= CLASSNAME */ |
| 2246 | #line 496 "pikchr.y" |
| 2247 | {yylhsminor.yy24 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); } |
| 2248 | #line 2273 "pikchr.c" |
| 2249 | yymsp[0].minor.yy24 = yylhsminor.yy24; |
| 2250 | break; |
| 2251 | case 16: /* basetype ::= STRING textposition */ |
| 2252 | #line 498 "pikchr.y" |
| 2253 | {yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy52; yylhsminor.yy24 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); } |
| 2254 | #line 2279 "pikchr.c" |
| 2255 | yymsp[-1].minor.yy24 = yylhsminor.yy24; |
| 2256 | break; |
| 2257 | case 17: /* basetype ::= LB savelist element_list RB */ |
| 2258 | #line 500 "pikchr.y" |
| 2259 | { p->list = yymsp[-2].minor.yy42; yymsp[-3].minor.yy24 = pik_elem_new(p,0,0,yymsp[-1].minor.yy42); if(yymsp[-3].minor.yy24) yymsp[-3].minor.yy24->errTok = yymsp[0].minor.yy0; } |
| 2260 | #line 2285 "pikchr.c" |
| 2261 | break; |
| 2262 | case 18: /* savelist ::= */ |
| 2263 | #line 505 "pikchr.y" |
| 2264 | {yymsp[1].minor.yy42 = p->list; p->list = 0;} |
| 2265 | #line 2290 "pikchr.c" |
| 2266 | break; |
| 2267 | case 19: /* attribute_list ::= expr */ |
| 2268 | #line 512 "pikchr.y" |
| 2269 | { pik_add_direction(p,0,&yymsp[0].minor.yy83,0);} |
| 2270 | #line 2295 "pikchr.c" |
| 2271 | break; |
| 2272 | case 20: /* attribute_list ::= expr PERCENT */ |
| 2273 | #line 513 "pikchr.y" |
| 2274 | { pik_add_direction(p,0,&yymsp[-1].minor.yy83,1);} |
| 2275 | #line 2300 "pikchr.c" |
| 2276 | break; |
| 2277 | case 21: /* attribute ::= numproperty expr PERCENT */ |
| 2278 | #line 518 "pikchr.y" |
| 2279 | { pik_set_numprop(p,&yymsp[-2].minor.yy0,0.0,yymsp[-1].minor.yy83/100.0); } |
| 2280 | #line 2305 "pikchr.c" |
| 2281 | break; |
| 2282 | case 22: /* attribute ::= numproperty expr */ |
| 2283 | case 25: /* attribute ::= colorproperty rvalue */ yytestcase(yyruleno==25); |
| 2284 | #line 519 "pikchr.y" |
| 2285 | { pik_set_numprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy83,0.0); } |
| 2286 | #line 2311 "pikchr.c" |
| 2287 | break; |
| 2288 | case 23: /* attribute ::= dashproperty expr */ |
| 2289 | #line 520 "pikchr.y" |
| 2290 | { pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy83); } |
| 2291 | #line 2316 "pikchr.c" |
| 2292 | break; |
| 2293 | case 24: /* attribute ::= dashproperty */ |
| 2294 | #line 521 "pikchr.y" |
| 2295 | { pik_set_dashed(p,&yymsp[0].minor.yy0,0); } |
| 2296 | #line 2321 "pikchr.c" |
| 2297 | break; |
| 2298 | case 26: /* attribute ::= direction expr PERCENT */ |
| 2299 | #line 524 "pikchr.y" |
| 2300 | { pik_add_direction(p,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy83,1);} |
| 2301 | #line 2326 "pikchr.c" |
| 2302 | break; |
| 2303 | case 27: /* attribute ::= direction expr */ |
| 2304 | #line 525 "pikchr.y" |
| 2305 | { pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy83,0);} |
| 2306 | #line 2331 "pikchr.c" |
| 2307 | break; |
| 2308 | case 28: /* attribute ::= direction */ |
| 2309 | #line 526 "pikchr.y" |
| 2310 | { pik_add_direction(p,&yymsp[0].minor.yy0,0,0); } |
| 2311 | #line 2336 "pikchr.c" |
| 2312 | break; |
| 2313 | case 29: /* attribute ::= direction even position */ |
| 2314 | #line 527 "pikchr.y" |
| 2315 | {pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy49);} |
| 2316 | #line 2341 "pikchr.c" |
| 2317 | break; |
| 2318 | case 30: /* attribute ::= CLOSE */ |
| 2319 | #line 528 "pikchr.y" |
| 2320 | { pik_close_path(p,&yymsp[0].minor.yy0); } |
| 2321 | #line 2346 "pikchr.c" |
| 2322 | break; |
| 2323 | case 31: /* attribute ::= CHOP */ |
| 2324 | #line 529 "pikchr.y" |
| 2325 | { p->cur->bChop = 1; } |
| 2326 | #line 2351 "pikchr.c" |
| 2327 | break; |
| 2328 | case 32: /* attribute ::= FROM position */ |
| 2329 | #line 530 "pikchr.y" |
| 2330 | { pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy49); } |
| 2331 | #line 2356 "pikchr.c" |
| 2332 | break; |
| 2333 | case 33: /* attribute ::= TO position */ |
| 2334 | #line 531 "pikchr.y" |
| 2335 | { pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy49); } |
| 2336 | #line 2361 "pikchr.c" |
| 2337 | break; |
| 2338 | case 34: /* attribute ::= THEN */ |
| 2339 | #line 532 "pikchr.y" |
| 2340 | { pik_then(p, &yymsp[0].minor.yy0, p->cur); } |
| 2341 | #line 2366 "pikchr.c" |
| 2342 | break; |
| 2343 | case 35: /* attribute ::= AT position */ |
| 2344 | #line 534 "pikchr.y" |
| 2345 | { pik_set_at(p,0,&yymsp[0].minor.yy49,&yymsp[-1].minor.yy0); } |
| 2346 | #line 2371 "pikchr.c" |
| 2347 | break; |
| 2348 | case 36: /* attribute ::= SAME */ |
| 2349 | #line 536 "pikchr.y" |
| 2350 | {pik_same(p,0,&yymsp[0].minor.yy0);} |
| 2351 | #line 2376 "pikchr.c" |
| 2352 | break; |
| 2353 | case 37: /* attribute ::= SAME AS object */ |
| 2354 | #line 537 "pikchr.y" |
| 2355 | {pik_same(p,yymsp[0].minor.yy24,&yymsp[-2].minor.yy0);} |
| 2356 | #line 2381 "pikchr.c" |
| 2357 | break; |
| 2358 | case 38: /* attribute ::= STRING textposition */ |
| 2359 | #line 538 "pikchr.y" |
| 2360 | {pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy52);} |
| 2361 | #line 2386 "pikchr.c" |
| 2362 | break; |
| 2363 | case 39: /* attribute ::= FIT */ |
| 2364 | #line 539 "pikchr.y" |
| 2365 | {pik_size_to_fit(p,&yymsp[0].minor.yy0); } |
| 2366 | #line 2391 "pikchr.c" |
| 2367 | break; |
| 2368 | case 40: /* with ::= DOT_E edge AT position */ |
| 2369 | case 41: /* with ::= edge AT position */ yytestcase(yyruleno==41); |
| 2370 | #line 546 "pikchr.y" |
| 2371 | { pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy49,&yymsp[-1].minor.yy0); } |
| 2372 | #line 2397 "pikchr.c" |
| 2373 | break; |
| 2374 | case 42: /* numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */ |
| 2375 | #line 550 "pikchr.y" |
| 2376 | {yylhsminor.yy0 = yymsp[0].minor.yy0;} |
| 2377 | #line 2402 "pikchr.c" |
| 2378 | yymsp[0].minor.yy0 = yylhsminor.yy0; |
| 2379 | break; |
| 2380 | case 43: /* boolproperty ::= CW */ |
| 2381 | #line 561 "pikchr.y" |
| 2382 | {p->cur->cw = 1;} |
| 2383 | #line 2408 "pikchr.c" |
| 2384 | break; |
| 2385 | case 44: /* boolproperty ::= CCW */ |
| 2386 | #line 562 "pikchr.y" |
| 2387 | {p->cur->cw = 0;} |
| 2388 | #line 2413 "pikchr.c" |
| 2389 | break; |
| 2390 | case 45: /* boolproperty ::= LARROW */ |
| 2391 | #line 563 "pikchr.y" |
| 2392 | {p->cur->larrow=1; p->cur->rarrow=0; } |
| 2393 | #line 2418 "pikchr.c" |
| 2394 | break; |
| 2395 | case 46: /* boolproperty ::= RARROW */ |
| 2396 | #line 564 "pikchr.y" |
| 2397 | {p->cur->larrow=0; p->cur->rarrow=1; } |
| 2398 | #line 2423 "pikchr.c" |
| 2399 | break; |
| 2400 | case 47: /* boolproperty ::= LRARROW */ |
| 2401 | #line 565 "pikchr.y" |
| 2402 | {p->cur->larrow=1; p->cur->rarrow=1; } |
| 2403 | #line 2428 "pikchr.c" |
| 2404 | break; |
| 2405 | case 48: /* boolproperty ::= INVIS */ |
| 2406 | #line 566 "pikchr.y" |
| 2407 | {p->cur->sw = 0.0;} |
| 2408 | #line 2433 "pikchr.c" |
| 2409 | break; |
| 2410 | case 49: /* textposition ::= */ |
| 2411 | #line 568 "pikchr.y" |
| 2412 | {yymsp[1].minor.yy52 = 0;} |
| 2413 | #line 2438 "pikchr.c" |
| 2414 | break; |
| 2415 | case 50: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|ALIGNED */ |
| 2416 | #line 571 "pikchr.y" |
| 2417 | {yylhsminor.yy52 = pik_text_position(p,yymsp[-1].minor.yy52,&yymsp[0].minor.yy0);} |
| 2418 | #line 2443 "pikchr.c" |
| 2419 | yymsp[-1].minor.yy52 = yylhsminor.yy52; |
| 2420 | break; |
| 2421 | case 51: /* position ::= expr COMMA expr */ |
| 2422 | #line 574 "pikchr.y" |
| 2423 | {yylhsminor.yy49.x=yymsp[-2].minor.yy83; yylhsminor.yy49.y=yymsp[0].minor.yy83;} |
| 2424 | #line 2449 "pikchr.c" |
| 2425 | yymsp[-2].minor.yy49 = yylhsminor.yy49; |
| 2426 | break; |
| 2427 | case 52: /* position ::= place PLUS expr COMMA expr */ |
| 2428 | #line 576 "pikchr.y" |
| 2429 | {yylhsminor.yy49.x=yymsp[-4].minor.yy49.x+yymsp[-2].minor.yy83; yylhsminor.yy49.y=yymsp[-4].minor.yy49.y+yymsp[0].minor.yy83;} |
| 2430 | #line 2455 "pikchr.c" |
| 2431 | yymsp[-4].minor.yy49 = yylhsminor.yy49; |
| 2432 | break; |
| 2433 | case 53: /* position ::= place MINUS expr COMMA expr */ |
| 2434 | #line 577 "pikchr.y" |
| 2435 | {yylhsminor.yy49.x=yymsp[-4].minor.yy49.x-yymsp[-2].minor.yy83; yylhsminor.yy49.y=yymsp[-4].minor.yy49.y-yymsp[0].minor.yy83;} |
| 2436 | #line 2461 "pikchr.c" |
| 2437 | yymsp[-4].minor.yy49 = yylhsminor.yy49; |
| 2438 | break; |
| 2439 | case 54: /* position ::= place PLUS LP expr COMMA expr RP */ |
| 2440 | #line 579 "pikchr.y" |
| 2441 | {yylhsminor.yy49.x=yymsp[-6].minor.yy49.x+yymsp[-3].minor.yy83; yylhsminor.yy49.y=yymsp[-6].minor.yy49.y+yymsp[-1].minor.yy83;} |
| 2442 | #line 2467 "pikchr.c" |
| 2443 | yymsp[-6].minor.yy49 = yylhsminor.yy49; |
| 2444 | break; |
| 2445 | case 55: /* position ::= place MINUS LP expr COMMA expr RP */ |
| 2446 | #line 581 "pikchr.y" |
| 2447 | {yylhsminor.yy49.x=yymsp[-6].minor.yy49.x-yymsp[-3].minor.yy83; yylhsminor.yy49.y=yymsp[-6].minor.yy49.y-yymsp[-1].minor.yy83;} |
| 2448 | #line 2473 "pikchr.c" |
| 2449 | yymsp[-6].minor.yy49 = yylhsminor.yy49; |
| 2450 | break; |
| 2451 | case 56: /* position ::= LP position COMMA position RP */ |
| 2452 | #line 582 "pikchr.y" |
| 2453 | {yymsp[-4].minor.yy49.x=yymsp[-3].minor.yy49.x; yymsp[-4].minor.yy49.y=yymsp[-1].minor.yy49.y;} |
| 2454 | #line 2479 "pikchr.c" |
| 2455 | break; |
| 2456 | case 57: /* position ::= LP position RP */ |
| 2457 | #line 583 "pikchr.y" |
| 2458 | {yymsp[-2].minor.yy49=yymsp[-1].minor.yy49;} |
| 2459 | #line 2484 "pikchr.c" |
| 2460 | break; |
| 2461 | case 58: /* position ::= expr between position AND position */ |
| 2462 | #line 585 "pikchr.y" |
| 2463 | {yylhsminor.yy49 = pik_position_between(p,yymsp[-4].minor.yy83,yymsp[-2].minor.yy49,yymsp[0].minor.yy49);} |
| 2464 | #line 2489 "pikchr.c" |
| 2465 | yymsp[-4].minor.yy49 = yylhsminor.yy49; |
| 2466 | break; |
| 2467 | case 59: /* position ::= expr ABOVE position */ |
| 2468 | #line 586 "pikchr.y" |
| 2469 | {yylhsminor.yy49=yymsp[0].minor.yy49; yylhsminor.yy49.y += yymsp[-2].minor.yy83;} |
| 2470 | #line 2495 "pikchr.c" |
| 2471 | yymsp[-2].minor.yy49 = yylhsminor.yy49; |
| 2472 | break; |
| 2473 | case 60: /* position ::= expr BELOW position */ |
| 2474 | #line 587 "pikchr.y" |
| 2475 | {yylhsminor.yy49=yymsp[0].minor.yy49; yylhsminor.yy49.y -= yymsp[-2].minor.yy83;} |
| 2476 | #line 2501 "pikchr.c" |
| 2477 | yymsp[-2].minor.yy49 = yylhsminor.yy49; |
| 2478 | break; |
| 2479 | case 61: /* position ::= expr LEFT OF position */ |
| 2480 | #line 588 "pikchr.y" |
| 2481 | {yylhsminor.yy49=yymsp[0].minor.yy49; yylhsminor.yy49.x -= yymsp[-3].minor.yy83;} |
| 2482 | #line 2507 "pikchr.c" |
| 2483 | yymsp[-3].minor.yy49 = yylhsminor.yy49; |
| 2484 | break; |
| 2485 | case 62: /* position ::= expr RIGHT OF position */ |
| 2486 | #line 589 "pikchr.y" |
| 2487 | {yylhsminor.yy49=yymsp[0].minor.yy49; yylhsminor.yy49.x += yymsp[-3].minor.yy83;} |
| 2488 | #line 2513 "pikchr.c" |
| 2489 | yymsp[-3].minor.yy49 = yylhsminor.yy49; |
| 2490 | break; |
| 2491 | case 63: /* position ::= expr EDGEPT OF position */ |
| 2492 | #line 591 "pikchr.y" |
| 2493 | {yylhsminor.yy49 = pik_position_at_hdg(p,yymsp[-3].minor.yy83,&yymsp[-2].minor.yy0,yymsp[0].minor.yy49);} |
| 2494 | #line 2519 "pikchr.c" |
| 2495 | yymsp[-3].minor.yy49 = yylhsminor.yy49; |
| 2496 | break; |
| 2497 | case 64: /* position ::= expr HEADING expr FROM position */ |
| 2498 | #line 593 "pikchr.y" |
| 2499 | {yylhsminor.yy49 = pik_position_at_angle(p,yymsp[-4].minor.yy83,yymsp[-2].minor.yy83,yymsp[0].minor.yy49);} |
| 2500 | #line 2525 "pikchr.c" |
| 2501 | yymsp[-4].minor.yy49 = yylhsminor.yy49; |
| 2502 | break; |
| 2503 | case 65: /* place ::= object */ |
| 2504 | #line 599 "pikchr.y" |
| 2505 | {yylhsminor.yy49 = pik_place_of_elem(p,yymsp[0].minor.yy24,0);} |
| 2506 | #line 2531 "pikchr.c" |
| 2507 | yymsp[0].minor.yy49 = yylhsminor.yy49; |
| 2508 | break; |
| 2509 | case 66: /* place ::= object DOT_E edge */ |
| 2510 | case 67: /* place ::= object DOT_L START */ yytestcase(yyruleno==67); |
| 2511 | case 68: /* place ::= object DOT_L END */ yytestcase(yyruleno==68); |
| 2512 | #line 600 "pikchr.y" |
| 2513 | {yylhsminor.yy49 = pik_place_of_elem(p,yymsp[-2].minor.yy24,&yymsp[0].minor.yy0);} |
| 2514 | #line 2539 "pikchr.c" |
| 2515 | yymsp[-2].minor.yy49 = yylhsminor.yy49; |
| 2516 | break; |
| 2517 | case 69: /* place ::= START OF object */ |
| 2518 | case 70: /* place ::= END OF object */ yytestcase(yyruleno==70); |
| 2519 | case 71: /* place ::= edge OF object */ yytestcase(yyruleno==71); |
| 2520 | #line 603 "pikchr.y" |
| 2521 | {yylhsminor.yy49 = pik_place_of_elem(p,yymsp[0].minor.yy24,&yymsp[-2].minor.yy0);} |
| 2522 | #line 2547 "pikchr.c" |
| 2523 | yymsp[-2].minor.yy49 = yylhsminor.yy49; |
| 2524 | break; |
| 2525 | case 72: /* place ::= NTH VERTEX OF object */ |
| 2526 | #line 606 "pikchr.y" |
| 2527 | {yylhsminor.yy49 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy24);} |
| 2528 | #line 2553 "pikchr.c" |
| 2529 | yymsp[-3].minor.yy49 = yylhsminor.yy49; |
| 2530 | break; |
| 2531 | case 73: /* object ::= nth */ |
| 2532 | #line 609 "pikchr.y" |
| 2533 | {yylhsminor.yy24 = pik_find_nth(p,0,&yymsp[0].minor.yy0);} |
| 2534 | #line 2559 "pikchr.c" |
| 2535 | yymsp[0].minor.yy24 = yylhsminor.yy24; |
| 2536 | break; |
| 2537 | case 74: /* object ::= nth OF|IN object */ |
| 2538 | #line 610 "pikchr.y" |
| 2539 | {yylhsminor.yy24 = pik_find_nth(p,yymsp[0].minor.yy24,&yymsp[-2].minor.yy0);} |
| 2540 | #line 2565 "pikchr.c" |
| 2541 | yymsp[-2].minor.yy24 = yylhsminor.yy24; |
| 2542 | break; |
| 2543 | case 75: /* objectname ::= PLACENAME */ |
| 2544 | #line 612 "pikchr.y" |
| 2545 | {yylhsminor.yy24 = pik_find_byname(p,0,&yymsp[0].minor.yy0);} |
| 2546 | #line 2571 "pikchr.c" |
| 2547 | yymsp[0].minor.yy24 = yylhsminor.yy24; |
| 2548 | break; |
| 2549 | case 76: /* objectname ::= objectname DOT_U PLACENAME */ |
| 2550 | #line 614 "pikchr.y" |
| 2551 | {yylhsminor.yy24 = pik_find_byname(p,yymsp[-2].minor.yy24,&yymsp[0].minor.yy0);} |
| 2552 | #line 2577 "pikchr.c" |
| 2553 | yymsp[-2].minor.yy24 = yylhsminor.yy24; |
| 2554 | break; |
| 2555 | case 77: /* nth ::= NTH CLASSNAME */ |
| 2556 | #line 616 "pikchr.y" |
| 2557 | {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-1].minor.yy0); } |
| 2558 | #line 2583 "pikchr.c" |
| 2559 | yymsp[-1].minor.yy0 = yylhsminor.yy0; |
| 2560 | break; |
| 2561 | case 78: /* nth ::= NTH LAST CLASSNAME */ |
| 2562 | #line 617 "pikchr.y" |
| 2563 | {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-2].minor.yy0); } |
| 2564 | #line 2589 "pikchr.c" |
| 2565 | yymsp[-2].minor.yy0 = yylhsminor.yy0; |
| 2566 | break; |
| 2567 | case 79: /* nth ::= LAST CLASSNAME */ |
| 2568 | #line 618 "pikchr.y" |
| 2569 | {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.eCode = -1;} |
| 2570 | #line 2595 "pikchr.c" |
| 2571 | break; |
| 2572 | case 80: /* nth ::= LAST */ |
| 2573 | #line 619 "pikchr.y" |
| 2574 | {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -1;} |
| 2575 | #line 2600 "pikchr.c" |
| 2576 | yymsp[0].minor.yy0 = yylhsminor.yy0; |
| 2577 | break; |
| 2578 | case 81: /* nth ::= NTH LB RB */ |
| 2579 | #line 620 "pikchr.y" |
| 2580 | {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-2].minor.yy0);} |
| 2581 | #line 2606 "pikchr.c" |
| 2582 | yymsp[-2].minor.yy0 = yylhsminor.yy0; |
| 2583 | break; |
| 2584 | case 82: /* nth ::= NTH LAST LB RB */ |
| 2585 | #line 621 "pikchr.y" |
| 2586 | {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-3].minor.yy0);} |
| 2587 | #line 2612 "pikchr.c" |
| 2588 | yymsp[-3].minor.yy0 = yylhsminor.yy0; |
| 2589 | break; |
| 2590 | case 83: /* nth ::= LAST LB RB */ |
| 2591 | #line 622 "pikchr.y" |
| 2592 | {yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; } |
| 2593 | #line 2618 "pikchr.c" |
| 2594 | break; |
| 2595 | case 84: /* expr ::= expr PLUS expr */ |
| 2596 | #line 629 "pikchr.y" |
| 2597 | {yylhsminor.yy83=yymsp[-2].minor.yy83+yymsp[0].minor.yy83;} |
| 2598 | #line 2623 "pikchr.c" |
| 2599 | yymsp[-2].minor.yy83 = yylhsminor.yy83; |
| 2600 | break; |
| 2601 | case 85: /* expr ::= expr MINUS expr */ |
| 2602 | #line 630 "pikchr.y" |
| 2603 | {yylhsminor.yy83=yymsp[-2].minor.yy83-yymsp[0].minor.yy83;} |
| 2604 | #line 2629 "pikchr.c" |
| 2605 | yymsp[-2].minor.yy83 = yylhsminor.yy83; |
| 2606 | break; |
| 2607 | case 86: /* expr ::= expr STAR expr */ |
| 2608 | #line 631 "pikchr.y" |
| 2609 | {yylhsminor.yy83=yymsp[-2].minor.yy83*yymsp[0].minor.yy83;} |
| 2610 | #line 2635 "pikchr.c" |
| 2611 | yymsp[-2].minor.yy83 = yylhsminor.yy83; |
| 2612 | break; |
| 2613 | case 87: /* expr ::= expr SLASH expr */ |
| 2614 | #line 632 "pikchr.y" |
| 2615 | { |
| 2616 | if( yymsp[0].minor.yy83==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy83 = 0.0; } |
| 2617 | else{ yylhsminor.yy83 = yymsp[-2].minor.yy83/yymsp[0].minor.yy83; } |
| 2618 | } |
| 2619 | #line 2644 "pikchr.c" |
| 2620 | yymsp[-2].minor.yy83 = yylhsminor.yy83; |
| 2621 | break; |
| 2622 | case 88: /* expr ::= MINUS expr */ |
| 2623 | #line 636 "pikchr.y" |
| 2624 | {yymsp[-1].minor.yy83=-yymsp[0].minor.yy83;} |
| 2625 | #line 2650 "pikchr.c" |
| 2626 | break; |
| 2627 | case 89: /* expr ::= PLUS expr */ |
| 2628 | #line 637 "pikchr.y" |
| 2629 | {yymsp[-1].minor.yy83=yymsp[0].minor.yy83;} |
| 2630 | #line 2655 "pikchr.c" |
| 2631 | break; |
| 2632 | case 90: /* expr ::= LP expr RP */ |
| 2633 | #line 638 "pikchr.y" |
| 2634 | {yymsp[-2].minor.yy83=yymsp[-1].minor.yy83;} |
| 2635 | #line 2660 "pikchr.c" |
| 2636 | break; |
| 2637 | case 91: /* expr ::= NUMBER */ |
| 2638 | #line 639 "pikchr.y" |
| 2639 | {yylhsminor.yy83=pik_atof(p,&yymsp[0].minor.yy0);} |
| 2640 | #line 2665 "pikchr.c" |
| 2641 | yymsp[0].minor.yy83 = yylhsminor.yy83; |
| 2642 | break; |
| 2643 | case 92: /* expr ::= ID */ |
| 2644 | #line 640 "pikchr.y" |
| 2645 | {yylhsminor.yy83=pik_get_var(p,&yymsp[0].minor.yy0);} |
| 2646 | #line 2671 "pikchr.c" |
| 2647 | yymsp[0].minor.yy83 = yylhsminor.yy83; |
| 2648 | break; |
| 2649 | case 93: /* expr ::= FUNC1 LP expr RP */ |
| 2650 | #line 641 "pikchr.y" |
| 2651 | {yylhsminor.yy83 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy83,0.0);} |
| 2652 | #line 2677 "pikchr.c" |
| 2653 | yymsp[-3].minor.yy83 = yylhsminor.yy83; |
| 2654 | break; |
| 2655 | case 94: /* expr ::= FUNC2 LP expr COMMA expr RP */ |
| 2656 | #line 642 "pikchr.y" |
| 2657 | {yylhsminor.yy83 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy83,yymsp[-1].minor.yy83);} |
| 2658 | #line 2683 "pikchr.c" |
| 2659 | yymsp[-5].minor.yy83 = yylhsminor.yy83; |
| 2660 | break; |
| 2661 | case 95: /* expr ::= object DOT_L locproperty */ |
| 2662 | case 96: /* expr ::= object DOT_L numproperty */ yytestcase(yyruleno==96); |
| 2663 | case 97: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==97); |
| 2664 | case 98: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==98); |
| 2665 | #line 644 "pikchr.y" |
| 2666 | {yylhsminor.yy83=pik_property_of(p,yymsp[-2].minor.yy24,&yymsp[0].minor.yy0);} |
| 2667 | #line 2692 "pikchr.c" |
| 2668 | yymsp[-2].minor.yy83 = yylhsminor.yy83; |
| 2669 | break; |
| 2670 | case 99: /* expr ::= object DOT_E edge DOT_L X */ |
| 2671 | #line 648 "pikchr.y" |
| 2672 | {yylhsminor.yy83=pik_place_of_elem(p,yymsp[-4].minor.yy24,&yymsp[-2].minor.yy0).x;} |
| 2673 | #line 2698 "pikchr.c" |
| 2674 | yymsp[-4].minor.yy83 = yylhsminor.yy83; |
| 2675 | break; |
| 2676 | case 100: /* expr ::= object DOT_E edge DOT_L Y */ |
| 2677 | #line 649 "pikchr.y" |
| 2678 | {yylhsminor.yy83=pik_place_of_elem(p,yymsp[-4].minor.yy24,&yymsp[-2].minor.yy0).y;} |
| 2679 | #line 2704 "pikchr.c" |
| 2680 | yymsp[-4].minor.yy83 = yylhsminor.yy83; |
| 2681 | break; |
| 2682 | case 101: /* expr ::= LP locproperty OF object RP */ |
| 2683 | case 102: /* expr ::= LP dashproperty OF object RP */ yytestcase(yyruleno==102); |
| 2684 | case 103: /* expr ::= LP numproperty OF object RP */ yytestcase(yyruleno==103); |
| 2685 | case 104: /* expr ::= LP colorproperty OF object RP */ yytestcase(yyruleno==104); |
| 2686 | #line 650 "pikchr.y" |
| 2687 | {yymsp[-4].minor.yy83=pik_property_of(p,yymsp[-1].minor.yy24,&yymsp[-3].minor.yy0);} |
| 2688 | #line 2713 "pikchr.c" |
| 2689 | break; |
| 2690 | case 105: /* expr ::= NTH VERTEX OF object DOT_L X */ |
| 2691 | #line 656 "pikchr.y" |
| 2692 | {yylhsminor.yy83 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy24).x;} |
| 2693 | #line 2718 "pikchr.c" |
| 2694 | yymsp[-5].minor.yy83 = yylhsminor.yy83; |
| 2695 | break; |
| 2696 | case 106: /* expr ::= NTH VERTEX OF object DOT_L Y */ |
| 2697 | #line 658 "pikchr.y" |
| 2698 | {yylhsminor.yy83 = pik_nth_vertex(p,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,yymsp[-2].minor.yy24).y;} |
| 2699 | #line 2724 "pikchr.c" |
| 2700 | yymsp[-5].minor.yy83 = yylhsminor.yy83; |
| 2701 | break; |
| 2702 | default: |
| 2703 | /* (107) lvalue ::= ID */ yytestcase(yyruleno==107); |
| 2704 | /* (108) lvalue ::= FILL */ yytestcase(yyruleno==108); |
| @@ -2789,18 +2792,18 @@ | |
| 2792 | ){ |
| 2793 | pik_parserARG_FETCH |
| 2794 | pik_parserCTX_FETCH |
| 2795 | #define TOKEN yyminor |
| 2796 | /************ Begin %syntax_error code ****************************************/ |
| 2797 | #line 446 "pikchr.y" |
| 2798 | |
| 2799 | if( TOKEN.z && TOKEN.z[0] ){ |
| 2800 | pik_error(p, &TOKEN, "syntax error"); |
| 2801 | }else{ |
| 2802 | pik_error(p, 0, "syntax error"); |
| 2803 | } |
| 2804 | #line 2829 "pikchr.c" |
| 2805 | /************ End %syntax_error code ******************************************/ |
| 2806 | pik_parserARG_STORE /* Suppress warning about unused %extra_argument variable */ |
| 2807 | pik_parserCTX_STORE |
| 2808 | } |
| 2809 | |
| @@ -3029,11 +3032,11 @@ | |
| 3032 | #else |
| 3033 | (void)iToken; |
| 3034 | return 0; |
| 3035 | #endif |
| 3036 | } |
| 3037 | #line 668 "pikchr.y" |
| 3038 | |
| 3039 | |
| 3040 | |
| 3041 | /* Chart of the 140 official HTML color names with their |
| 3042 | ** corresponding RGB value. |
| @@ -6327,6 +6330,6 @@ | |
| 6330 | printf("</body></html>\n"); |
| 6331 | return 0; |
| 6332 | } |
| 6333 | #endif /* PIKCHR_SHELL */ |
| 6334 | |
| 6335 | #line 6360 "pikchr.c" |
| 6336 |