Changeset 2973 in josm for trunk/src/org/openstreetmap/josm/actions/search/PushbackTokenizer.java
- Timestamp:
- 13.02.2010 17:05:37 (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/actions/search/PushbackTokenizer.java
r2863 r2973 15 15 private Token currentToken; 16 16 private String currentText; 17 private long currentNumber; 17 18 private int c; 18 19 … … 25 26 NOT(marktr("<not>")), OR(marktr("<or>")), LEFT_PARENT(marktr("<left parent>")), 26 27 RIGHT_PARENT(marktr("<right parent>")), COLON(marktr("<colon>")), EQUALS(marktr("<equals>")), 27 KEY(marktr("<key>")), QUESTION_MARK(marktr("<question mark>")), EOF(marktr("<end-of-file>")); 28 KEY(marktr("<key>")), QUESTION_MARK(marktr("<question mark>")), NUMBER(marktr("<number>")), 29 EOF(marktr("<end-of-file>")); 28 30 29 31 private Token(String name) { … … 46 48 throw new RuntimeException(e.getMessage(), e); 47 49 } 50 } 51 52 private long getNumber() { 53 long result = 0; 54 while (Character.isDigit(c)) { 55 result = result * 10 + (c - '0'); 56 getChar(); 57 } 58 return result; 48 59 } 49 60 … … 78 89 case '-': 79 90 getChar(); 80 return Token.NOT; 91 if (Character.isDigit(c)) { 92 currentNumber = -1 * getNumber(); 93 return Token.NUMBER; 94 } else 95 return Token.NOT; 81 96 case '(': 82 97 getChar(); … … 111 126 default: 112 127 { 128 if (Character.isDigit(c)) { 129 currentNumber = getNumber(); 130 return Token.NUMBER; 131 } 132 113 133 StringBuilder s = new StringBuilder(); 114 134 while (!(c == -1 || Character.isWhitespace(c) || c == '"'|| c == ':' || c == '(' || c == ')' || c == '|' || c == '=' || c == '?')) { … … 149 169 } 150 170 171 public long readNumber(String errorMessage) throws ParseError { 172 if (nextToken() == Token.NUMBER) 173 return currentNumber; 174 else 175 throw new ParseError(errorMessage); 176 } 177 151 178 public String getText() { 152 179 return currentText;
Note: See TracChangeset
for help on using the changeset viewer.
