Changeset 3867 in josm for trunk/src/org/openstreetmap/josm/gui
- Timestamp:
- 2011-02-07T16:05:37+01:00 (13 years ago)
- Location:
- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Expression.java
r3860 r3867 71 71 if (args.length == 0) 72 72 return 0f; 73 if (args.length == 1) { // unary minus 74 return -args[0]; 75 } 73 76 float res = args[0]; 74 77 for (int i=1; i<args.length; ++i) { … … 167 170 for (boolean b : bs) { 168 171 if (b) 172 return true; 173 } 174 return false; 175 } 176 177 public boolean greater_equal(float a, float b) { 178 return a >= b; 179 } 180 181 public boolean less_equal(float a, float b) { 182 return a <= b; 183 } 184 185 public boolean greater(float a, float b) { 186 return a > b; 187 } 188 189 public boolean less(float a, float b) { 190 return a < b; 191 } 192 193 public boolean equal(Object a, Object b) { 194 // make sure the casts are done in a meaningful way, so 195 // the 2 objects really can be considered equal 196 for (Class klass : new Class[] { 197 Float.class, Boolean.class, Color.class, float[].class, String.class }) { 198 Object a2 = Cascade.convertTo(a, klass); 199 Object b2 = Cascade.convertTo(a, klass); 200 if (a2 != null && b2 != null && a2.equals(b2)) 169 201 return true; 170 202 } -
trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/parser/MapCSSParser.java
r3863 r3867 186 186 } 187 187 r = rule(); 188 sheet.rules.add(r);188 if (r != null) { sheet.rules.add(r); } 189 189 w(); 190 190 } … … 196 196 Selector sel; 197 197 List<Instruction> decl; 198 sel = selector(); 199 selectors.add(sel); 200 w(); 201 label_4: 202 while (true) { 203 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 204 case COMMA: 205 ; 206 break; 207 default: 208 jj_la1[7] = jj_gen; 209 break label_4; 210 } 211 jj_consume_token(COMMA); 212 w(); 198 try { 213 199 sel = selector(); 214 200 selectors.add(sel); 215 201 w(); 202 label_4: 203 while (true) { 204 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 205 case COMMA: 206 ; 207 break; 208 default: 209 jj_la1[7] = jj_gen; 210 break label_4; 211 } 212 jj_consume_token(COMMA); 213 w(); 214 sel = selector(); 215 selectors.add(sel); 216 w(); 217 } 218 } catch (ParseException ex) { 219 error_skipto(RBRACE); 220 {if (true) return null;} 216 221 } 217 222 decl = declaration(); … … 272 277 } 273 278 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 279 case SLASH: 274 280 case DCOLON: 275 281 sub = subpart(); … … 338 344 case HEXCOLOR: 339 345 case LPAR: 346 case EXCLAMATION: 340 347 case PLUS: 341 348 case MINUS: … … 414 421 final public String subpart() throws ParseException { 415 422 Token t; 416 jj_consume_token(DCOLON); 423 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 424 case SLASH: 425 jj_consume_token(SLASH); 426 break; 427 case DCOLON: 428 jj_consume_token(DCOLON); 429 break; 430 default: 431 jj_la1[20] = jj_gen; 432 jj_consume_token(-1); 433 throw new ParseException(); 434 } 417 435 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 418 436 case IDENT: … … 423 441 break; 424 442 default: 425 jj_la1[2 0] = jj_gen;443 jj_la1[21] = jj_gen; 426 444 jj_consume_token(-1); 427 445 throw new ParseException(); … … 442 460 break; 443 461 default: 444 jj_la1[2 1] = jj_gen;462 jj_la1[22] = jj_gen; 445 463 ; 446 464 } … … 455 473 break; 456 474 default: 457 jj_la1[2 2] = jj_gen;475 jj_la1[23] = jj_gen; 458 476 break label_6; 459 477 } … … 466 484 break; 467 485 default: 468 jj_la1[2 3] = jj_gen;486 jj_la1[24] = jj_gen; 469 487 ; 470 488 } … … 499 517 case HEXCOLOR: 500 518 case LPAR: 519 case EXCLAMATION: 501 520 case PLUS: 502 521 case MINUS: … … 504 523 break; 505 524 default: 506 jj_la1[2 4] = jj_gen;525 jj_la1[25] = jj_gen; 507 526 jj_consume_token(-1); 508 527 throw new ParseException(); … … 520 539 Expression e; 521 540 String op = null; 522 e = primary(); 523 args.add(e); 524 w(); 525 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 526 case STAR: 527 case SLASH: 528 case PIPE: 541 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 542 case EXCLAMATION: 543 jj_consume_token(EXCLAMATION); 544 op = "not"; 545 w(); 546 e = primary(); 547 args.add(e); 548 w(); 549 break; 550 case MINUS: 551 jj_consume_token(MINUS); 552 op = "minus"; 553 w(); 554 e = primary(); 555 args.add(e); 556 w(); 557 break; 558 case IDENT: 559 case UINT: 560 case UFLOAT: 561 case STRING: 562 case HEXCOLOR: 563 case LPAR: 529 564 case PLUS: 530 case MINUS:531 case AMPERSAND:532 case QUESTION:565 e = primary(); 566 args.add(e); 567 w(); 533 568 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 569 case STAR: 570 case SLASH: 571 case GREATER_EQUAL: 572 case LESS_EQUAL: 573 case GREATER: 574 case LESS: 575 case EQUAL: 576 case PIPE: 534 577 case PLUS: 535 label_7: 536 while (true) { 537 jj_consume_token(PLUS); 538 op = "plus"; 578 case MINUS: 579 case AMPERSAND: 580 case QUESTION: 581 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 582 case PLUS: 583 label_7: 584 while (true) { 585 jj_consume_token(PLUS); 586 op = "plus"; 587 w(); 588 e = primary(); 589 args.add(e); 590 w(); 591 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 592 case PLUS: 593 ; 594 break; 595 default: 596 jj_la1[26] = jj_gen; 597 break label_7; 598 } 599 } 600 break; 601 case STAR: 602 label_8: 603 while (true) { 604 jj_consume_token(STAR); 605 op = "times"; 606 w(); 607 e = primary(); 608 args.add(e); 609 w(); 610 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 611 case STAR: 612 ; 613 break; 614 default: 615 jj_la1[27] = jj_gen; 616 break label_8; 617 } 618 } 619 break; 620 case MINUS: 621 label_9: 622 while (true) { 623 jj_consume_token(MINUS); 624 op = "minus"; 625 w(); 626 e = primary(); 627 args.add(e); 628 w(); 629 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 630 case MINUS: 631 ; 632 break; 633 default: 634 jj_la1[28] = jj_gen; 635 break label_9; 636 } 637 } 638 break; 639 case SLASH: 640 label_10: 641 while (true) { 642 jj_consume_token(SLASH); 643 op = "divided_by"; 644 w(); 645 e = primary(); 646 args.add(e); 647 w(); 648 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 649 case SLASH: 650 ; 651 break; 652 default: 653 jj_la1[29] = jj_gen; 654 break label_10; 655 } 656 } 657 break; 658 case GREATER_EQUAL: 659 jj_consume_token(GREATER_EQUAL); 660 op = "greater_equal"; 539 661 w(); 540 662 e = primary(); 541 args.add(e); 542 w(); 663 args.add(e); 664 w(); 665 break; 666 case LESS_EQUAL: 667 jj_consume_token(LESS_EQUAL); 668 op = "less_equal"; 669 w(); 670 e = primary(); 671 args.add(e); 672 w(); 673 break; 674 case GREATER: 675 jj_consume_token(GREATER); 676 op = "greater"; 677 w(); 678 e = primary(); 679 args.add(e); 680 w(); 681 break; 682 case EQUAL: 683 jj_consume_token(EQUAL); 543 684 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 544 case PLUS:545 ;685 case EQUAL: 686 jj_consume_token(EQUAL); 546 687 break; 547 688 default: 548 jj_la1[ 25] = jj_gen;549 break label_7;689 jj_la1[30] = jj_gen; 690 ; 550 691 } 692 op = "equal"; 693 w(); 694 e = primary(); 695 args.add(e); 696 w(); 697 break; 698 case LESS: 699 jj_consume_token(LESS); 700 op = "less"; 701 w(); 702 e = primary(); 703 args.add(e); 704 w(); 705 break; 706 case AMPERSAND: 707 jj_consume_token(AMPERSAND); 708 jj_consume_token(AMPERSAND); 709 op = "and"; 710 w(); 711 e = primary(); 712 args.add(e); 713 w(); 714 break; 715 case PIPE: 716 jj_consume_token(PIPE); 717 jj_consume_token(PIPE); 718 op = "or"; 719 w(); 720 e = primary(); 721 args.add(e); 722 w(); 723 break; 724 case QUESTION: 725 jj_consume_token(QUESTION); 726 op = "cond"; 727 w(); 728 e = primary(); 729 args.add(e); 730 w(); 731 jj_consume_token(COLON); 732 w(); 733 e = primary(); 734 args.add(e); 735 w(); 736 break; 737 default: 738 jj_la1[31] = jj_gen; 739 jj_consume_token(-1); 740 throw new ParseException(); 551 741 } 552 742 break; 553 case STAR:554 label_8:555 while (true) {556 jj_consume_token(STAR);557 op = "times";558 w();559 e = primary();560 args.add(e);561 w();562 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {563 case STAR:564 ;565 break;566 default:567 jj_la1[26] = jj_gen;568 break label_8;569 }570 }571 break;572 case MINUS:573 label_9:574 while (true) {575 jj_consume_token(MINUS);576 op = "minus";577 w();578 e = primary();579 args.add(e);580 w();581 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {582 case MINUS:583 ;584 break;585 default:586 jj_la1[27] = jj_gen;587 break label_9;588 }589 }590 break;591 case SLASH:592 label_10:593 while (true) {594 jj_consume_token(SLASH);595 op = "divided_by";596 w();597 e = primary();598 args.add(e);599 w();600 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {601 case SLASH:602 ;603 break;604 default:605 jj_la1[28] = jj_gen;606 break label_10;607 }608 }609 break;610 case AMPERSAND:611 jj_consume_token(AMPERSAND);612 jj_consume_token(AMPERSAND);613 op = "and";614 w();615 e = primary();616 args.add(e);617 w();618 break;619 case PIPE:620 jj_consume_token(PIPE);621 jj_consume_token(PIPE);622 op = "or";623 w();624 e = primary();625 args.add(e);626 w();627 break;628 case QUESTION:629 jj_consume_token(QUESTION);630 op = "cond";631 w();632 e = primary();633 args.add(e);634 w();635 jj_consume_token(COLON);636 w();637 e = primary();638 args.add(e);639 w();640 break;641 743 default: 642 jj_la1[ 29] = jj_gen;643 jj_consume_token(-1);644 throw new ParseException();645 }646 break;647 default:648 jj_ la1[30] = jj_gen;649 ;744 jj_la1[32] = jj_gen; 745 ; 746 } 747 break; 748 default: 749 jj_la1[33] = jj_gen; 750 jj_consume_token(-1); 751 throw new ParseException(); 650 752 } 651 753 if (op == null) … … 671 773 case HEXCOLOR: 672 774 case PLUS: 673 case MINUS:674 775 lit = literal(); 675 776 {if (true) return new LiteralExpression(lit);} … … 683 784 break; 684 785 default: 685 jj_la1[3 1] = jj_gen;786 jj_la1[34] = jj_gen; 686 787 jj_consume_token(-1); 687 788 throw new ParseException(); … … 708 809 case HEXCOLOR: 709 810 case LPAR: 811 case EXCLAMATION: 710 812 case PLUS: 711 813 case MINUS: … … 719 821 break; 720 822 default: 721 jj_la1[3 2] = jj_gen;823 jj_la1[35] = jj_gen; 722 824 break label_11; 723 825 } … … 729 831 break; 730 832 default: 731 jj_la1[3 3] = jj_gen;833 jj_la1[36] = jj_gen; 732 834 ; 733 835 } … … 751 853 f = ufloat(); 752 854 {if (true) return new Instruction.RelativeFloat(f);} 753 break;754 case MINUS:755 jj_consume_token(MINUS);756 f = ufloat();757 {if (true) return -f;}758 855 break; 759 856 case UINT: … … 773 870 break; 774 871 default: 775 jj_la1[3 4] = jj_gen;872 jj_la1[37] = jj_gen; 776 873 jj_consume_token(-1); 777 874 throw new ParseException(); … … 789 886 do { 790 887 t = getNextToken(); 791 } while (t.kind != kind); 888 } while (t.kind != kind && t.kind != EOF); 889 if (t.kind == EOF) 890 throw new ParseException("Reached end of file while parsing"); 792 891 } 793 892 … … 820 919 } 821 920 822 private boolean jj_3R_20() {823 if (jj_scan_token(COMMA)) return true;824 return false;825 }826 827 private boolean jj_3R_16() {828 if (jj_scan_token(EXCLAMATION)) return true;829 return false;830 }831 832 private boolean jj_3R_25() {833 if (jj_scan_token(STRING)) return true;834 return false;835 }836 837 921 private boolean jj_3R_12() { 838 922 Token xsp; … … 840 924 if (jj_3R_16()) jj_scanpos = xsp; 841 925 if (jj_3R_17()) return true; 926 return false; 927 } 928 929 private boolean jj_3R_20() { 930 if (jj_scan_token(COMMA)) return true; 931 return false; 932 } 933 934 private boolean jj_3_4() { 935 if (jj_3R_15()) return true; 936 return false; 937 } 938 939 private boolean jj_3R_25() { 940 if (jj_scan_token(STRING)) return true; 842 941 return false; 843 942 } … … 859 958 } 860 959 861 private boolean jj_3R_15() { 862 if (jj_scan_token(IDENT)) return true; 863 if (jj_3R_21()) return true; 864 if (jj_scan_token(LPAR)) return true; 960 private boolean jj_3_2() { 961 if (jj_3R_13()) return true; 865 962 return false; 866 963 } … … 881 978 } 882 979 883 private boolean jj_3_2() { 884 if (jj_3R_13()) return true; 980 private boolean jj_3_1() { 981 if (jj_3R_12()) return true; 982 if (jj_scan_token(RSQUARE)) return true; 885 983 return false; 886 984 } … … 896 994 } 897 995 898 private boolean jj_3_1() {899 if (jj_3R_12()) return true;900 if (jj_scan_token(RSQUARE)) return true;901 return false;902 }903 904 996 private boolean jj_3R_21() { 905 997 Token xsp; … … 916 1008 } 917 1009 918 private boolean jj_3_4() {919 if (jj_3R_15()) return true;920 return false;921 }922 923 1010 private boolean jj_3R_18() { 924 1011 if (jj_scan_token(EXCLAMATION_EQUAL)) return true; 1012 return false; 1013 } 1014 1015 private boolean jj_3R_15() { 1016 if (jj_scan_token(IDENT)) return true; 1017 if (jj_3R_21()) return true; 1018 if (jj_scan_token(LPAR)) return true; 1019 return false; 1020 } 1021 1022 private boolean jj_3R_13() { 1023 if (jj_3R_17()) return true; 1024 Token xsp; 1025 xsp = jj_scanpos; 1026 if (jj_3R_18()) { 1027 jj_scanpos = xsp; 1028 if (jj_scan_token(20)) return true; 1029 } 1030 if (jj_3R_17()) return true; 925 1031 return false; 926 1032 } … … 941 1047 } 942 1048 943 private boolean jj_3R_13() { 944 if (jj_3R_17()) return true; 945 Token xsp; 946 xsp = jj_scanpos; 947 if (jj_3R_18()) { 948 jj_scanpos = xsp; 949 if (jj_scan_token(16)) return true; 950 } 951 if (jj_3R_17()) return true; 1049 private boolean jj_3R_16() { 1050 if (jj_scan_token(EXCLAMATION)) return true; 952 1051 return false; 953 1052 } … … 964 1063 private int jj_la; 965 1064 private int jj_gen; 966 final private int[] jj_la1 = new int[3 5];1065 final private int[] jj_la1 = new int[38]; 967 1066 static private int[] jj_la1_0; 968 1067 static private int[] jj_la1_1; … … 972 1071 } 973 1072 private static void jj_la1_init_0() { 974 jj_la1_0 = new int[] {0xc,0x12,0x80,0x 20000080,0x20000080,0x400000,0x102,0x400000,0x102,0x1000000,0x81000,0x81000,0x100000,0x4,0x4000000,0x4000004,0x600405e,0x20000,0x50000,0x20000,0x102,0x800,0x200000,0x800,0x600405e,0x2000000,0x100,0x4000000,0x200,0x1e800300,0x1e800300,0x600405e,0x400000,0x600405e,0x600005e,};1073 jj_la1_0 = new int[] {0xc,0x12,0x80,0x80,0x80,0x4000000,0x102,0x4000000,0x102,0x10000000,0x801000,0x801000,0x1000200,0x4,0x40000000,0x40000004,0x6020405e,0x200000,0x500000,0x200000,0x1000200,0x102,0x800,0x2000000,0x800,0x6020405e,0x20000000,0x100,0x40000000,0x200,0x100000,0xe81f0300,0xe81f0300,0x6020405e,0x2000405e,0x4000000,0x6020405e,0x2000005e,}; 975 1074 } 976 1075 private static void jj_la1_init_1() { 977 jj_la1_1 = new int[] {0x0,0x0,0x0,0x 0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};1076 jj_la1_1 = new int[] {0x0,0x0,0x0,0x2,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x0,0x0,}; 978 1077 } 979 1078 final private JJCalls[] jj_2_rtns = new JJCalls[4]; … … 992 1091 jj_ntk = -1; 993 1092 jj_gen = 0; 994 for (int i = 0; i < 3 5; i++) jj_la1[i] = -1;1093 for (int i = 0; i < 38; i++) jj_la1[i] = -1; 995 1094 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); 996 1095 } … … 1007 1106 jj_ntk = -1; 1008 1107 jj_gen = 0; 1009 for (int i = 0; i < 3 5; i++) jj_la1[i] = -1;1108 for (int i = 0; i < 38; i++) jj_la1[i] = -1; 1010 1109 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); 1011 1110 } … … 1018 1117 jj_ntk = -1; 1019 1118 jj_gen = 0; 1020 for (int i = 0; i < 3 5; i++) jj_la1[i] = -1;1119 for (int i = 0; i < 38; i++) jj_la1[i] = -1; 1021 1120 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); 1022 1121 } … … 1029 1128 jj_ntk = -1; 1030 1129 jj_gen = 0; 1031 for (int i = 0; i < 3 5; i++) jj_la1[i] = -1;1130 for (int i = 0; i < 38; i++) jj_la1[i] = -1; 1032 1131 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); 1033 1132 } … … 1039 1138 jj_ntk = -1; 1040 1139 jj_gen = 0; 1041 for (int i = 0; i < 3 5; i++) jj_la1[i] = -1;1140 for (int i = 0; i < 38; i++) jj_la1[i] = -1; 1042 1141 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); 1043 1142 } … … 1049 1148 jj_ntk = -1; 1050 1149 jj_gen = 0; 1051 for (int i = 0; i < 3 5; i++) jj_la1[i] = -1;1150 for (int i = 0; i < 38; i++) jj_la1[i] = -1; 1052 1151 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); 1053 1152 } … … 1161 1260 public ParseException generateParseException() { 1162 1261 jj_expentries.clear(); 1163 boolean[] la1tokens = new boolean[3 3];1262 boolean[] la1tokens = new boolean[37]; 1164 1263 if (jj_kind >= 0) { 1165 1264 la1tokens[jj_kind] = true; 1166 1265 jj_kind = -1; 1167 1266 } 1168 for (int i = 0; i < 3 5; i++) {1267 for (int i = 0; i < 38; i++) { 1169 1268 if (jj_la1[i] == jj_gen) { 1170 1269 for (int j = 0; j < 32; j++) { … … 1178 1277 } 1179 1278 } 1180 for (int i = 0; i < 3 3; i++) {1279 for (int i = 0; i < 37; i++) { 1181 1280 if (la1tokens[i]) { 1182 1281 jj_expentry = new int[1]; -
trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/parser/MapCSSParser.jj
r3863 r3867 48 48 | < LPAR: "(" > 49 49 | < RPAR: ")" > 50 | < GREATER_EQUAL: ">=" > 51 | < LESS_EQUAL: "<=" > 52 | < GREATER: ">" > 53 | < LESS: "<" > 50 54 | < EQUAL: "=" > 51 55 | < EXCLAMATION: "!" > … … 188 192 { this.sheet = sheet; } 189 193 w() 190 ( r=rule() { sheet.rules.add(r);} w() )*194 ( r=rule() { if (r != null) { sheet.rules.add(r); } } w() )* 191 195 <EOF> 192 196 } … … 199 203 } 200 204 { 201 sel=selector() { selectors.add(sel); } w() 202 ( 203 <COMMA> w() 205 try { 204 206 sel=selector() { selectors.add(sel); } w() 205 )* 207 ( 208 <COMMA> w() 209 sel=selector() { selectors.add(sel); } w() 210 )* 211 } catch (ParseException ex) { 212 error_skipto(RBRACE); 213 return null; 214 } 206 215 decl=declaration() 207 216 { return new MapCSSRule(selectors, decl); } … … 298 307 } 299 308 { 300 <DCOLON>309 ( <SLASH> | <DCOLON> ) 301 310 ( t=<IDENT> | t=<STAR> ) 302 311 { return t.image; } … … 354 363 } 355 364 { 356 e=primary() { args.add(e); } w()357 365 ( 358 ( <PLUS> { op = "plus"; } w() e=primary() { args.add(e); } w() )+ 359 | 360 ( <STAR> { op = "times"; } w() e=primary() { args.add(e); } w() )+ 361 | 362 ( <MINUS> { op = "minus"; } w() e=primary() { args.add(e); } w() )+ 363 | 364 ( <SLASH> { op = "divided_by"; } w() e=primary() { args.add(e); } w() )+ 365 | 366 ( <AMPERSAND> <AMPERSAND> { op = "and"; } w() e=primary() { args.add(e); } w() ) 367 | 368 ( <PIPE> <PIPE> { op = "or"; } w() e=primary() { args.add(e); } w() ) 369 | 370 ( <QUESTION> { op = "cond"; } w() e=primary() { args.add(e); } w() <COLON> w() e=primary() { args.add(e); } w() ) 371 )? 366 ( <EXCLAMATION> { op = "not"; } w() e=primary() { args.add(e); } w() ) 367 | 368 ( <MINUS> { op = "minus"; } w() e=primary() { args.add(e); } w() ) 369 | 370 371 ( 372 e=primary() { args.add(e); } w() 373 ( 374 ( <PLUS> { op = "plus"; } w() e=primary() { args.add(e); } w() )+ 375 | 376 ( <STAR> { op = "times"; } w() e=primary() { args.add(e); } w() )+ 377 | 378 ( <MINUS> { op = "minus"; } w() e=primary() { args.add(e); } w() )+ 379 | 380 ( <SLASH> { op = "divided_by"; } w() e=primary() { args.add(e); } w() )+ 381 | 382 ( <GREATER_EQUAL> { op = "greater_equal"; } w() e=primary() { args.add(e); } w() ) 383 | 384 ( <LESS_EQUAL> { op = "less_equal"; } w() e=primary() { args.add(e); } w() ) 385 | 386 ( <GREATER> { op = "greater"; } w() e=primary() { args.add(e); } w() ) 387 | 388 ( <EQUAL> ( <EQUAL> )? { op = "equal"; } w() e=primary() { args.add(e); } w() ) 389 | 390 ( <LESS> { op = "less"; } w() e=primary() { args.add(e); } w() ) 391 | 392 ( <AMPERSAND> <AMPERSAND> { op = "and"; } w() e=primary() { args.add(e); } w() ) 393 | 394 ( <PIPE> <PIPE> { op = "or"; } w() e=primary() { args.add(e); } w() ) 395 | 396 ( <QUESTION> { op = "cond"; } w() e=primary() { args.add(e); } w() <COLON> w() e=primary() { args.add(e); } w() ) 397 )? 398 ) 399 ) 372 400 { 373 401 if (op == null) … … 420 448 | 421 449 ( <PLUS> f=ufloat() ) { return new Instruction.RelativeFloat(f); } 422 |423 ( <MINUS> f=ufloat() ) { return -f; }424 450 | 425 451 f=ufloat() { return f; } … … 447 473 do { 448 474 t = getNextToken(); 449 } while (t.kind != kind); 450 } 451 475 } while (t.kind != kind && t.kind != EOF); 476 if (t.kind == EOF) 477 throw new ParseException("Reached end of file while parsing"); 478 } 479 -
trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/parser/MapCSSParserConstants.java
r3856 r3867 42 42 int RPAR = 15; 43 43 /** RegularExpression Id. */ 44 int EQUAL = 16;44 int GREATER_EQUAL = 16; 45 45 /** RegularExpression Id. */ 46 int EXCLAMATION= 17;46 int LESS_EQUAL = 17; 47 47 /** RegularExpression Id. */ 48 int EXCLAMATION_EQUAL= 18;48 int GREATER = 18; 49 49 /** RegularExpression Id. */ 50 int COLON= 19;50 int LESS = 19; 51 51 /** RegularExpression Id. */ 52 int DCOLON= 20;52 int EQUAL = 20; 53 53 /** RegularExpression Id. */ 54 int SEMICOLON = 21;54 int EXCLAMATION = 21; 55 55 /** RegularExpression Id. */ 56 int COMMA= 22;56 int EXCLAMATION_EQUAL = 22; 57 57 /** RegularExpression Id. */ 58 int PIPE= 23;58 int COLON = 23; 59 59 /** RegularExpression Id. */ 60 int PIPE_Z= 24;60 int DCOLON = 24; 61 61 /** RegularExpression Id. */ 62 int PLUS= 25;62 int SEMICOLON = 25; 63 63 /** RegularExpression Id. */ 64 int MINUS= 26;64 int COMMA = 26; 65 65 /** RegularExpression Id. */ 66 int AMPERSAND= 27;66 int PIPE = 27; 67 67 /** RegularExpression Id. */ 68 int QUESTION= 28;68 int PIPE_Z = 28; 69 69 /** RegularExpression Id. */ 70 int COMMENT_START= 29;70 int PLUS = 29; 71 71 /** RegularExpression Id. */ 72 int UNEXPECTED_CHAR= 30;72 int MINUS = 30; 73 73 /** RegularExpression Id. */ 74 int COMMENT_END = 31; 74 int AMPERSAND = 31; 75 /** RegularExpression Id. */ 76 int QUESTION = 32; 77 /** RegularExpression Id. */ 78 int COMMENT_START = 33; 79 /** RegularExpression Id. */ 80 int UNEXPECTED_CHAR = 34; 81 /** RegularExpression Id. */ 82 int COMMENT_END = 35; 75 83 76 84 /** Lexical state. */ … … 97 105 "\"(\"", 98 106 "\")\"", 107 "\">=\"", 108 "\"<=\"", 109 "\">\"", 110 "\"<\"", 99 111 "\"=\"", 100 112 "\"!\"", … … 113 125 "<UNEXPECTED_CHAR>", 114 126 "\"*/\"", 115 "<token of kind 3 2>",127 "<token of kind 36>", 116 128 }; 117 129 -
trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/parser/MapCSSParserTokenManager.java
r3856 r3867 45 45 { 46 46 case 33: 47 jjmatchedKind = 17;48 return jjMoveStringLiteralDfa1_0(0x40000 L);47 jjmatchedKind = 21; 48 return jjMoveStringLiteralDfa1_0(0x400000L); 49 49 case 38: 50 return jjStopAtPos(0, 27);50 return jjStopAtPos(0, 31); 51 51 case 40: 52 52 return jjStopAtPos(0, 14); … … 56 56 return jjStopAtPos(0, 8); 57 57 case 43: 58 return jjStopAtPos(0, 2 5);58 return jjStopAtPos(0, 29); 59 59 case 44: 60 return jjStopAtPos(0, 2 2);60 return jjStopAtPos(0, 26); 61 61 case 45: 62 return jjStopAtPos(0, 26);62 return jjStopAtPos(0, 30); 63 63 case 47: 64 64 jjmatchedKind = 9; 65 return jjMoveStringLiteralDfa1_0(0x20000000 L);65 return jjMoveStringLiteralDfa1_0(0x200000000L); 66 66 case 58: 67 jjmatchedKind = 23; 68 return jjMoveStringLiteralDfa1_0(0x1000000L); 69 case 59: 70 return jjStopAtPos(0, 25); 71 case 60: 67 72 jjmatchedKind = 19; 68 return jjMoveStringLiteralDfa1_0(0x100000L); 69 case 59: 70 return jjStopAtPos(0, 21); 73 return jjMoveStringLiteralDfa1_0(0x20000L); 71 74 case 61: 72 return jjStopAtPos(0, 16); 75 return jjStopAtPos(0, 20); 76 case 62: 77 jjmatchedKind = 18; 78 return jjMoveStringLiteralDfa1_0(0x10000L); 73 79 case 63: 74 return jjStopAtPos(0, 28);80 return jjStopAtPos(0, 32); 75 81 case 91: 76 82 return jjStopAtPos(0, 12); … … 80 86 return jjStopAtPos(0, 10); 81 87 case 124: 82 jjmatchedKind = 2 3;83 return jjMoveStringLiteralDfa1_0(0x1000000 L);88 jjmatchedKind = 27; 89 return jjMoveStringLiteralDfa1_0(0x10000000L); 84 90 case 125: 85 91 return jjStopAtPos(0, 11); … … 98 104 { 99 105 case 42: 100 if ((active0 & 0x20000000 L) != 0L)101 return jjStopAtPos(1, 29);106 if ((active0 & 0x200000000L) != 0L) 107 return jjStopAtPos(1, 33); 102 108 break; 103 109 case 58: 104 if ((active0 & 0x100000 L) != 0L)105 return jjStopAtPos(1, 2 0);110 if ((active0 & 0x1000000L) != 0L) 111 return jjStopAtPos(1, 24); 106 112 break; 107 113 case 61: 108 if ((active0 & 0x40000L) != 0L) 109 return jjStopAtPos(1, 18); 114 if ((active0 & 0x10000L) != 0L) 115 return jjStopAtPos(1, 16); 116 else if ((active0 & 0x20000L) != 0L) 117 return jjStopAtPos(1, 17); 118 else if ((active0 & 0x400000L) != 0L) 119 return jjStopAtPos(1, 22); 110 120 break; 111 121 case 122: 112 if ((active0 & 0x1000000 L) != 0L)113 return jjStopAtPos(1, 2 4);122 if ((active0 & 0x10000000L) != 0L) 123 return jjStopAtPos(1, 28); 114 124 break; 115 125 default : … … 351 361 { 352 362 case 42: 353 return jjMoveStringLiteralDfa1_1(0x80000000 L);363 return jjMoveStringLiteralDfa1_1(0x800000000L); 354 364 default : 355 365 return 1; … … 365 375 { 366 376 case 47: 367 if ((active0 & 0x80000000 L) != 0L)368 return jjStopAtPos(1, 3 1);377 if ((active0 & 0x800000000L) != 0L) 378 return jjStopAtPos(1, 35); 369 379 break; 370 380 default : … … 392 402 public static final String[] jjstrLiteralImages = { 393 403 "", null, null, null, null, null, null, null, "\52", "\57", "\173", "\175", 394 "\133", "\135", "\50", "\51", "\75", "\41", "\41\75", "\72", "\72\72", "\73", "\54", 395 "\174", "\174\172", "\53", "\55", "\46", "\77", "\57\52", null, "\52\57", null, }; 404 "\133", "\135", "\50", "\51", "\76\75", "\74\75", "\76", "\74", "\75", "\41", 405 "\41\75", "\72", "\72\72", "\73", "\54", "\174", "\174\172", "\53", "\55", "\46", "\77", 406 "\57\52", null, "\52\57", null, }; 396 407 397 408 /** Lexer state names. */ … … 404 415 public static final int[] jjnewLexState = { 405 416 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 406 -1, -1, -1, -1, 1, -1, 0, -1,417 -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 0, -1, 407 418 }; 408 419 static final long[] jjtoToken = { 409 0xffffff dfL,420 0xfffffffdfL, 410 421 }; 411 422 static final long[] jjtoSkip = { 412 0x100000000 L,423 0x1000000000L, 413 424 }; 414 425 protected SimpleCharStream input_stream; … … 518 529 jjmatchedPos = 0; 519 530 curPos = jjMoveStringLiteralDfa0_0(); 520 if (jjmatchedPos == 0 && jjmatchedKind > 3 0)531 if (jjmatchedPos == 0 && jjmatchedKind > 34) 521 532 { 522 jjmatchedKind = 3 0;533 jjmatchedKind = 34; 523 534 } 524 535 break; … … 527 538 jjmatchedPos = 0; 528 539 curPos = jjMoveStringLiteralDfa0_1(); 529 if (jjmatchedPos == 0 && jjmatchedKind > 3 2)540 if (jjmatchedPos == 0 && jjmatchedKind > 36) 530 541 { 531 jjmatchedKind = 3 2;542 jjmatchedKind = 36; 532 543 } 533 544 break;
Note:
See TracChangeset
for help on using the changeset viewer.