| | @@ -125,10 +125,22 @@ |
| 125 | 125 | #include <assert.h> |
| 126 | 126 | #define count(X) (sizeof(X)/sizeof(X[0])) |
| 127 | 127 | #ifndef M_PI |
| 128 | 128 | # define M_PI 3.1415926535897932385 |
| 129 | 129 | #endif |
| 130 | + |
| 131 | +/* |
| 132 | +** Typesafe version of ctype.h macros. Cygwin requires this, I'm told. |
| 133 | +*/ |
| 134 | +#define IsUpper(X) isupper((unsigned char)(X)) |
| 135 | +#define IsLower(X) islower((unsigned char)(X)) |
| 136 | +#define ToLower(X) tolower((unsigned char)(X)) |
| 137 | +#define IsDigit(X) isdigit((unsigned char)(X)) |
| 138 | +#define IsXDigit(X) isxdigit((unsigned char)(X)) |
| 139 | +#define IsSpace(X) isspace((unsigned char)(X)) |
| 140 | +#define IsAlnum(X) isalnum((unsigned char)(X)) |
| 141 | + |
| 130 | 142 | |
| 131 | 143 | /* Limit the number of tokens in a single script to avoid run-away |
| 132 | 144 | ** macro expansion attacks. See forum post |
| 133 | 145 | ** https://pikchr.org/home/forumpost/ef8684c6955a411a |
| 134 | 146 | */ |
| | @@ -492,11 +504,11 @@ |
| 492 | 504 | static PObj *pik_position_assert(Pik*,PPoint*,PToken*,PPoint*); |
| 493 | 505 | static PNum pik_dist(PPoint*,PPoint*); |
| 494 | 506 | static void pik_add_macro(Pik*,PToken *pId,PToken *pCode); |
| 495 | 507 | |
| 496 | 508 | |
| 497 | | -#line 523 "pikchr.c" |
| 509 | +#line 535 "pikchr.c" |
| 498 | 510 | /**************** End of %include directives **********************************/ |
| 499 | 511 | /* These constants specify the various numeric values for terminal symbols. |
| 500 | 512 | ***************** Begin token definitions *************************************/ |
| 501 | 513 | #ifndef T_ID |
| 502 | 514 | #define T_ID 1 |
| | @@ -1745,22 +1757,22 @@ |
| 1745 | 1757 | ** inside the C code. |
| 1746 | 1758 | */ |
| 1747 | 1759 | /********* Begin destructor definitions ***************************************/ |
| 1748 | 1760 | case 100: /* statement_list */ |
| 1749 | 1761 | { |
| 1750 | | -#line 511 "pikchr.y" |
| 1762 | +#line 523 "pikchr.y" |
| 1751 | 1763 | pik_elist_free(p,(yypminor->yy235)); |
| 1752 | | -#line 1777 "pikchr.c" |
| 1764 | +#line 1789 "pikchr.c" |
| 1753 | 1765 | } |
| 1754 | 1766 | break; |
| 1755 | 1767 | case 101: /* statement */ |
| 1756 | 1768 | case 102: /* unnamed_statement */ |
| 1757 | 1769 | case 103: /* basetype */ |
| 1758 | 1770 | { |
| 1759 | | -#line 513 "pikchr.y" |
| 1771 | +#line 525 "pikchr.y" |
| 1760 | 1772 | pik_elem_free(p,(yypminor->yy162)); |
| 1761 | | -#line 1786 "pikchr.c" |
| 1773 | +#line 1798 "pikchr.c" |
| 1762 | 1774 | } |
| 1763 | 1775 | break; |
| 1764 | 1776 | /********* End destructor definitions *****************************************/ |
| 1765 | 1777 | default: break; /* If no destructor action specified: do nothing */ |
| 1766 | 1778 | } |
| | @@ -1991,14 +2003,14 @@ |
| 1991 | 2003 | #endif |
| 1992 | 2004 | while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser); |
| 1993 | 2005 | /* Here code is inserted which will execute if the parser |
| 1994 | 2006 | ** stack every overflows */ |
| 1995 | 2007 | /******** Begin %stack_overflow code ******************************************/ |
| 1996 | | -#line 545 "pikchr.y" |
| 2008 | +#line 557 "pikchr.y" |
| 1997 | 2009 | |
| 1998 | 2010 | pik_error(p, 0, "parser stack overflow"); |
| 1999 | | -#line 2024 "pikchr.c" |
| 2011 | +#line 2036 "pikchr.c" |
| 2000 | 2012 | /******** End %stack_overflow code ********************************************/ |
| 2001 | 2013 | pik_parserARG_STORE /* Suppress warning about unused %extra_argument var */ |
| 2002 | 2014 | pik_parserCTX_STORE |
| 2003 | 2015 | } |
| 2004 | 2016 | |
| | @@ -2419,619 +2431,619 @@ |
| 2419 | 2431 | ** break; |
| 2420 | 2432 | */ |
| 2421 | 2433 | /********** Begin reduce actions **********************************************/ |
| 2422 | 2434 | YYMINORTYPE yylhsminor; |
| 2423 | 2435 | case 0: /* document ::= statement_list */ |
| 2424 | | -#line 549 "pikchr.y" |
| 2436 | +#line 561 "pikchr.y" |
| 2425 | 2437 | {pik_render(p,yymsp[0].minor.yy235);} |
| 2426 | | -#line 2451 "pikchr.c" |
| 2438 | +#line 2463 "pikchr.c" |
| 2427 | 2439 | break; |
| 2428 | 2440 | case 1: /* statement_list ::= statement */ |
| 2429 | | -#line 552 "pikchr.y" |
| 2441 | +#line 564 "pikchr.y" |
| 2430 | 2442 | { yylhsminor.yy235 = pik_elist_append(p,0,yymsp[0].minor.yy162); } |
| 2431 | | -#line 2456 "pikchr.c" |
| 2443 | +#line 2468 "pikchr.c" |
| 2432 | 2444 | yymsp[0].minor.yy235 = yylhsminor.yy235; |
| 2433 | 2445 | break; |
| 2434 | 2446 | case 2: /* statement_list ::= statement_list EOL statement */ |
| 2435 | | -#line 554 "pikchr.y" |
| 2447 | +#line 566 "pikchr.y" |
| 2436 | 2448 | { yylhsminor.yy235 = pik_elist_append(p,yymsp[-2].minor.yy235,yymsp[0].minor.yy162); } |
| 2437 | | -#line 2462 "pikchr.c" |
| 2449 | +#line 2474 "pikchr.c" |
| 2438 | 2450 | yymsp[-2].minor.yy235 = yylhsminor.yy235; |
| 2439 | 2451 | break; |
| 2440 | 2452 | case 3: /* statement ::= */ |
| 2441 | | -#line 557 "pikchr.y" |
| 2453 | +#line 569 "pikchr.y" |
| 2442 | 2454 | { yymsp[1].minor.yy162 = 0; } |
| 2443 | | -#line 2468 "pikchr.c" |
| 2455 | +#line 2480 "pikchr.c" |
| 2444 | 2456 | break; |
| 2445 | 2457 | case 4: /* statement ::= direction */ |
| 2446 | | -#line 558 "pikchr.y" |
| 2458 | +#line 570 "pikchr.y" |
| 2447 | 2459 | { pik_set_direction(p,yymsp[0].minor.yy0.eCode); yylhsminor.yy162=0; } |
| 2448 | | -#line 2473 "pikchr.c" |
| 2460 | +#line 2485 "pikchr.c" |
| 2449 | 2461 | yymsp[0].minor.yy162 = yylhsminor.yy162; |
| 2450 | 2462 | break; |
| 2451 | 2463 | case 5: /* statement ::= lvalue ASSIGN rvalue */ |
| 2452 | | -#line 559 "pikchr.y" |
| 2464 | +#line 571 "pikchr.y" |
| 2453 | 2465 | {pik_set_var(p,&yymsp[-2].minor.yy0,yymsp[0].minor.yy21,&yymsp[-1].minor.yy0); yylhsminor.yy162=0;} |
| 2454 | | -#line 2479 "pikchr.c" |
| 2466 | +#line 2491 "pikchr.c" |
| 2455 | 2467 | yymsp[-2].minor.yy162 = yylhsminor.yy162; |
| 2456 | 2468 | break; |
| 2457 | 2469 | case 6: /* statement ::= PLACENAME COLON unnamed_statement */ |
| 2458 | | -#line 561 "pikchr.y" |
| 2470 | +#line 573 "pikchr.y" |
| 2459 | 2471 | { yylhsminor.yy162 = yymsp[0].minor.yy162; pik_elem_setname(p,yymsp[0].minor.yy162,&yymsp[-2].minor.yy0); } |
| 2460 | | -#line 2485 "pikchr.c" |
| 2472 | +#line 2497 "pikchr.c" |
| 2461 | 2473 | yymsp[-2].minor.yy162 = yylhsminor.yy162; |
| 2462 | 2474 | break; |
| 2463 | 2475 | case 7: /* statement ::= PLACENAME COLON position */ |
| 2464 | | -#line 563 "pikchr.y" |
| 2476 | +#line 575 "pikchr.y" |
| 2465 | 2477 | { yylhsminor.yy162 = pik_elem_new(p,0,0,0); |
| 2466 | 2478 | if(yylhsminor.yy162){ yylhsminor.yy162->ptAt = yymsp[0].minor.yy63; pik_elem_setname(p,yylhsminor.yy162,&yymsp[-2].minor.yy0); }} |
| 2467 | | -#line 2492 "pikchr.c" |
| 2479 | +#line 2504 "pikchr.c" |
| 2468 | 2480 | yymsp[-2].minor.yy162 = yylhsminor.yy162; |
| 2469 | 2481 | break; |
| 2470 | 2482 | case 8: /* statement ::= unnamed_statement */ |
| 2471 | | -#line 565 "pikchr.y" |
| 2483 | +#line 577 "pikchr.y" |
| 2472 | 2484 | {yylhsminor.yy162 = yymsp[0].minor.yy162;} |
| 2473 | | -#line 2498 "pikchr.c" |
| 2485 | +#line 2510 "pikchr.c" |
| 2474 | 2486 | yymsp[0].minor.yy162 = yylhsminor.yy162; |
| 2475 | 2487 | break; |
| 2476 | 2488 | case 9: /* statement ::= print prlist */ |
| 2477 | | -#line 566 "pikchr.y" |
| 2489 | +#line 578 "pikchr.y" |
| 2478 | 2490 | {pik_append(p,"<br>\n",5); yymsp[-1].minor.yy162=0;} |
| 2479 | | -#line 2504 "pikchr.c" |
| 2491 | +#line 2516 "pikchr.c" |
| 2480 | 2492 | break; |
| 2481 | 2493 | case 10: /* statement ::= ASSERT LP expr EQ expr RP */ |
| 2482 | | -#line 571 "pikchr.y" |
| 2494 | +#line 583 "pikchr.y" |
| 2483 | 2495 | {yymsp[-5].minor.yy162=pik_assert(p,yymsp[-3].minor.yy21,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy21);} |
| 2484 | | -#line 2509 "pikchr.c" |
| 2496 | +#line 2521 "pikchr.c" |
| 2485 | 2497 | break; |
| 2486 | 2498 | case 11: /* statement ::= ASSERT LP position EQ position RP */ |
| 2487 | | -#line 573 "pikchr.y" |
| 2499 | +#line 585 "pikchr.y" |
| 2488 | 2500 | {yymsp[-5].minor.yy162=pik_position_assert(p,&yymsp[-3].minor.yy63,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy63);} |
| 2489 | | -#line 2514 "pikchr.c" |
| 2501 | +#line 2526 "pikchr.c" |
| 2490 | 2502 | break; |
| 2491 | 2503 | case 12: /* statement ::= DEFINE ID CODEBLOCK */ |
| 2492 | | -#line 574 "pikchr.y" |
| 2504 | +#line 586 "pikchr.y" |
| 2493 | 2505 | {yymsp[-2].minor.yy162=0; pik_add_macro(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0);} |
| 2494 | | -#line 2519 "pikchr.c" |
| 2506 | +#line 2531 "pikchr.c" |
| 2495 | 2507 | break; |
| 2496 | 2508 | case 13: /* rvalue ::= PLACENAME */ |
| 2497 | | -#line 585 "pikchr.y" |
| 2509 | +#line 597 "pikchr.y" |
| 2498 | 2510 | {yylhsminor.yy21 = pik_lookup_color(p,&yymsp[0].minor.yy0);} |
| 2499 | | -#line 2524 "pikchr.c" |
| 2511 | +#line 2536 "pikchr.c" |
| 2500 | 2512 | yymsp[0].minor.yy21 = yylhsminor.yy21; |
| 2501 | 2513 | break; |
| 2502 | 2514 | case 14: /* pritem ::= FILL */ |
| 2503 | 2515 | case 15: /* pritem ::= COLOR */ yytestcase(yyruleno==15); |
| 2504 | 2516 | case 16: /* pritem ::= THICKNESS */ yytestcase(yyruleno==16); |
| 2505 | | -#line 590 "pikchr.y" |
| 2517 | +#line 602 "pikchr.y" |
| 2506 | 2518 | {pik_append_num(p,"",pik_value(p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.n,0));} |
| 2507 | | -#line 2532 "pikchr.c" |
| 2519 | +#line 2544 "pikchr.c" |
| 2508 | 2520 | break; |
| 2509 | 2521 | case 17: /* pritem ::= rvalue */ |
| 2510 | | -#line 593 "pikchr.y" |
| 2522 | +#line 605 "pikchr.y" |
| 2511 | 2523 | {pik_append_num(p,"",yymsp[0].minor.yy21);} |
| 2512 | | -#line 2537 "pikchr.c" |
| 2524 | +#line 2549 "pikchr.c" |
| 2513 | 2525 | break; |
| 2514 | 2526 | case 18: /* pritem ::= STRING */ |
| 2515 | | -#line 594 "pikchr.y" |
| 2527 | +#line 606 "pikchr.y" |
| 2516 | 2528 | {pik_append_text(p,yymsp[0].minor.yy0.z+1,yymsp[0].minor.yy0.n-2,0);} |
| 2517 | | -#line 2542 "pikchr.c" |
| 2529 | +#line 2554 "pikchr.c" |
| 2518 | 2530 | break; |
| 2519 | 2531 | case 19: /* prsep ::= COMMA */ |
| 2520 | | -#line 595 "pikchr.y" |
| 2532 | +#line 607 "pikchr.y" |
| 2521 | 2533 | {pik_append(p, " ", 1);} |
| 2522 | | -#line 2547 "pikchr.c" |
| 2534 | +#line 2559 "pikchr.c" |
| 2523 | 2535 | break; |
| 2524 | 2536 | case 20: /* unnamed_statement ::= basetype attribute_list */ |
| 2525 | | -#line 598 "pikchr.y" |
| 2537 | +#line 610 "pikchr.y" |
| 2526 | 2538 | {yylhsminor.yy162 = yymsp[-1].minor.yy162; pik_after_adding_attributes(p,yylhsminor.yy162);} |
| 2527 | | -#line 2552 "pikchr.c" |
| 2539 | +#line 2564 "pikchr.c" |
| 2528 | 2540 | yymsp[-1].minor.yy162 = yylhsminor.yy162; |
| 2529 | 2541 | break; |
| 2530 | 2542 | case 21: /* basetype ::= CLASSNAME */ |
| 2531 | | -#line 600 "pikchr.y" |
| 2543 | +#line 612 "pikchr.y" |
| 2532 | 2544 | {yylhsminor.yy162 = pik_elem_new(p,&yymsp[0].minor.yy0,0,0); } |
| 2533 | | -#line 2558 "pikchr.c" |
| 2545 | +#line 2570 "pikchr.c" |
| 2534 | 2546 | yymsp[0].minor.yy162 = yylhsminor.yy162; |
| 2535 | 2547 | break; |
| 2536 | 2548 | case 22: /* basetype ::= STRING textposition */ |
| 2537 | | -#line 602 "pikchr.y" |
| 2549 | +#line 614 "pikchr.y" |
| 2538 | 2550 | {yymsp[-1].minor.yy0.eCode = yymsp[0].minor.yy188; yylhsminor.yy162 = pik_elem_new(p,0,&yymsp[-1].minor.yy0,0); } |
| 2539 | | -#line 2564 "pikchr.c" |
| 2551 | +#line 2576 "pikchr.c" |
| 2540 | 2552 | yymsp[-1].minor.yy162 = yylhsminor.yy162; |
| 2541 | 2553 | break; |
| 2542 | 2554 | case 23: /* basetype ::= LB savelist statement_list RB */ |
| 2543 | | -#line 604 "pikchr.y" |
| 2555 | +#line 616 "pikchr.y" |
| 2544 | 2556 | { p->list = yymsp[-2].minor.yy235; yymsp[-3].minor.yy162 = pik_elem_new(p,0,0,yymsp[-1].minor.yy235); if(yymsp[-3].minor.yy162) yymsp[-3].minor.yy162->errTok = yymsp[0].minor.yy0; } |
| 2545 | | -#line 2570 "pikchr.c" |
| 2557 | +#line 2582 "pikchr.c" |
| 2546 | 2558 | break; |
| 2547 | 2559 | case 24: /* savelist ::= */ |
| 2548 | | -#line 609 "pikchr.y" |
| 2560 | +#line 621 "pikchr.y" |
| 2549 | 2561 | {yymsp[1].minor.yy235 = p->list; p->list = 0;} |
| 2550 | | -#line 2575 "pikchr.c" |
| 2562 | +#line 2587 "pikchr.c" |
| 2551 | 2563 | break; |
| 2552 | 2564 | case 25: /* relexpr ::= expr */ |
| 2553 | | -#line 616 "pikchr.y" |
| 2565 | +#line 628 "pikchr.y" |
| 2554 | 2566 | {yylhsminor.yy72.rAbs = yymsp[0].minor.yy21; yylhsminor.yy72.rRel = 0;} |
| 2555 | | -#line 2580 "pikchr.c" |
| 2567 | +#line 2592 "pikchr.c" |
| 2556 | 2568 | yymsp[0].minor.yy72 = yylhsminor.yy72; |
| 2557 | 2569 | break; |
| 2558 | 2570 | case 26: /* relexpr ::= expr PERCENT */ |
| 2559 | | -#line 617 "pikchr.y" |
| 2571 | +#line 629 "pikchr.y" |
| 2560 | 2572 | {yylhsminor.yy72.rAbs = 0; yylhsminor.yy72.rRel = yymsp[-1].minor.yy21/100;} |
| 2561 | | -#line 2586 "pikchr.c" |
| 2573 | +#line 2598 "pikchr.c" |
| 2562 | 2574 | yymsp[-1].minor.yy72 = yylhsminor.yy72; |
| 2563 | 2575 | break; |
| 2564 | 2576 | case 27: /* optrelexpr ::= */ |
| 2565 | | -#line 619 "pikchr.y" |
| 2577 | +#line 631 "pikchr.y" |
| 2566 | 2578 | {yymsp[1].minor.yy72.rAbs = 0; yymsp[1].minor.yy72.rRel = 1.0;} |
| 2567 | | -#line 2592 "pikchr.c" |
| 2579 | +#line 2604 "pikchr.c" |
| 2568 | 2580 | break; |
| 2569 | 2581 | case 28: /* attribute_list ::= relexpr alist */ |
| 2570 | | -#line 621 "pikchr.y" |
| 2582 | +#line 633 "pikchr.y" |
| 2571 | 2583 | {pik_add_direction(p,0,&yymsp[-1].minor.yy72);} |
| 2572 | | -#line 2597 "pikchr.c" |
| 2584 | +#line 2609 "pikchr.c" |
| 2573 | 2585 | break; |
| 2574 | 2586 | case 29: /* attribute ::= numproperty relexpr */ |
| 2575 | | -#line 625 "pikchr.y" |
| 2587 | +#line 637 "pikchr.y" |
| 2576 | 2588 | { pik_set_numprop(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy72); } |
| 2577 | | -#line 2602 "pikchr.c" |
| 2589 | +#line 2614 "pikchr.c" |
| 2578 | 2590 | break; |
| 2579 | 2591 | case 30: /* attribute ::= dashproperty expr */ |
| 2580 | | -#line 626 "pikchr.y" |
| 2592 | +#line 638 "pikchr.y" |
| 2581 | 2593 | { pik_set_dashed(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy21); } |
| 2582 | | -#line 2607 "pikchr.c" |
| 2594 | +#line 2619 "pikchr.c" |
| 2583 | 2595 | break; |
| 2584 | 2596 | case 31: /* attribute ::= dashproperty */ |
| 2585 | | -#line 627 "pikchr.y" |
| 2597 | +#line 639 "pikchr.y" |
| 2586 | 2598 | { pik_set_dashed(p,&yymsp[0].minor.yy0,0); } |
| 2587 | | -#line 2612 "pikchr.c" |
| 2599 | +#line 2624 "pikchr.c" |
| 2588 | 2600 | break; |
| 2589 | 2601 | case 32: /* attribute ::= colorproperty rvalue */ |
| 2590 | | -#line 628 "pikchr.y" |
| 2602 | +#line 640 "pikchr.y" |
| 2591 | 2603 | { pik_set_clrprop(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy21); } |
| 2592 | | -#line 2617 "pikchr.c" |
| 2604 | +#line 2629 "pikchr.c" |
| 2593 | 2605 | break; |
| 2594 | 2606 | case 33: /* attribute ::= go direction optrelexpr */ |
| 2595 | | -#line 629 "pikchr.y" |
| 2607 | +#line 641 "pikchr.y" |
| 2596 | 2608 | { pik_add_direction(p,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy72);} |
| 2597 | | -#line 2622 "pikchr.c" |
| 2609 | +#line 2634 "pikchr.c" |
| 2598 | 2610 | break; |
| 2599 | 2611 | case 34: /* attribute ::= go direction even position */ |
| 2600 | | -#line 630 "pikchr.y" |
| 2612 | +#line 642 "pikchr.y" |
| 2601 | 2613 | {pik_evenwith(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy63);} |
| 2602 | | -#line 2627 "pikchr.c" |
| 2614 | +#line 2639 "pikchr.c" |
| 2603 | 2615 | break; |
| 2604 | 2616 | case 35: /* attribute ::= CLOSE */ |
| 2605 | | -#line 631 "pikchr.y" |
| 2617 | +#line 643 "pikchr.y" |
| 2606 | 2618 | { pik_close_path(p,&yymsp[0].minor.yy0); } |
| 2607 | | -#line 2632 "pikchr.c" |
| 2619 | +#line 2644 "pikchr.c" |
| 2608 | 2620 | break; |
| 2609 | 2621 | case 36: /* attribute ::= CHOP */ |
| 2610 | | -#line 632 "pikchr.y" |
| 2622 | +#line 644 "pikchr.y" |
| 2611 | 2623 | { p->cur->bChop = 1; } |
| 2612 | | -#line 2637 "pikchr.c" |
| 2624 | +#line 2649 "pikchr.c" |
| 2613 | 2625 | break; |
| 2614 | 2626 | case 37: /* attribute ::= FROM position */ |
| 2615 | | -#line 633 "pikchr.y" |
| 2627 | +#line 645 "pikchr.y" |
| 2616 | 2628 | { pik_set_from(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy63); } |
| 2617 | | -#line 2642 "pikchr.c" |
| 2629 | +#line 2654 "pikchr.c" |
| 2618 | 2630 | break; |
| 2619 | 2631 | case 38: /* attribute ::= TO position */ |
| 2620 | | -#line 634 "pikchr.y" |
| 2632 | +#line 646 "pikchr.y" |
| 2621 | 2633 | { pik_add_to(p,p->cur,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy63); } |
| 2622 | | -#line 2647 "pikchr.c" |
| 2634 | +#line 2659 "pikchr.c" |
| 2623 | 2635 | break; |
| 2624 | 2636 | case 39: /* attribute ::= THEN */ |
| 2625 | | -#line 635 "pikchr.y" |
| 2637 | +#line 647 "pikchr.y" |
| 2626 | 2638 | { pik_then(p, &yymsp[0].minor.yy0, p->cur); } |
| 2627 | | -#line 2652 "pikchr.c" |
| 2639 | +#line 2664 "pikchr.c" |
| 2628 | 2640 | break; |
| 2629 | 2641 | case 40: /* attribute ::= THEN optrelexpr HEADING expr */ |
| 2630 | 2642 | case 42: /* attribute ::= GO optrelexpr HEADING expr */ yytestcase(yyruleno==42); |
| 2631 | | -#line 637 "pikchr.y" |
| 2643 | +#line 649 "pikchr.y" |
| 2632 | 2644 | {pik_move_hdg(p,&yymsp[-2].minor.yy72,&yymsp[-1].minor.yy0,yymsp[0].minor.yy21,0,&yymsp[-3].minor.yy0);} |
| 2633 | | -#line 2658 "pikchr.c" |
| 2645 | +#line 2670 "pikchr.c" |
| 2634 | 2646 | break; |
| 2635 | 2647 | case 41: /* attribute ::= THEN optrelexpr EDGEPT */ |
| 2636 | 2648 | case 43: /* attribute ::= GO optrelexpr EDGEPT */ yytestcase(yyruleno==43); |
| 2637 | | -#line 638 "pikchr.y" |
| 2649 | +#line 650 "pikchr.y" |
| 2638 | 2650 | {pik_move_hdg(p,&yymsp[-1].minor.yy72,0,0,&yymsp[0].minor.yy0,&yymsp[-2].minor.yy0);} |
| 2639 | | -#line 2664 "pikchr.c" |
| 2651 | +#line 2676 "pikchr.c" |
| 2640 | 2652 | break; |
| 2641 | 2653 | case 44: /* attribute ::= AT position */ |
| 2642 | | -#line 643 "pikchr.y" |
| 2654 | +#line 655 "pikchr.y" |
| 2643 | 2655 | { pik_set_at(p,0,&yymsp[0].minor.yy63,&yymsp[-1].minor.yy0); } |
| 2644 | | -#line 2669 "pikchr.c" |
| 2656 | +#line 2681 "pikchr.c" |
| 2645 | 2657 | break; |
| 2646 | 2658 | case 45: /* attribute ::= SAME */ |
| 2647 | | -#line 645 "pikchr.y" |
| 2659 | +#line 657 "pikchr.y" |
| 2648 | 2660 | {pik_same(p,0,&yymsp[0].minor.yy0);} |
| 2649 | | -#line 2674 "pikchr.c" |
| 2661 | +#line 2686 "pikchr.c" |
| 2650 | 2662 | break; |
| 2651 | 2663 | case 46: /* attribute ::= SAME AS object */ |
| 2652 | | -#line 646 "pikchr.y" |
| 2664 | +#line 658 "pikchr.y" |
| 2653 | 2665 | {pik_same(p,yymsp[0].minor.yy162,&yymsp[-2].minor.yy0);} |
| 2654 | | -#line 2679 "pikchr.c" |
| 2666 | +#line 2691 "pikchr.c" |
| 2655 | 2667 | break; |
| 2656 | 2668 | case 47: /* attribute ::= STRING textposition */ |
| 2657 | | -#line 647 "pikchr.y" |
| 2669 | +#line 659 "pikchr.y" |
| 2658 | 2670 | {pik_add_txt(p,&yymsp[-1].minor.yy0,yymsp[0].minor.yy188);} |
| 2659 | | -#line 2684 "pikchr.c" |
| 2671 | +#line 2696 "pikchr.c" |
| 2660 | 2672 | break; |
| 2661 | 2673 | case 48: /* attribute ::= FIT */ |
| 2662 | | -#line 648 "pikchr.y" |
| 2674 | +#line 660 "pikchr.y" |
| 2663 | 2675 | {pik_size_to_fit(p,&yymsp[0].minor.yy0,3); } |
| 2664 | | -#line 2689 "pikchr.c" |
| 2676 | +#line 2701 "pikchr.c" |
| 2665 | 2677 | break; |
| 2666 | 2678 | case 49: /* attribute ::= BEHIND object */ |
| 2667 | | -#line 649 "pikchr.y" |
| 2679 | +#line 661 "pikchr.y" |
| 2668 | 2680 | {pik_behind(p,yymsp[0].minor.yy162);} |
| 2669 | | -#line 2694 "pikchr.c" |
| 2681 | +#line 2706 "pikchr.c" |
| 2670 | 2682 | break; |
| 2671 | 2683 | case 50: /* withclause ::= DOT_E edge AT position */ |
| 2672 | 2684 | case 51: /* withclause ::= edge AT position */ yytestcase(yyruleno==51); |
| 2673 | | -#line 657 "pikchr.y" |
| 2685 | +#line 669 "pikchr.y" |
| 2674 | 2686 | { pik_set_at(p,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy63,&yymsp[-1].minor.yy0); } |
| 2675 | | -#line 2700 "pikchr.c" |
| 2687 | +#line 2712 "pikchr.c" |
| 2676 | 2688 | break; |
| 2677 | 2689 | case 52: /* numproperty ::= HEIGHT|WIDTH|RADIUS|DIAMETER|THICKNESS */ |
| 2678 | | -#line 661 "pikchr.y" |
| 2690 | +#line 673 "pikchr.y" |
| 2679 | 2691 | {yylhsminor.yy0 = yymsp[0].minor.yy0;} |
| 2680 | | -#line 2705 "pikchr.c" |
| 2692 | +#line 2717 "pikchr.c" |
| 2681 | 2693 | yymsp[0].minor.yy0 = yylhsminor.yy0; |
| 2682 | 2694 | break; |
| 2683 | 2695 | case 53: /* boolproperty ::= CW */ |
| 2684 | | -#line 672 "pikchr.y" |
| 2696 | +#line 684 "pikchr.y" |
| 2685 | 2697 | {p->cur->cw = 1;} |
| 2686 | | -#line 2711 "pikchr.c" |
| 2698 | +#line 2723 "pikchr.c" |
| 2687 | 2699 | break; |
| 2688 | 2700 | case 54: /* boolproperty ::= CCW */ |
| 2689 | | -#line 673 "pikchr.y" |
| 2701 | +#line 685 "pikchr.y" |
| 2690 | 2702 | {p->cur->cw = 0;} |
| 2691 | | -#line 2716 "pikchr.c" |
| 2703 | +#line 2728 "pikchr.c" |
| 2692 | 2704 | break; |
| 2693 | 2705 | case 55: /* boolproperty ::= LARROW */ |
| 2694 | | -#line 674 "pikchr.y" |
| 2706 | +#line 686 "pikchr.y" |
| 2695 | 2707 | {p->cur->larrow=1; p->cur->rarrow=0; } |
| 2696 | | -#line 2721 "pikchr.c" |
| 2708 | +#line 2733 "pikchr.c" |
| 2697 | 2709 | break; |
| 2698 | 2710 | case 56: /* boolproperty ::= RARROW */ |
| 2699 | | -#line 675 "pikchr.y" |
| 2711 | +#line 687 "pikchr.y" |
| 2700 | 2712 | {p->cur->larrow=0; p->cur->rarrow=1; } |
| 2701 | | -#line 2726 "pikchr.c" |
| 2713 | +#line 2738 "pikchr.c" |
| 2702 | 2714 | break; |
| 2703 | 2715 | case 57: /* boolproperty ::= LRARROW */ |
| 2704 | | -#line 676 "pikchr.y" |
| 2716 | +#line 688 "pikchr.y" |
| 2705 | 2717 | {p->cur->larrow=1; p->cur->rarrow=1; } |
| 2706 | | -#line 2731 "pikchr.c" |
| 2718 | +#line 2743 "pikchr.c" |
| 2707 | 2719 | break; |
| 2708 | 2720 | case 58: /* boolproperty ::= INVIS */ |
| 2709 | | -#line 677 "pikchr.y" |
| 2721 | +#line 689 "pikchr.y" |
| 2710 | 2722 | {p->cur->sw = -0.00001;} |
| 2711 | | -#line 2736 "pikchr.c" |
| 2723 | +#line 2748 "pikchr.c" |
| 2712 | 2724 | break; |
| 2713 | 2725 | case 59: /* boolproperty ::= THICK */ |
| 2714 | | -#line 678 "pikchr.y" |
| 2726 | +#line 690 "pikchr.y" |
| 2715 | 2727 | {p->cur->sw *= 1.5;} |
| 2716 | | -#line 2741 "pikchr.c" |
| 2728 | +#line 2753 "pikchr.c" |
| 2717 | 2729 | break; |
| 2718 | 2730 | case 60: /* boolproperty ::= THIN */ |
| 2719 | | -#line 679 "pikchr.y" |
| 2731 | +#line 691 "pikchr.y" |
| 2720 | 2732 | {p->cur->sw *= 0.67;} |
| 2721 | | -#line 2746 "pikchr.c" |
| 2733 | +#line 2758 "pikchr.c" |
| 2722 | 2734 | break; |
| 2723 | 2735 | case 61: /* boolproperty ::= SOLID */ |
| 2724 | | -#line 680 "pikchr.y" |
| 2736 | +#line 692 "pikchr.y" |
| 2725 | 2737 | {p->cur->sw = pik_value(p,"thickness",9,0); |
| 2726 | 2738 | p->cur->dotted = p->cur->dashed = 0.0;} |
| 2727 | | -#line 2752 "pikchr.c" |
| 2739 | +#line 2764 "pikchr.c" |
| 2728 | 2740 | break; |
| 2729 | 2741 | case 62: /* textposition ::= */ |
| 2730 | | -#line 683 "pikchr.y" |
| 2742 | +#line 695 "pikchr.y" |
| 2731 | 2743 | {yymsp[1].minor.yy188 = 0;} |
| 2732 | | -#line 2757 "pikchr.c" |
| 2744 | +#line 2769 "pikchr.c" |
| 2733 | 2745 | break; |
| 2734 | 2746 | case 63: /* textposition ::= textposition CENTER|LJUST|RJUST|ABOVE|BELOW|ITALIC|BOLD|MONO|ALIGNED|BIG|SMALL */ |
| 2735 | | -#line 686 "pikchr.y" |
| 2747 | +#line 698 "pikchr.y" |
| 2736 | 2748 | {yylhsminor.yy188 = (short int)pik_text_position(yymsp[-1].minor.yy188,&yymsp[0].minor.yy0);} |
| 2737 | | -#line 2762 "pikchr.c" |
| 2749 | +#line 2774 "pikchr.c" |
| 2738 | 2750 | yymsp[-1].minor.yy188 = yylhsminor.yy188; |
| 2739 | 2751 | break; |
| 2740 | 2752 | case 64: /* position ::= expr COMMA expr */ |
| 2741 | | -#line 689 "pikchr.y" |
| 2753 | +#line 701 "pikchr.y" |
| 2742 | 2754 | {yylhsminor.yy63.x=yymsp[-2].minor.yy21; yylhsminor.yy63.y=yymsp[0].minor.yy21;} |
| 2743 | | -#line 2768 "pikchr.c" |
| 2755 | +#line 2780 "pikchr.c" |
| 2744 | 2756 | yymsp[-2].minor.yy63 = yylhsminor.yy63; |
| 2745 | 2757 | break; |
| 2746 | 2758 | case 65: /* position ::= place PLUS expr COMMA expr */ |
| 2747 | | -#line 691 "pikchr.y" |
| 2759 | +#line 703 "pikchr.y" |
| 2748 | 2760 | {yylhsminor.yy63.x=yymsp[-4].minor.yy63.x+yymsp[-2].minor.yy21; yylhsminor.yy63.y=yymsp[-4].minor.yy63.y+yymsp[0].minor.yy21;} |
| 2749 | | -#line 2774 "pikchr.c" |
| 2761 | +#line 2786 "pikchr.c" |
| 2750 | 2762 | yymsp[-4].minor.yy63 = yylhsminor.yy63; |
| 2751 | 2763 | break; |
| 2752 | 2764 | case 66: /* position ::= place MINUS expr COMMA expr */ |
| 2753 | | -#line 692 "pikchr.y" |
| 2765 | +#line 704 "pikchr.y" |
| 2754 | 2766 | {yylhsminor.yy63.x=yymsp[-4].minor.yy63.x-yymsp[-2].minor.yy21; yylhsminor.yy63.y=yymsp[-4].minor.yy63.y-yymsp[0].minor.yy21;} |
| 2755 | | -#line 2780 "pikchr.c" |
| 2767 | +#line 2792 "pikchr.c" |
| 2756 | 2768 | yymsp[-4].minor.yy63 = yylhsminor.yy63; |
| 2757 | 2769 | break; |
| 2758 | 2770 | case 67: /* position ::= place PLUS LP expr COMMA expr RP */ |
| 2759 | | -#line 694 "pikchr.y" |
| 2771 | +#line 706 "pikchr.y" |
| 2760 | 2772 | {yylhsminor.yy63.x=yymsp[-6].minor.yy63.x+yymsp[-3].minor.yy21; yylhsminor.yy63.y=yymsp[-6].minor.yy63.y+yymsp[-1].minor.yy21;} |
| 2761 | | -#line 2786 "pikchr.c" |
| 2773 | +#line 2798 "pikchr.c" |
| 2762 | 2774 | yymsp[-6].minor.yy63 = yylhsminor.yy63; |
| 2763 | 2775 | break; |
| 2764 | 2776 | case 68: /* position ::= place MINUS LP expr COMMA expr RP */ |
| 2765 | | -#line 696 "pikchr.y" |
| 2777 | +#line 708 "pikchr.y" |
| 2766 | 2778 | {yylhsminor.yy63.x=yymsp[-6].minor.yy63.x-yymsp[-3].minor.yy21; yylhsminor.yy63.y=yymsp[-6].minor.yy63.y-yymsp[-1].minor.yy21;} |
| 2767 | | -#line 2792 "pikchr.c" |
| 2779 | +#line 2804 "pikchr.c" |
| 2768 | 2780 | yymsp[-6].minor.yy63 = yylhsminor.yy63; |
| 2769 | 2781 | break; |
| 2770 | 2782 | case 69: /* position ::= LP position COMMA position RP */ |
| 2771 | | -#line 697 "pikchr.y" |
| 2783 | +#line 709 "pikchr.y" |
| 2772 | 2784 | {yymsp[-4].minor.yy63.x=yymsp[-3].minor.yy63.x; yymsp[-4].minor.yy63.y=yymsp[-1].minor.yy63.y;} |
| 2773 | | -#line 2798 "pikchr.c" |
| 2785 | +#line 2810 "pikchr.c" |
| 2774 | 2786 | break; |
| 2775 | 2787 | case 70: /* position ::= LP position RP */ |
| 2776 | | -#line 698 "pikchr.y" |
| 2788 | +#line 710 "pikchr.y" |
| 2777 | 2789 | {yymsp[-2].minor.yy63=yymsp[-1].minor.yy63;} |
| 2778 | | -#line 2803 "pikchr.c" |
| 2790 | +#line 2815 "pikchr.c" |
| 2779 | 2791 | break; |
| 2780 | 2792 | case 71: /* position ::= expr between position AND position */ |
| 2781 | | -#line 700 "pikchr.y" |
| 2793 | +#line 712 "pikchr.y" |
| 2782 | 2794 | {yylhsminor.yy63 = pik_position_between(yymsp[-4].minor.yy21,yymsp[-2].minor.yy63,yymsp[0].minor.yy63);} |
| 2783 | | -#line 2808 "pikchr.c" |
| 2795 | +#line 2820 "pikchr.c" |
| 2784 | 2796 | yymsp[-4].minor.yy63 = yylhsminor.yy63; |
| 2785 | 2797 | break; |
| 2786 | 2798 | case 72: /* position ::= expr LT position COMMA position GT */ |
| 2787 | | -#line 702 "pikchr.y" |
| 2799 | +#line 714 "pikchr.y" |
| 2788 | 2800 | {yylhsminor.yy63 = pik_position_between(yymsp[-5].minor.yy21,yymsp[-3].minor.yy63,yymsp[-1].minor.yy63);} |
| 2789 | | -#line 2814 "pikchr.c" |
| 2801 | +#line 2826 "pikchr.c" |
| 2790 | 2802 | yymsp[-5].minor.yy63 = yylhsminor.yy63; |
| 2791 | 2803 | break; |
| 2792 | 2804 | case 73: /* position ::= expr ABOVE position */ |
| 2793 | | -#line 703 "pikchr.y" |
| 2805 | +#line 715 "pikchr.y" |
| 2794 | 2806 | {yylhsminor.yy63=yymsp[0].minor.yy63; yylhsminor.yy63.y += yymsp[-2].minor.yy21;} |
| 2795 | | -#line 2820 "pikchr.c" |
| 2807 | +#line 2832 "pikchr.c" |
| 2796 | 2808 | yymsp[-2].minor.yy63 = yylhsminor.yy63; |
| 2797 | 2809 | break; |
| 2798 | 2810 | case 74: /* position ::= expr BELOW position */ |
| 2799 | | -#line 704 "pikchr.y" |
| 2811 | +#line 716 "pikchr.y" |
| 2800 | 2812 | {yylhsminor.yy63=yymsp[0].minor.yy63; yylhsminor.yy63.y -= yymsp[-2].minor.yy21;} |
| 2801 | | -#line 2826 "pikchr.c" |
| 2813 | +#line 2838 "pikchr.c" |
| 2802 | 2814 | yymsp[-2].minor.yy63 = yylhsminor.yy63; |
| 2803 | 2815 | break; |
| 2804 | 2816 | case 75: /* position ::= expr LEFT OF position */ |
| 2805 | | -#line 705 "pikchr.y" |
| 2817 | +#line 717 "pikchr.y" |
| 2806 | 2818 | {yylhsminor.yy63=yymsp[0].minor.yy63; yylhsminor.yy63.x -= yymsp[-3].minor.yy21;} |
| 2807 | | -#line 2832 "pikchr.c" |
| 2819 | +#line 2844 "pikchr.c" |
| 2808 | 2820 | yymsp[-3].minor.yy63 = yylhsminor.yy63; |
| 2809 | 2821 | break; |
| 2810 | 2822 | case 76: /* position ::= expr RIGHT OF position */ |
| 2811 | | -#line 706 "pikchr.y" |
| 2823 | +#line 718 "pikchr.y" |
| 2812 | 2824 | {yylhsminor.yy63=yymsp[0].minor.yy63; yylhsminor.yy63.x += yymsp[-3].minor.yy21;} |
| 2813 | | -#line 2838 "pikchr.c" |
| 2825 | +#line 2850 "pikchr.c" |
| 2814 | 2826 | yymsp[-3].minor.yy63 = yylhsminor.yy63; |
| 2815 | 2827 | break; |
| 2816 | 2828 | case 77: /* position ::= expr ON HEADING EDGEPT OF position */ |
| 2817 | | -#line 708 "pikchr.y" |
| 2829 | +#line 720 "pikchr.y" |
| 2818 | 2830 | {yylhsminor.yy63 = pik_position_at_hdg(yymsp[-5].minor.yy21,&yymsp[-2].minor.yy0,yymsp[0].minor.yy63);} |
| 2819 | | -#line 2844 "pikchr.c" |
| 2831 | +#line 2856 "pikchr.c" |
| 2820 | 2832 | yymsp[-5].minor.yy63 = yylhsminor.yy63; |
| 2821 | 2833 | break; |
| 2822 | 2834 | case 78: /* position ::= expr HEADING EDGEPT OF position */ |
| 2823 | | -#line 710 "pikchr.y" |
| 2835 | +#line 722 "pikchr.y" |
| 2824 | 2836 | {yylhsminor.yy63 = pik_position_at_hdg(yymsp[-4].minor.yy21,&yymsp[-2].minor.yy0,yymsp[0].minor.yy63);} |
| 2825 | | -#line 2850 "pikchr.c" |
| 2837 | +#line 2862 "pikchr.c" |
| 2826 | 2838 | yymsp[-4].minor.yy63 = yylhsminor.yy63; |
| 2827 | 2839 | break; |
| 2828 | 2840 | case 79: /* position ::= expr EDGEPT OF position */ |
| 2829 | | -#line 712 "pikchr.y" |
| 2841 | +#line 724 "pikchr.y" |
| 2830 | 2842 | {yylhsminor.yy63 = pik_position_at_hdg(yymsp[-3].minor.yy21,&yymsp[-2].minor.yy0,yymsp[0].minor.yy63);} |
| 2831 | | -#line 2856 "pikchr.c" |
| 2843 | +#line 2868 "pikchr.c" |
| 2832 | 2844 | yymsp[-3].minor.yy63 = yylhsminor.yy63; |
| 2833 | 2845 | break; |
| 2834 | 2846 | case 80: /* position ::= expr ON HEADING expr FROM position */ |
| 2835 | | -#line 714 "pikchr.y" |
| 2847 | +#line 726 "pikchr.y" |
| 2836 | 2848 | {yylhsminor.yy63 = pik_position_at_angle(yymsp[-5].minor.yy21,yymsp[-2].minor.yy21,yymsp[0].minor.yy63);} |
| 2837 | | -#line 2862 "pikchr.c" |
| 2849 | +#line 2874 "pikchr.c" |
| 2838 | 2850 | yymsp[-5].minor.yy63 = yylhsminor.yy63; |
| 2839 | 2851 | break; |
| 2840 | 2852 | case 81: /* position ::= expr HEADING expr FROM position */ |
| 2841 | | -#line 716 "pikchr.y" |
| 2853 | +#line 728 "pikchr.y" |
| 2842 | 2854 | {yylhsminor.yy63 = pik_position_at_angle(yymsp[-4].minor.yy21,yymsp[-2].minor.yy21,yymsp[0].minor.yy63);} |
| 2843 | | -#line 2868 "pikchr.c" |
| 2855 | +#line 2880 "pikchr.c" |
| 2844 | 2856 | yymsp[-4].minor.yy63 = yylhsminor.yy63; |
| 2845 | 2857 | break; |
| 2846 | 2858 | case 82: /* place ::= edge OF object */ |
| 2847 | | -#line 728 "pikchr.y" |
| 2859 | +#line 740 "pikchr.y" |
| 2848 | 2860 | {yylhsminor.yy63 = pik_place_of_elem(p,yymsp[0].minor.yy162,&yymsp[-2].minor.yy0);} |
| 2849 | | -#line 2874 "pikchr.c" |
| 2861 | +#line 2886 "pikchr.c" |
| 2850 | 2862 | yymsp[-2].minor.yy63 = yylhsminor.yy63; |
| 2851 | 2863 | break; |
| 2852 | 2864 | case 83: /* place2 ::= object */ |
| 2853 | | -#line 729 "pikchr.y" |
| 2865 | +#line 741 "pikchr.y" |
| 2854 | 2866 | {yylhsminor.yy63 = pik_place_of_elem(p,yymsp[0].minor.yy162,0);} |
| 2855 | | -#line 2880 "pikchr.c" |
| 2867 | +#line 2892 "pikchr.c" |
| 2856 | 2868 | yymsp[0].minor.yy63 = yylhsminor.yy63; |
| 2857 | 2869 | break; |
| 2858 | 2870 | case 84: /* place2 ::= object DOT_E edge */ |
| 2859 | | -#line 730 "pikchr.y" |
| 2871 | +#line 742 "pikchr.y" |
| 2860 | 2872 | {yylhsminor.yy63 = pik_place_of_elem(p,yymsp[-2].minor.yy162,&yymsp[0].minor.yy0);} |
| 2861 | | -#line 2886 "pikchr.c" |
| 2873 | +#line 2898 "pikchr.c" |
| 2862 | 2874 | yymsp[-2].minor.yy63 = yylhsminor.yy63; |
| 2863 | 2875 | break; |
| 2864 | 2876 | case 85: /* place2 ::= NTH VERTEX OF object */ |
| 2865 | | -#line 731 "pikchr.y" |
| 2877 | +#line 743 "pikchr.y" |
| 2866 | 2878 | {yylhsminor.yy63 = pik_nth_vertex(p,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,yymsp[0].minor.yy162);} |
| 2867 | | -#line 2892 "pikchr.c" |
| 2879 | +#line 2904 "pikchr.c" |
| 2868 | 2880 | yymsp[-3].minor.yy63 = yylhsminor.yy63; |
| 2869 | 2881 | break; |
| 2870 | 2882 | case 86: /* object ::= nth */ |
| 2871 | | -#line 743 "pikchr.y" |
| 2883 | +#line 755 "pikchr.y" |
| 2872 | 2884 | {yylhsminor.yy162 = pik_find_nth(p,0,&yymsp[0].minor.yy0);} |
| 2873 | | -#line 2898 "pikchr.c" |
| 2885 | +#line 2910 "pikchr.c" |
| 2874 | 2886 | yymsp[0].minor.yy162 = yylhsminor.yy162; |
| 2875 | 2887 | break; |
| 2876 | 2888 | case 87: /* object ::= nth OF|IN object */ |
| 2877 | | -#line 744 "pikchr.y" |
| 2889 | +#line 756 "pikchr.y" |
| 2878 | 2890 | {yylhsminor.yy162 = pik_find_nth(p,yymsp[0].minor.yy162,&yymsp[-2].minor.yy0);} |
| 2879 | | -#line 2904 "pikchr.c" |
| 2891 | +#line 2916 "pikchr.c" |
| 2880 | 2892 | yymsp[-2].minor.yy162 = yylhsminor.yy162; |
| 2881 | 2893 | break; |
| 2882 | 2894 | case 88: /* objectname ::= THIS */ |
| 2883 | | -#line 746 "pikchr.y" |
| 2895 | +#line 758 "pikchr.y" |
| 2884 | 2896 | {yymsp[0].minor.yy162 = p->cur;} |
| 2885 | | -#line 2910 "pikchr.c" |
| 2897 | +#line 2922 "pikchr.c" |
| 2886 | 2898 | break; |
| 2887 | 2899 | case 89: /* objectname ::= PLACENAME */ |
| 2888 | | -#line 747 "pikchr.y" |
| 2900 | +#line 759 "pikchr.y" |
| 2889 | 2901 | {yylhsminor.yy162 = pik_find_byname(p,0,&yymsp[0].minor.yy0);} |
| 2890 | | -#line 2915 "pikchr.c" |
| 2902 | +#line 2927 "pikchr.c" |
| 2891 | 2903 | yymsp[0].minor.yy162 = yylhsminor.yy162; |
| 2892 | 2904 | break; |
| 2893 | 2905 | case 90: /* objectname ::= objectname DOT_U PLACENAME */ |
| 2894 | | -#line 749 "pikchr.y" |
| 2906 | +#line 761 "pikchr.y" |
| 2895 | 2907 | {yylhsminor.yy162 = pik_find_byname(p,yymsp[-2].minor.yy162,&yymsp[0].minor.yy0);} |
| 2896 | | -#line 2921 "pikchr.c" |
| 2908 | +#line 2933 "pikchr.c" |
| 2897 | 2909 | yymsp[-2].minor.yy162 = yylhsminor.yy162; |
| 2898 | 2910 | break; |
| 2899 | 2911 | case 91: /* nth ::= NTH CLASSNAME */ |
| 2900 | | -#line 751 "pikchr.y" |
| 2912 | +#line 763 "pikchr.y" |
| 2901 | 2913 | {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-1].minor.yy0); } |
| 2902 | | -#line 2927 "pikchr.c" |
| 2914 | +#line 2939 "pikchr.c" |
| 2903 | 2915 | yymsp[-1].minor.yy0 = yylhsminor.yy0; |
| 2904 | 2916 | break; |
| 2905 | 2917 | case 92: /* nth ::= NTH LAST CLASSNAME */ |
| 2906 | | -#line 752 "pikchr.y" |
| 2918 | +#line 764 "pikchr.y" |
| 2907 | 2919 | {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-2].minor.yy0); } |
| 2908 | | -#line 2933 "pikchr.c" |
| 2920 | +#line 2945 "pikchr.c" |
| 2909 | 2921 | yymsp[-2].minor.yy0 = yylhsminor.yy0; |
| 2910 | 2922 | break; |
| 2911 | 2923 | case 93: /* nth ::= LAST CLASSNAME */ |
| 2912 | | -#line 753 "pikchr.y" |
| 2924 | +#line 765 "pikchr.y" |
| 2913 | 2925 | {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.eCode = -1;} |
| 2914 | | -#line 2939 "pikchr.c" |
| 2926 | +#line 2951 "pikchr.c" |
| 2915 | 2927 | break; |
| 2916 | 2928 | case 94: /* nth ::= LAST */ |
| 2917 | | -#line 754 "pikchr.y" |
| 2929 | +#line 766 "pikchr.y" |
| 2918 | 2930 | {yylhsminor.yy0=yymsp[0].minor.yy0; yylhsminor.yy0.eCode = -1;} |
| 2919 | | -#line 2944 "pikchr.c" |
| 2931 | +#line 2956 "pikchr.c" |
| 2920 | 2932 | yymsp[0].minor.yy0 = yylhsminor.yy0; |
| 2921 | 2933 | break; |
| 2922 | 2934 | case 95: /* nth ::= NTH LB RB */ |
| 2923 | | -#line 755 "pikchr.y" |
| 2935 | +#line 767 "pikchr.y" |
| 2924 | 2936 | {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = pik_nth_value(p,&yymsp[-2].minor.yy0);} |
| 2925 | | -#line 2950 "pikchr.c" |
| 2937 | +#line 2962 "pikchr.c" |
| 2926 | 2938 | yymsp[-2].minor.yy0 = yylhsminor.yy0; |
| 2927 | 2939 | break; |
| 2928 | 2940 | case 96: /* nth ::= NTH LAST LB RB */ |
| 2929 | | -#line 756 "pikchr.y" |
| 2941 | +#line 768 "pikchr.y" |
| 2930 | 2942 | {yylhsminor.yy0=yymsp[-1].minor.yy0; yylhsminor.yy0.eCode = -pik_nth_value(p,&yymsp[-3].minor.yy0);} |
| 2931 | | -#line 2956 "pikchr.c" |
| 2943 | +#line 2968 "pikchr.c" |
| 2932 | 2944 | yymsp[-3].minor.yy0 = yylhsminor.yy0; |
| 2933 | 2945 | break; |
| 2934 | 2946 | case 97: /* nth ::= LAST LB RB */ |
| 2935 | | -#line 757 "pikchr.y" |
| 2947 | +#line 769 "pikchr.y" |
| 2936 | 2948 | {yymsp[-2].minor.yy0=yymsp[-1].minor.yy0; yymsp[-2].minor.yy0.eCode = -1; } |
| 2937 | | -#line 2962 "pikchr.c" |
| 2949 | +#line 2974 "pikchr.c" |
| 2938 | 2950 | break; |
| 2939 | 2951 | case 98: /* expr ::= expr PLUS expr */ |
| 2940 | | -#line 759 "pikchr.y" |
| 2952 | +#line 771 "pikchr.y" |
| 2941 | 2953 | {yylhsminor.yy21=yymsp[-2].minor.yy21+yymsp[0].minor.yy21;} |
| 2942 | | -#line 2967 "pikchr.c" |
| 2954 | +#line 2979 "pikchr.c" |
| 2943 | 2955 | yymsp[-2].minor.yy21 = yylhsminor.yy21; |
| 2944 | 2956 | break; |
| 2945 | 2957 | case 99: /* expr ::= expr MINUS expr */ |
| 2946 | | -#line 760 "pikchr.y" |
| 2958 | +#line 772 "pikchr.y" |
| 2947 | 2959 | {yylhsminor.yy21=yymsp[-2].minor.yy21-yymsp[0].minor.yy21;} |
| 2948 | | -#line 2973 "pikchr.c" |
| 2960 | +#line 2985 "pikchr.c" |
| 2949 | 2961 | yymsp[-2].minor.yy21 = yylhsminor.yy21; |
| 2950 | 2962 | break; |
| 2951 | 2963 | case 100: /* expr ::= expr STAR expr */ |
| 2952 | | -#line 761 "pikchr.y" |
| 2964 | +#line 773 "pikchr.y" |
| 2953 | 2965 | {yylhsminor.yy21=yymsp[-2].minor.yy21*yymsp[0].minor.yy21;} |
| 2954 | | -#line 2979 "pikchr.c" |
| 2966 | +#line 2991 "pikchr.c" |
| 2955 | 2967 | yymsp[-2].minor.yy21 = yylhsminor.yy21; |
| 2956 | 2968 | break; |
| 2957 | 2969 | case 101: /* expr ::= expr SLASH expr */ |
| 2958 | | -#line 762 "pikchr.y" |
| 2970 | +#line 774 "pikchr.y" |
| 2959 | 2971 | { |
| 2960 | 2972 | if( yymsp[0].minor.yy21==0.0 ){ pik_error(p, &yymsp[-1].minor.yy0, "division by zero"); yylhsminor.yy21 = 0.0; } |
| 2961 | 2973 | else{ yylhsminor.yy21 = yymsp[-2].minor.yy21/yymsp[0].minor.yy21; } |
| 2962 | 2974 | } |
| 2963 | | -#line 2988 "pikchr.c" |
| 2975 | +#line 3000 "pikchr.c" |
| 2964 | 2976 | yymsp[-2].minor.yy21 = yylhsminor.yy21; |
| 2965 | 2977 | break; |
| 2966 | 2978 | case 102: /* expr ::= MINUS expr */ |
| 2967 | | -#line 766 "pikchr.y" |
| 2979 | +#line 778 "pikchr.y" |
| 2968 | 2980 | {yymsp[-1].minor.yy21=-yymsp[0].minor.yy21;} |
| 2969 | | -#line 2994 "pikchr.c" |
| 2981 | +#line 3006 "pikchr.c" |
| 2970 | 2982 | break; |
| 2971 | 2983 | case 103: /* expr ::= PLUS expr */ |
| 2972 | | -#line 767 "pikchr.y" |
| 2984 | +#line 779 "pikchr.y" |
| 2973 | 2985 | {yymsp[-1].minor.yy21=yymsp[0].minor.yy21;} |
| 2974 | | -#line 2999 "pikchr.c" |
| 2986 | +#line 3011 "pikchr.c" |
| 2975 | 2987 | break; |
| 2976 | 2988 | case 104: /* expr ::= LP expr RP */ |
| 2977 | | -#line 768 "pikchr.y" |
| 2989 | +#line 780 "pikchr.y" |
| 2978 | 2990 | {yymsp[-2].minor.yy21=yymsp[-1].minor.yy21;} |
| 2979 | | -#line 3004 "pikchr.c" |
| 2991 | +#line 3016 "pikchr.c" |
| 2980 | 2992 | break; |
| 2981 | 2993 | case 105: /* expr ::= LP FILL|COLOR|THICKNESS RP */ |
| 2982 | | -#line 769 "pikchr.y" |
| 2994 | +#line 781 "pikchr.y" |
| 2983 | 2995 | {yymsp[-2].minor.yy21=pik_get_var(p,&yymsp[-1].minor.yy0);} |
| 2984 | | -#line 3009 "pikchr.c" |
| 2996 | +#line 3021 "pikchr.c" |
| 2985 | 2997 | break; |
| 2986 | 2998 | case 106: /* expr ::= NUMBER */ |
| 2987 | | -#line 770 "pikchr.y" |
| 2999 | +#line 782 "pikchr.y" |
| 2988 | 3000 | {yylhsminor.yy21=pik_atof(&yymsp[0].minor.yy0);} |
| 2989 | | -#line 3014 "pikchr.c" |
| 3001 | +#line 3026 "pikchr.c" |
| 2990 | 3002 | yymsp[0].minor.yy21 = yylhsminor.yy21; |
| 2991 | 3003 | break; |
| 2992 | 3004 | case 107: /* expr ::= ID */ |
| 2993 | | -#line 771 "pikchr.y" |
| 3005 | +#line 783 "pikchr.y" |
| 2994 | 3006 | {yylhsminor.yy21=pik_get_var(p,&yymsp[0].minor.yy0);} |
| 2995 | | -#line 3020 "pikchr.c" |
| 3007 | +#line 3032 "pikchr.c" |
| 2996 | 3008 | yymsp[0].minor.yy21 = yylhsminor.yy21; |
| 2997 | 3009 | break; |
| 2998 | 3010 | case 108: /* expr ::= FUNC1 LP expr RP */ |
| 2999 | | -#line 772 "pikchr.y" |
| 3011 | +#line 784 "pikchr.y" |
| 3000 | 3012 | {yylhsminor.yy21 = pik_func(p,&yymsp[-3].minor.yy0,yymsp[-1].minor.yy21,0.0);} |
| 3001 | | -#line 3026 "pikchr.c" |
| 3013 | +#line 3038 "pikchr.c" |
| 3002 | 3014 | yymsp[-3].minor.yy21 = yylhsminor.yy21; |
| 3003 | 3015 | break; |
| 3004 | 3016 | case 109: /* expr ::= FUNC2 LP expr COMMA expr RP */ |
| 3005 | | -#line 773 "pikchr.y" |
| 3017 | +#line 785 "pikchr.y" |
| 3006 | 3018 | {yylhsminor.yy21 = pik_func(p,&yymsp[-5].minor.yy0,yymsp[-3].minor.yy21,yymsp[-1].minor.yy21);} |
| 3007 | | -#line 3032 "pikchr.c" |
| 3019 | +#line 3044 "pikchr.c" |
| 3008 | 3020 | yymsp[-5].minor.yy21 = yylhsminor.yy21; |
| 3009 | 3021 | break; |
| 3010 | 3022 | case 110: /* expr ::= DIST LP position COMMA position RP */ |
| 3011 | | -#line 774 "pikchr.y" |
| 3023 | +#line 786 "pikchr.y" |
| 3012 | 3024 | {yymsp[-5].minor.yy21 = pik_dist(&yymsp[-3].minor.yy63,&yymsp[-1].minor.yy63);} |
| 3013 | | -#line 3038 "pikchr.c" |
| 3025 | +#line 3050 "pikchr.c" |
| 3014 | 3026 | break; |
| 3015 | 3027 | case 111: /* expr ::= place2 DOT_XY X */ |
| 3016 | | -#line 775 "pikchr.y" |
| 3028 | +#line 787 "pikchr.y" |
| 3017 | 3029 | {yylhsminor.yy21 = yymsp[-2].minor.yy63.x;} |
| 3018 | | -#line 3043 "pikchr.c" |
| 3030 | +#line 3055 "pikchr.c" |
| 3019 | 3031 | yymsp[-2].minor.yy21 = yylhsminor.yy21; |
| 3020 | 3032 | break; |
| 3021 | 3033 | case 112: /* expr ::= place2 DOT_XY Y */ |
| 3022 | | -#line 776 "pikchr.y" |
| 3034 | +#line 788 "pikchr.y" |
| 3023 | 3035 | {yylhsminor.yy21 = yymsp[-2].minor.yy63.y;} |
| 3024 | | -#line 3049 "pikchr.c" |
| 3036 | +#line 3061 "pikchr.c" |
| 3025 | 3037 | yymsp[-2].minor.yy21 = yylhsminor.yy21; |
| 3026 | 3038 | break; |
| 3027 | 3039 | case 113: /* expr ::= object DOT_L numproperty */ |
| 3028 | 3040 | case 114: /* expr ::= object DOT_L dashproperty */ yytestcase(yyruleno==114); |
| 3029 | 3041 | case 115: /* expr ::= object DOT_L colorproperty */ yytestcase(yyruleno==115); |
| 3030 | | -#line 777 "pikchr.y" |
| 3042 | +#line 789 "pikchr.y" |
| 3031 | 3043 | {yylhsminor.yy21=pik_property_of(yymsp[-2].minor.yy162,&yymsp[0].minor.yy0);} |
| 3032 | | -#line 3057 "pikchr.c" |
| 3044 | +#line 3069 "pikchr.c" |
| 3033 | 3045 | yymsp[-2].minor.yy21 = yylhsminor.yy21; |
| 3034 | 3046 | break; |
| 3035 | 3047 | default: |
| 3036 | 3048 | /* (116) lvalue ::= ID */ yytestcase(yyruleno==116); |
| 3037 | 3049 | /* (117) lvalue ::= FILL */ yytestcase(yyruleno==117); |
| | @@ -3130,19 +3142,19 @@ |
| 3130 | 3142 | ){ |
| 3131 | 3143 | pik_parserARG_FETCH |
| 3132 | 3144 | pik_parserCTX_FETCH |
| 3133 | 3145 | #define TOKEN yyminor |
| 3134 | 3146 | /************ Begin %syntax_error code ****************************************/ |
| 3135 | | -#line 537 "pikchr.y" |
| 3147 | +#line 549 "pikchr.y" |
| 3136 | 3148 | |
| 3137 | 3149 | if( TOKEN.z && TOKEN.z[0] ){ |
| 3138 | 3150 | pik_error(p, &TOKEN, "syntax error"); |
| 3139 | 3151 | }else{ |
| 3140 | 3152 | pik_error(p, 0, "syntax error"); |
| 3141 | 3153 | } |
| 3142 | 3154 | UNUSED_PARAMETER(yymajor); |
| 3143 | | -#line 3168 "pikchr.c" |
| 3155 | +#line 3180 "pikchr.c" |
| 3144 | 3156 | /************ End %syntax_error code ******************************************/ |
| 3145 | 3157 | pik_parserARG_STORE /* Suppress warning about unused %extra_argument variable */ |
| 3146 | 3158 | pik_parserCTX_STORE |
| 3147 | 3159 | } |
| 3148 | 3160 | |
| | @@ -3407,11 +3419,11 @@ |
| 3407 | 3419 | #else |
| 3408 | 3420 | (void)iToken; |
| 3409 | 3421 | return 0; |
| 3410 | 3422 | #endif |
| 3411 | 3423 | } |
| 3412 | | -#line 782 "pikchr.y" |
| 3424 | +#line 794 "pikchr.y" |
| 3413 | 3425 | |
| 3414 | 3426 | |
| 3415 | 3427 | |
| 3416 | 3428 | /* Chart of the 148 official CSS color names with their |
| 3417 | 3429 | ** corresponding RGB values thru Color Module Level 4: |
| | @@ -6495,13 +6507,13 @@ |
| 6495 | 6507 | unsigned int i; |
| 6496 | 6508 | mid = (first+last)/2; |
| 6497 | 6509 | zClr = aColor[mid].zName; |
| 6498 | 6510 | for(i=0; i<pId->n; i++){ |
| 6499 | 6511 | c1 = zClr[i]&0x7f; |
| 6500 | | - if( isupper(c1) ) c1 = tolower(c1); |
| 6512 | + if( IsUpper(c1) ) c1 = ToLower(c1); |
| 6501 | 6513 | c2 = pId->z[i]&0x7f; |
| 6502 | | - if( isupper(c2) ) c2 = tolower(c2); |
| 6514 | + if( IsUpper(c2) ) c2 = ToLower(c2); |
| 6503 | 6515 | c = c2 - c1; |
| 6504 | 6516 | if( c ) break; |
| 6505 | 6517 | } |
| 6506 | 6518 | if( c==0 && aColor[mid].zName[pId->n] ) c = -1; |
| 6507 | 6519 | if( c==0 ) return (double)aColor[mid].val; |
| | @@ -7605,11 +7617,11 @@ |
| 7605 | 7617 | } |
| 7606 | 7618 | default: { |
| 7607 | 7619 | c = z[0]; |
| 7608 | 7620 | if( c=='.' ){ |
| 7609 | 7621 | unsigned char c1 = z[1]; |
| 7610 | | - if( islower(c1) ){ |
| 7622 | + if( IsLower(c1) ){ |
| 7611 | 7623 | const PikWord *pFound; |
| 7612 | 7624 | for(i=2; (c = z[i])>='a' && c<='z'; i++){} |
| 7613 | 7625 | pFound = pik_find_word((const char*)z+1, i-1, |
| 7614 | 7626 | pik_keywords, count(pik_keywords)); |
| 7615 | 7627 | if( pFound && (pFound->eEdge>0 || |
| | @@ -7625,15 +7637,15 @@ |
| 7625 | 7637 | }else{ |
| 7626 | 7638 | /* Any other "dot" */ |
| 7627 | 7639 | pToken->eType = T_DOT_L; |
| 7628 | 7640 | } |
| 7629 | 7641 | return 1; |
| 7630 | | - }else if( isdigit(c1) ){ |
| 7642 | + }else if( IsDigit(c1) ){ |
| 7631 | 7643 | i = 0; |
| 7632 | 7644 | /* no-op. Fall through to number handling */ |
| 7633 | | - }else if( isupper(c1) ){ |
| 7634 | | - for(i=2; (c = z[i])!=0 && (isalnum(c) || c=='_'); i++){} |
| 7645 | + }else if( IsUpper(c1) ){ |
| 7646 | + for(i=2; (c = z[i])!=0 && (IsAlnum(c) || c=='_'); i++){} |
| 7635 | 7647 | pToken->eType = T_DOT_U; |
| 7636 | 7648 | return 1; |
| 7637 | 7649 | }else{ |
| 7638 | 7650 | pToken->eType = T_ERROR; |
| 7639 | 7651 | return 1; |
| | @@ -7644,11 +7656,11 @@ |
| 7644 | 7656 | int isInt = 1; |
| 7645 | 7657 | if( c!='.' ){ |
| 7646 | 7658 | nDigit = 1; |
| 7647 | 7659 | for(i=1; (c = z[i])>='0' && c<='9'; i++){ nDigit++; } |
| 7648 | 7660 | if( i==1 && (c=='x' || c=='X') ){ |
| 7649 | | - for(i=2; (c = z[i])!=0 && isxdigit(c); i++){} |
| 7661 | + for(i=2; (c = z[i])!=0 && IsXDigit(c); i++){} |
| 7650 | 7662 | pToken->eType = T_NUMBER; |
| 7651 | 7663 | return i; |
| 7652 | 7664 | } |
| 7653 | 7665 | }else{ |
| 7654 | 7666 | isInt = 0; |
| | @@ -7700,13 +7712,13 @@ |
| 7700 | 7712 | ){ |
| 7701 | 7713 | i += 2; |
| 7702 | 7714 | } |
| 7703 | 7715 | pToken->eType = T_NUMBER; |
| 7704 | 7716 | return i; |
| 7705 | | - }else if( islower(c) ){ |
| 7717 | + }else if( IsLower(c) ){ |
| 7706 | 7718 | const PikWord *pFound; |
| 7707 | | - for(i=1; (c = z[i])!=0 && (isalnum(c) || c=='_'); i++){} |
| 7719 | + for(i=1; (c = z[i])!=0 && (IsAlnum(c) || c=='_'); i++){} |
| 7708 | 7720 | pFound = pik_find_word((const char*)z, i, |
| 7709 | 7721 | pik_keywords, count(pik_keywords)); |
| 7710 | 7722 | if( pFound ){ |
| 7711 | 7723 | pToken->eType = pFound->eType; |
| 7712 | 7724 | pToken->eCode = pFound->eCode; |
| | @@ -7719,19 +7731,19 @@ |
| 7719 | 7731 | }else{ |
| 7720 | 7732 | pToken->eType = T_ID; |
| 7721 | 7733 | } |
| 7722 | 7734 | return i; |
| 7723 | 7735 | }else if( c>='A' && c<='Z' ){ |
| 7724 | | - for(i=1; (c = z[i])!=0 && (isalnum(c) || c=='_'); i++){} |
| 7736 | + for(i=1; (c = z[i])!=0 && (IsAlnum(c) || c=='_'); i++){} |
| 7725 | 7737 | pToken->eType = T_PLACENAME; |
| 7726 | 7738 | return i; |
| 7727 | | - }else if( c=='$' && z[1]>='1' && z[1]<='9' && !isdigit(z[2]) ){ |
| 7739 | + }else if( c=='$' && z[1]>='1' && z[1]<='9' && !IsDigit(z[2]) ){ |
| 7728 | 7740 | pToken->eType = T_PARAMETER; |
| 7729 | 7741 | pToken->eCode = z[1] - '1'; |
| 7730 | 7742 | return 2; |
| 7731 | 7743 | }else if( c=='_' || c=='$' || c=='@' ){ |
| 7732 | | - for(i=1; (c = z[i])!=0 && (isalnum(c) || c=='_'); i++){} |
| 7744 | + for(i=1; (c = z[i])!=0 && (IsAlnum(c) || c=='_'); i++){} |
| 7733 | 7745 | pToken->eType = T_ID; |
| 7734 | 7746 | return i; |
| 7735 | 7747 | }else{ |
| 7736 | 7748 | pToken->eType = T_ERROR; |
| 7737 | 7749 | return 1; |
| | @@ -7814,12 +7826,12 @@ |
| 7814 | 7826 | /* Remove leading and trailing whitespace from each argument. |
| 7815 | 7827 | ** If what remains is one of $1, $2, ... $9 then transfer the |
| 7816 | 7828 | ** corresponding argument from the outer context */ |
| 7817 | 7829 | for(j=0; j<=nArg; j++){ |
| 7818 | 7830 | PToken *t = &args[j]; |
| 7819 | | - while( t->n>0 && isspace(t->z[0]) ){ t->n--; t->z++; } |
| 7820 | | - while( t->n>0 && isspace(t->z[t->n-1]) ){ t->n--; } |
| 7831 | + while( t->n>0 && IsSpace(t->z[0]) ){ t->n--; t->z++; } |
| 7832 | + while( t->n>0 && IsSpace(t->z[t->n-1]) ){ t->n--; } |
| 7821 | 7833 | if( t->n==2 && t->z[0]=='$' && t->z[1]>='1' && t->z[1]<='9' ){ |
| 7822 | 7834 | if( pOuter ) *t = pOuter[t->z[1]-'1']; |
| 7823 | 7835 | else t->n = 0; |
| 7824 | 7836 | } |
| 7825 | 7837 | } |
| | @@ -7896,11 +7908,11 @@ |
| 7896 | 7908 | pMac->inUse = 0; |
| 7897 | 7909 | }else{ |
| 7898 | 7910 | #if 0 |
| 7899 | 7911 | printf("******** Token %s (%d): \"%.*s\" **************\n", |
| 7900 | 7912 | yyTokenName[token.eType], token.eType, |
| 7901 | | - (int)(isspace(token.z[0]) ? 0 : sz), token.z); |
| 7913 | + (int)(IsSpace(token.z[0]) ? 0 : sz), token.z); |
| 7902 | 7914 | #endif |
| 7903 | 7915 | token.n = (unsigned short)(sz & 0xffff); |
| 7904 | 7916 | if( p->nToken++ > PIKCHR_TOKEN_LIMIT ){ |
| 7905 | 7917 | pik_error(p, &token, "script is too complex"); |
| 7906 | 7918 | break; |
| | @@ -8242,6 +8254,6 @@ |
| 8242 | 8254 | |
| 8243 | 8255 | |
| 8244 | 8256 | #endif /* PIKCHR_TCL */ |
| 8245 | 8257 | |
| 8246 | 8258 | |
| 8247 | | -#line 8272 "pikchr.c" |
| 8259 | +#line 8284 "pikchr.c" |
| 8248 | 8260 | |