private int readEscapeChar() { int c = getc(); if (c == 'n') c = '\n'; else if (c == 't') c = '\t'; else if (c == 'r') c = '\r'; else if (c == 'f') c = '\f'; else if (c == '\n') ++lineNumber; return c; }
private int readEscapeChar() { int c = getc(); if (c == 'n') c = '\n'; else if (c == 't') c = '\t'; else if (c == 'r') c = '\r'; else if (c == 'f') c = '\f'; else if (c == '\n') ++lineNumber; return c; }
private int readCharConst(Token token) { int c; int value = 0; while ((c = getc()) != '\'') if (c == '\\') value = readEscapeChar(); else if (c < 0x20) { if (c == '\n') ++lineNumber; return BadToken; } else value = c; token.longValue = value; return CharConstant; }
return c; else { c2 = getc(); if (c == c2) switch (c) { return ANDAND; case '<' : c3 = getc(); if (c3 == '=') return LSHIFT_E; c3 = getc(); if (c3 == '=') return RSHIFT_E; else if (c3 == '>') { c3 = getc(); if (c3 == '=') return ARSHIFT_E; c2 = getc(); if (c2 == '=') return EXOR_E; c2 = getc(); if (c2 == '=') return OR_E;
private int readCharConst(Token token) { int c; int value = 0; while ((c = getc()) != '\'') if (c == '\\') value = readEscapeChar(); else if (c < 0x20) { if (c == '\n') ++lineNumber; return BadToken; } else value = c; token.longValue = value; return CharConstant; }
private int readIdentifier(int c, Token token) { StringBuffer tbuf = textBuffer; tbuf.setLength(0); do { tbuf.append((char)c); c = getc(); } while (Character.isJavaIdentifierPart((char)c)); ungetc(c); String name = tbuf.toString(); int t = ktable.lookup(name); if (t >= 0) return t; else { /* tbuf.toString() is executed quickly since it does not * need memory copy. Using a hand-written extensible * byte-array class instead of StringBuffer is not a good idea * for execution speed. Converting a byte array to a String * object is very slow. Using an extensible char array * might be OK. */ token.textValue = name; return Identifier; } }
private int readStringL(Token token) { int c; StringBuffer tbuf = textBuffer; tbuf.setLength(0); for (;;) { while ((c = getc()) != '"') { if (c == '\\') c = readEscapeChar(); else if (c == '\n' || c < 0) { ++lineNumber; return BadToken; } tbuf.append((char)c); } for (;;) { c = getc(); if (c == '\n') ++lineNumber; else if (!isBlank(c)) break; } if (c != '"') { ungetc(c); break; } } token.textValue = tbuf.toString(); return StringL; }
private int readNumber(int c, Token token) { long value = 0; int c2 = getc(); if (c == '0') if (c2 == 'X' || c2 == 'x') for (;;) { c = getc(); if ('0' <= c && c <= '9') value = value * 16 + (long)(c - '0'); value = c2 - '0'; for (;;) { c = getc(); if ('0' <= c && c <= '7') value = value * 8 + (long)(c - '0'); while ('0' <= c2 && c2 <= '9') { value = value * 10 + c2 - '0'; c2 = getc();
if (t == 0) return c; c2 = getc(); if (c == c2) switch (c) { return ANDAND; case '<' : c3 = getc(); if (c3 == '=') return LSHIFT_E; return LSHIFT; case '>' : c3 = getc(); if (c3 == '=') return RSHIFT_E; else if (c3 == '>') { c3 = getc(); if (c3 == '=') return ARSHIFT_E; c2 = getc(); if (c2 == '=') return EXOR_E; c2 = getc(); if (c2 == '=') return OR_E;
private int readIdentifier(int c, Token token) { StringBuffer tbuf = textBuffer; tbuf.setLength(0); do { tbuf.append((char)c); c = getc(); } while (Character.isJavaIdentifierPart((char)c)); ungetc(c); String name = tbuf.toString(); int t = ktable.lookup(name); if (t >= 0) return t; /* tbuf.toString() is executed quickly since it does not * need memory copy. Using a hand-written extensible * byte-array class instead of StringBuffer is not a good idea * for execution speed. Converting a byte array to a String * object is very slow. Using an extensible char array * might be OK. */ token.textValue = name; return Identifier; }
private int readStringL(Token token) { int c; StringBuffer tbuf = textBuffer; tbuf.setLength(0); for (;;) { while ((c = getc()) != '"') { if (c == '\\') c = readEscapeChar(); else if (c == '\n' || c < 0) { ++lineNumber; return BadToken; } tbuf.append((char)c); } for (;;) { c = getc(); if (c == '\n') ++lineNumber; else if (!isBlank(c)) break; } if (c != '"') { ungetc(c); break; } } token.textValue = tbuf.toString(); return StringL; }
private int readNumber(int c, Token token) { long value = 0; int c2 = getc(); if (c == '0') if (c2 == 'X' || c2 == 'x') for (;;) { c = getc(); if ('0' <= c && c <= '9') value = value * 16 + (c - '0'); value = c2 - '0'; for (;;) { c = getc(); if ('0' <= c && c <= '7') value = value * 8 + (c - '0'); while ('0' <= c2 && c2 <= '9') { value = value * 10 + c2 - '0'; c2 = getc();
return readNumber(c, token); else if(c == '.'){ c = getc(); if ('0' <= c && c <= '9') { StringBuffer tbuf = textBuffer;
private int readLine(Token token) { int c = getNextNonWhiteChar(); if(c < 0) return c; else if(c == '\n') { ++lineNumber; return '\n'; } else if (c == '\'') return readCharConst(token); else if (c == '"') return readStringL(token); else if ('0' <= c && c <= '9') return readNumber(c, token); else if(c == '.'){ c = getc(); if ('0' <= c && c <= '9') { StringBuffer tbuf = textBuffer; tbuf.setLength(0); tbuf.append('.'); return readDouble(tbuf, c, token); } ungetc(c); return readSeparator('.'); } else if (Character.isJavaIdentifierStart((char)c)) return readIdentifier(c, token); return readSeparator(c); }
private int readEscapeChar() { int c = getc(); if (c == 'n') c = '\n'; else if (c == 't') c = '\t'; else if (c == 'r') c = '\r'; else if (c == 'f') c = '\f'; else if (c == '\n') ++lineNumber; return c; }
private int readEscapeChar() { int c = getc(); if (c == 'n') c = '\n'; else if (c == 't') c = '\t'; else if (c == 'r') c = '\r'; else if (c == 'f') c = '\f'; else if (c == '\n') ++lineNumber; return c; }