< prev index next >

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

Print this page




 189                     reader.putChar('\'', true); break;
 190                 case '\"':
 191                     reader.putChar('\"', true); break;
 192                 case '\\':
 193                     reader.putChar('\\', true); break;
 194                 default:
 195                     lexError(reader.bp, Errors.IllegalEscChar);
 196                 }
 197             }
 198         } else if (reader.bp != reader.buflen) {
 199             reader.putChar(true);
 200         }
 201     }
 202 
 203     private void scanDigits(int pos, int digitRadix) {
 204         char saveCh;
 205         int savePos;
 206         do {
 207             if (reader.ch != '_') {
 208                 reader.putChar(false);
 209             } else {
 210                 checkSourceLevel(pos, Feature.UNDERSCORES_IN_LITERALS);
 211             }
 212             saveCh = reader.ch;
 213             savePos = reader.bp;
 214             reader.scanChar();
 215         } while (reader.digit(pos, digitRadix) >= 0 || reader.ch == '_');
 216         if (saveCh == '_')
 217             lexError(savePos, Errors.IllegalUnderscore);
 218     }
 219 
 220     /** Read fractional part of hexadecimal floating point number.
 221      */
 222     private void scanHexExponentAndSuffix(int pos) {
 223         if (reader.ch == 'p' || reader.ch == 'P') {
 224             reader.putChar(true);
 225             skipIllegalUnderscores();
 226             if (reader.ch == '+' || reader.ch == '-') {
 227                 reader.putChar(true);
 228             }
 229             skipIllegalUnderscores();
 230             if (reader.digit(pos, 10) >= 0) {


 501                 case 'K': case 'L': case 'M': case 'N': case 'O':
 502                 case 'P': case 'Q': case 'R': case 'S': case 'T':
 503                 case 'U': case 'V': case 'W': case 'X': case 'Y':
 504                 case 'Z':
 505                 case 'a': case 'b': case 'c': case 'd': case 'e':
 506                 case 'f': case 'g': case 'h': case 'i': case 'j':
 507                 case 'k': case 'l': case 'm': case 'n': case 'o':
 508                 case 'p': case 'q': case 'r': case 's': case 't':
 509                 case 'u': case 'v': case 'w': case 'x': case 'y':
 510                 case 'z':
 511                 case '$': case '_':
 512                     scanIdent();
 513                     break loop;
 514                 case '0':
 515                     reader.scanChar();
 516                     if (reader.ch == 'x' || reader.ch == 'X') {
 517                         reader.scanChar();
 518                         skipIllegalUnderscores();
 519                         scanNumber(pos, 16);
 520                     } else if (reader.ch == 'b' || reader.ch == 'B') {
 521                         checkSourceLevel(pos, Feature.BINARY_LITERALS);
 522                         reader.scanChar();
 523                         skipIllegalUnderscores();
 524                         scanNumber(pos, 2);
 525                     } else {
 526                         reader.putChar('0');
 527                         if (reader.ch == '_') {
 528                             int savePos = reader.bp;
 529                             do {
 530                                 reader.scanChar();
 531                             } while (reader.ch == '_');
 532                             if (reader.digit(pos, 10) < 0) {
 533                                 lexError(savePos, Errors.IllegalUnderscore);
 534                             }
 535                         }
 536                         scanNumber(pos, 8);
 537                     }
 538                     break loop;
 539                 case '1': case '2': case '3': case '4':
 540                 case '5': case '6': case '7': case '8': case '9':
 541                     scanNumber(pos, 10);




 189                     reader.putChar('\'', true); break;
 190                 case '\"':
 191                     reader.putChar('\"', true); break;
 192                 case '\\':
 193                     reader.putChar('\\', true); break;
 194                 default:
 195                     lexError(reader.bp, Errors.IllegalEscChar);
 196                 }
 197             }
 198         } else if (reader.bp != reader.buflen) {
 199             reader.putChar(true);
 200         }
 201     }
 202 
 203     private void scanDigits(int pos, int digitRadix) {
 204         char saveCh;
 205         int savePos;
 206         do {
 207             if (reader.ch != '_') {
 208                 reader.putChar(false);


 209             }
 210             saveCh = reader.ch;
 211             savePos = reader.bp;
 212             reader.scanChar();
 213         } while (reader.digit(pos, digitRadix) >= 0 || reader.ch == '_');
 214         if (saveCh == '_')
 215             lexError(savePos, Errors.IllegalUnderscore);
 216     }
 217 
 218     /** Read fractional part of hexadecimal floating point number.
 219      */
 220     private void scanHexExponentAndSuffix(int pos) {
 221         if (reader.ch == 'p' || reader.ch == 'P') {
 222             reader.putChar(true);
 223             skipIllegalUnderscores();
 224             if (reader.ch == '+' || reader.ch == '-') {
 225                 reader.putChar(true);
 226             }
 227             skipIllegalUnderscores();
 228             if (reader.digit(pos, 10) >= 0) {


 499                 case 'K': case 'L': case 'M': case 'N': case 'O':
 500                 case 'P': case 'Q': case 'R': case 'S': case 'T':
 501                 case 'U': case 'V': case 'W': case 'X': case 'Y':
 502                 case 'Z':
 503                 case 'a': case 'b': case 'c': case 'd': case 'e':
 504                 case 'f': case 'g': case 'h': case 'i': case 'j':
 505                 case 'k': case 'l': case 'm': case 'n': case 'o':
 506                 case 'p': case 'q': case 'r': case 's': case 't':
 507                 case 'u': case 'v': case 'w': case 'x': case 'y':
 508                 case 'z':
 509                 case '$': case '_':
 510                     scanIdent();
 511                     break loop;
 512                 case '0':
 513                     reader.scanChar();
 514                     if (reader.ch == 'x' || reader.ch == 'X') {
 515                         reader.scanChar();
 516                         skipIllegalUnderscores();
 517                         scanNumber(pos, 16);
 518                     } else if (reader.ch == 'b' || reader.ch == 'B') {

 519                         reader.scanChar();
 520                         skipIllegalUnderscores();
 521                         scanNumber(pos, 2);
 522                     } else {
 523                         reader.putChar('0');
 524                         if (reader.ch == '_') {
 525                             int savePos = reader.bp;
 526                             do {
 527                                 reader.scanChar();
 528                             } while (reader.ch == '_');
 529                             if (reader.digit(pos, 10) < 0) {
 530                                 lexError(savePos, Errors.IllegalUnderscore);
 531                             }
 532                         }
 533                         scanNumber(pos, 8);
 534                     }
 535                     break loop;
 536                 case '1': case '2': case '3': case '4':
 537                 case '5': case '6': case '7': case '8': case '9':
 538                     scanNumber(pos, 10);


< prev index next >