while (!end) {
int ttype;
try {
ttype = st.nextToken();
} catch (final IOException e) {
throw new WinkParseException(e);
}
switch (ttype) {
case StreamTokenizer.TT_EOF:
end = true;
break;
case StreamTokenizer.TT_WORD:
if (!identifyBegin) {
final String identifier = st.sval;
final String ltName = lt.getNamespace().getLastName();
if (identifier.indexOf(ltName) != -1) {
final int ln = relativeShiftLine + (st.lineno() - 1);
lt.setLineStart(ln);
identifyBegin = true;
}
}
if (afterBlock) {
end = true;
}
break;
case StreamTokenizer.TT_NUMBER:
if (afterBlock) {
end = true;
}
break;
default:
if (afterBlock) {
afterBlockBuffer.append((char) ttype);
final String c = new String(new StringBuffer().append((char) ttype));
if (c.equals(",") || c.equals(";")) {
if (afterBlockBuffer.toString().trim().length() == 1) {
final int ln = relativeShiftLine + (st.lineno() - 1);
lt.setLineEnd(ln);
end = true;
}
}
} else if (identifyBegin) {
final String c = new String(new StringBuffer().append((char) ttype));
if (c.equals("{")) {
if (lpCount == 0) {
inBlock = true;
}
lpCount++;
} else if (c.equals("}")) {
if (inBlock) {
rpCount++;
}
}
if (inBlock) {
if (lpCount == rpCount) {
final int ln = relativeShiftLine + (st.lineno() - 1);
lt.setLineEnd(ln);
inBlock = false;
afterBlock = true;
// end = true;
}
}
}
break;
}
}
if (lpCount != rpCount) {
throw new WinkParseException("bad syntax : left braces count differ from right braces count in " + lt.getNamespace());
}
}