| Code with Finding: |
class Parser {
private Node xmlInitializer() throws IOException
{
int tt = ts.getFirstXMLToken();
int lineno = ts.getLineno();
int charno = ts.getCharno();
if (tt != Token.XML && tt != Token.XMLEND) {
reportError("msg.syntax");
return null;
}
/* Make a NEW node to append to. */
Node pnXML = nf.createLeaf(Token.NEW, lineno, charno);
String xml = ts.getString();
lineno = ts.getLineno();
charno = ts.getCharno();
boolean fAnonymous = xml.trim().startsWith("<>");
Node pn = nf.createName(fAnonymous ? "XMLList" : "XML", lineno, charno);
nf.addChildToBack(pnXML, pn);
pn = null;
Node expr;
for (;;tt = ts.getNextXMLToken()) {
switch (tt) {
case Token.XML:
xml = ts.getString();
lineno = ts.getLineno();
charno = ts.getCharno();
decompiler.addName(xml);
mustMatchToken(Token.LC, "msg.syntax");
decompiler.addToken(Token.LC);
expr = (peekToken() == Token.RC)
? nf.createString("", lineno, charno)
: expr(false);
mustMatchToken(Token.RC, "msg.syntax");
decompiler.addToken(Token.RC);
if (pn == null) {
pn = nf.createString(xml, lineno, charno);
} else {
pn = nf.createBinary(Token.ADD, pn,
nf.createString(xml, lineno, charno), lineno, charno);
}
int nodeType;
if (ts.isXMLAttribute()) {
nodeType = Token.ESCXMLATTR;
} else {
nodeType = Token.ESCXMLTEXT;
}
expr = nf.createUnary(nodeType, expr, lineno, charno);
pn = nf.createBinary(Token.ADD, pn, expr, lineno, charno);
break;
case Token.XMLEND:
xml = ts.getString();
lineno = ts.getLineno();
charno = ts.getCharno();
decompiler.addName(xml);
if (pn == null) {
pn = nf.createString(xml, lineno, charno);
} else {
pn = nf.createBinary(Token.ADD, pn,
nf.createString(xml, lineno, charno), lineno, charno);
}
nf.addChildToBack(pnXML, pn);
return pnXML;
default:
reportError("msg.syntax");
return null;
}
}
}
}
|