@Override public Object visitFspareswitch(SmaliParser.FspareswitchContext ctx) { List<TerminalNode> ints = ctx.INT(); List<TerminalNode> ts = ctx.LABEL(); int cases[] = new int[ts.size()]; DexLabel labels[] = new DexLabel[ts.size()]; for (int i = 0; i < ts.size(); i++) { cases[i] = parseInt(ints.get(i).getSymbol().getText()); labels[i] = getLabel(ts.get(i).getSymbol().getText()); } scv.dSparseSwitch(cases, labels); return null; }
@Override public Object visitF2sb(SmaliParser.F2sbContext ctx) { scv.visitStmt2R1N(getOp(ctx.op), m.pareReg(ctx.r1.getText()), m.pareReg(ctx.r2.getText()), parseInt(ctx.lit.getText())); return null; }
@Override public Object visitFconst(SmaliParser.FconstContext ctx) { Op op = getOp(ctx.op); int r = m.pareReg(ctx.r1.getText()); Token cst = ctx.cst;
@Override public Object visitFmrc(SmaliParser.FmrcContext ctx) { if (ctx.rstart != null) { int start = m.pareReg(ctx.rstart.getText()); int end = m.pareReg(ctx.rend.getText()); int size = end - start + 1; int rs[] = new int[size]; for (int i = 0; i < size; i++) { rs[i] = start + i; } scv.visitMethodStmt(getOp(ctx.op), rs, parseMethodAndUnescape(ctx.method.getText())); } else { scv.visitMethodStmt(getOp(ctx.op), new int[0], parseMethodAndUnescape(ctx.method.getText())); } return null; }
@Override public Object visitFtrc(SmaliParser.FtrcContext ctx) { if (ctx.rstart != null) { int start = m.pareReg(ctx.rstart.getText()); int end = m.pareReg(ctx.rend.getText()); int size = end - start + 1; int rs[] = new int[size]; for (int i = 0; i < size; i++) { rs[i] = start + i; } scv.visitFilledNewArrayStmt(getOp(ctx.op), rs, unEscapeId(ctx.type.getText())); } else { scv.visitFilledNewArrayStmt(getOp(ctx.op), new int[0], unEscapeId(ctx.type.getText())); } return null; }
@Override public Object visitSLabel(SmaliParser.SLabelContext ctx) { scv.visitLabel(getLabel(ctx.label.getText())); return null; }
@Override public Object visitF2x(SmaliParser.F2xContext ctx) { int r1 = m.pareReg(ctx.r1.getText()); int r2 = m.pareReg(ctx.r2.getText()); scv.visitStmt2R(getOp(ctx.op), r1, r2); return null; }
@Override public Object visitFm5c(SmaliParser.Fm5cContext ctx) { Op op = getOp(ctx.op); List<TerminalNode> ts = ctx.REGISTER(); int rs[] = new int[ts.size()]; for (int i = 0; i < ts.size(); i++) { rs[i] = m.pareReg(ts.get(i).getSymbol().getText()); } scv.visitMethodStmt(op, rs, parseMethodAndUnescape(ctx.method.getText())); return null; }
@Override public Object visitFt2c(SmaliParser.Ft2cContext ctx) { int r1 = m.pareReg(ctx.r1.getText()); int r2 = m.pareReg(ctx.r2.getText()); scv.visitTypeStmt(getOp(ctx.op), r1, r2, unEscapeId(ctx.type.getText())); return null; }
@Override public Object visitF0x(SmaliParser.F0xContext ctx) { scv.visitStmt0R(getOp(ctx.op)); return null; }
@Override public Object visitFt5c(SmaliParser.Ft5cContext ctx) { Op op = getOp(ctx.op); List<TerminalNode> ts = ctx.REGISTER(); int rs[] = new int[ts.size()]; for (int i = 0; i < ts.size(); i++) { rs[i] = m.pareReg(ts.get(i).getSymbol().getText()); } scv.visitFilledNewArrayStmt(op, rs, unEscapeId(ctx.type.getText())); return null; }
@Override public Object visitF3x(SmaliParser.F3xContext ctx) { int r1 = m.pareReg(ctx.r1.getText()); int r2 = m.pareReg(ctx.r2.getText()); int r3 = m.pareReg(ctx.r3.getText()); scv.visitStmt3R(getOp(ctx.op), r1, r2, r3); return null; }
@Override public Object visitFf1c(SmaliParser.Ff1cContext ctx) { int r = m.pareReg(ctx.r1.getText()); Field field = parseFieldAndUnescape(ctx.fld.getText()); scv.visitFieldStmt(getOp(ctx.op), r, 0, field); return null; }
@Override public Object visitFf2c(SmaliParser.Ff2cContext ctx) { int r1 = m.pareReg(ctx.r1.getText()); int r2 = m.pareReg(ctx.r2.getText()); scv.visitFieldStmt(getOp(ctx.op), r1, r2, parseFieldAndUnescape(ctx.fld.getText())); return null; }