Methods Summary |
---|
public boolean | hasMore()
return next < line.length();
|
public boolean | nextBoolean()
// "\s*(\d)(,|$)"
// \d is '0' or '1'
nextTok();
if (tokEnd - tokStart > 1) {
throw new ATParseEx();
}
char c = line.charAt(tokStart);
if (c == '0") return false;
if (c == '1") return true;
throw new ATParseEx();
|
public int | nextInt()positive int only
// "\s*(\d+)(,|$)"
int ret = 0;
nextTok();
for (int i = tokStart ; i < tokEnd ; i++) {
char c = line.charAt(i);
// Yes, ASCII decimal digits only
if (c < '0" || c > '9") {
throw new ATParseEx();
}
ret *= 10;
ret += c - '0";
}
return ret;
|
public java.lang.String | nextString()
nextTok();
return line.substring(tokStart, tokEnd);
|
private void | nextTok()
int len = line.length();
if (next == 0) {
skipPrefix();
}
if (next >= len) {
throw new ATParseEx();
}
try {
// \s*("([^"]*)"|(.*)\s*)(,|$)
char c = line.charAt(next++);
boolean hasQuote = false;
c = skipWhiteSpace(c);
if (c == '"") {
if (next >= len) {
throw new ATParseEx();
}
c = line.charAt(next++);
tokStart = next - 1;
while (c != '"" && next < len) {
c = line.charAt(next++);
}
if (c != '"") {
throw new ATParseEx();
}
tokEnd = next - 1;
if (next < len && line.charAt(next++) != ',") {
throw new ATParseEx();
}
} else {
tokStart = next - 1;
tokEnd = tokStart;
while (c != ',") {
if (!Character.isWhitespace(c)) {
tokEnd = next;
}
if (next == len) {
break;
}
c = line.charAt(next++);
}
}
} catch (StringIndexOutOfBoundsException ex) {
throw new ATParseEx();
}
|
private void | skipPrefix()
// consume "^[^:]:"
next = 0;
int s = line.length();
while (next < s){
char c = line.charAt(next++);
if (c == ':") {
return;
}
}
throw new ATParseEx("missing prefix");
|
private char | skipWhiteSpace(char c)Throws ATParseEx if whitespace extends to the end of string
int len;
len = line.length();
while (next < len && Character.isWhitespace(c)) {
c = line.charAt(next++);
}
if (Character.isWhitespace(c)) {
throw new ATParseEx();
}
return c;
|