src/share/classes/com/sun/tools/javac/parser/JavaTokenizer.java

changeset 1431
1f41a5758cf7
parent 1385
75c936d14c6a
child 1442
fcf89720ae71
equal deleted inserted replaced
1430:4d68e2a05b50 1431:1f41a5758cf7
346 /** Read an identifier. 346 /** Read an identifier.
347 */ 347 */
348 private void scanIdent() { 348 private void scanIdent() {
349 boolean isJavaIdentifierPart; 349 boolean isJavaIdentifierPart;
350 char high; 350 char high;
351 reader.putChar(true);
351 do { 352 do {
352 reader.putChar(true);
353 switch (reader.ch) { 353 switch (reader.ch) {
354 case 'A': case 'B': case 'C': case 'D': case 'E': 354 case 'A': case 'B': case 'C': case 'D': case 'E':
355 case 'F': case 'G': case 'H': case 'I': case 'J': 355 case 'F': case 'G': case 'H': case 'I': case 'J':
356 case 'K': case 'L': case 'M': case 'N': case 'O': 356 case 'K': case 'L': case 'M': case 'N': case 'O':
357 case 'P': case 'Q': case 'R': case 'S': case 'T': 357 case 'P': case 'Q': case 'R': case 'S': case 'T':
364 case 'u': case 'v': case 'w': case 'x': case 'y': 364 case 'u': case 'v': case 'w': case 'x': case 'y':
365 case 'z': 365 case 'z':
366 case '$': case '_': 366 case '$': case '_':
367 case '0': case '1': case '2': case '3': case '4': 367 case '0': case '1': case '2': case '3': case '4':
368 case '5': case '6': case '7': case '8': case '9': 368 case '5': case '6': case '7': case '8': case '9':
369 break;
369 case '\u0000': case '\u0001': case '\u0002': case '\u0003': 370 case '\u0000': case '\u0001': case '\u0002': case '\u0003':
370 case '\u0004': case '\u0005': case '\u0006': case '\u0007': 371 case '\u0004': case '\u0005': case '\u0006': case '\u0007':
371 case '\u0008': case '\u000E': case '\u000F': case '\u0010': 372 case '\u0008': case '\u000E': case '\u000F': case '\u0010':
372 case '\u0011': case '\u0012': case '\u0013': case '\u0014': 373 case '\u0011': case '\u0012': case '\u0013': case '\u0014':
373 case '\u0015': case '\u0016': case '\u0017': 374 case '\u0015': case '\u0016': case '\u0017':
374 case '\u0018': case '\u0019': case '\u001B': 375 case '\u0018': case '\u0019': case '\u001B':
375 case '\u007F': 376 case '\u007F':
376 break; 377 reader.scanChar();
378 continue;
377 case '\u001A': // EOI is also a legal identifier part 379 case '\u001A': // EOI is also a legal identifier part
378 if (reader.bp >= reader.buflen) { 380 if (reader.bp >= reader.buflen) {
379 name = reader.name(); 381 name = reader.name();
380 tk = tokens.lookupKind(name); 382 tk = tokens.lookupKind(name);
381 return; 383 return;
382 } 384 }
383 break; 385 reader.scanChar();
386 continue;
384 default: 387 default:
385 if (reader.ch < '\u0080') { 388 if (reader.ch < '\u0080') {
386 // all ASCII range chars already handled, above 389 // all ASCII range chars already handled, above
387 isJavaIdentifierPart = false; 390 isJavaIdentifierPart = false;
388 } else { 391 } else {
389 high = reader.scanSurrogates(); 392 if (Character.isIdentifierIgnorable(reader.ch)) {
390 if (high != 0) { 393 reader.scanChar();
391 reader.putChar(high); 394 continue;
392 isJavaIdentifierPart = Character.isJavaIdentifierPart(
393 Character.toCodePoint(high, reader.ch));
394 } else { 395 } else {
395 isJavaIdentifierPart = Character.isJavaIdentifierPart(reader.ch); 396 high = reader.scanSurrogates();
397 if (high != 0) {
398 reader.putChar(high);
399 isJavaIdentifierPart = Character.isJavaIdentifierPart(
400 Character.toCodePoint(high, reader.ch));
401 } else {
402 isJavaIdentifierPart = Character.isJavaIdentifierPart(reader.ch);
403 }
396 } 404 }
397 } 405 }
398 if (!isJavaIdentifierPart) { 406 if (!isJavaIdentifierPart) {
399 name = reader.name(); 407 name = reader.name();
400 tk = tokens.lookupKind(name); 408 tk = tokens.lookupKind(name);
401 return; 409 return;
402 } 410 }
403 } 411 }
412 reader.putChar(true);
404 } while (true); 413 } while (true);
405 } 414 }
406 415
407 /** Return true if reader.ch can be part of an operator. 416 /** Return true if reader.ch can be part of an operator.
408 */ 417 */

mercurial