本文整理汇总了Java中scouter.javassist.compiler.ast.Declarator.getArrayDim方法的典型用法代码示例。如果您正苦于以下问题:Java Declarator.getArrayDim方法的具体用法?Java Declarator.getArrayDim怎么用?Java Declarator.getArrayDim使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类scouter.javassist.compiler.ast.Declarator
的用法示例。
在下文中一共展示了Declarator.getArrayDim方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: atVariableAssign
import scouter.javassist.compiler.ast.Declarator; //导入方法依赖的package包/类
private void atVariableAssign(Expr expr, int op, Variable var,
Declarator d, ASTree right)
throws CompileError
{
int varType = d.getType();
int varArray = d.getArrayDim();
String varClass = d.getClassName();
if (op != '=')
atVariable(var);
right.accept(this);
exprType = varType;
arrayDim = varArray;
className = varClass;
}
示例2: parseMethod1
import scouter.javassist.compiler.ast.Declarator; //导入方法依赖的package包/类
private MethodDecl parseMethod1(SymbolTable tbl, boolean isConstructor,
ASTList mods, Declarator d)
throws CompileError
{
if (lex.get() != '(')
throw new SyntaxError(lex);
ASTList parms = null;
if (lex.lookAhead() != ')')
while (true) {
parms = ASTList.append(parms, parseFormalParam(tbl));
int t = lex.lookAhead();
if (t == ',')
lex.get();
else if (t == ')')
break;
}
lex.get(); // ')'
d.addArrayDim(parseArrayDimension());
if (isConstructor && d.getArrayDim() > 0)
throw new SyntaxError(lex);
ASTList throwsList = null;
if (lex.lookAhead() == THROWS) {
lex.get();
while (true) {
throwsList = ASTList.append(throwsList, parseClassType(tbl));
if (lex.lookAhead() == ',')
lex.get();
else
break;
}
}
return new MethodDecl(mods, new ASTList(d,
ASTList.make(parms, throwsList, null)));
}
示例3: parseTry
import scouter.javassist.compiler.ast.Declarator; //导入方法依赖的package包/类
private Stmnt parseTry(SymbolTable tbl) throws CompileError {
lex.get(); // TRY
Stmnt block = parseBlock(tbl);
ASTList catchList = null;
while (lex.lookAhead() == CATCH) {
lex.get(); // CATCH
if (lex.get() != '(')
throw new SyntaxError(lex);
SymbolTable tbl2 = new SymbolTable(tbl);
Declarator d = parseFormalParam(tbl2);
if (d.getArrayDim() > 0 || d.getType() != CLASS)
throw new SyntaxError(lex);
if (lex.get() != ')')
throw new SyntaxError(lex);
Stmnt b = parseBlock(tbl2);
catchList = ASTList.append(catchList, new Pair(d, b));
}
Stmnt finallyBlock = null;
if (lex.lookAhead() == FINALLY) {
lex.get(); // FINALLY
finallyBlock = parseBlock(tbl);
}
return Stmnt.make(TRY, block, catchList, finallyBlock);
}
示例4: atPlusPlus
import scouter.javassist.compiler.ast.Declarator; //导入方法依赖的package包/类
private void atPlusPlus(int token, ASTree oprand, Expr expr)
throws CompileError
{
boolean isPost = oprand == null; // ++i or i++?
if (isPost)
oprand = expr.oprand2();
if (oprand instanceof Variable) {
Declarator d = ((Variable)oprand).getDeclarator();
exprType = d.getType();
arrayDim = d.getArrayDim();
}
else {
if (oprand instanceof Expr) {
Expr e = (Expr)oprand;
if (e.getOperator() == ARRAY) {
atArrayRead(e.oprand1(), e.oprand2());
// arrayDim should be 0.
int t = exprType;
if (t == INT || t == BYTE || t == CHAR || t == SHORT)
exprType = INT;
return;
}
}
atFieldPlusPlus(oprand);
}
}
示例5: atVariable
import scouter.javassist.compiler.ast.Declarator; //导入方法依赖的package包/类
public void atVariable(Variable v) throws CompileError {
Declarator d = v.getDeclarator();
exprType = d.getType();
arrayDim = d.getArrayDim();
className = d.getClassName();
int var = getLocalVar(d);
if (arrayDim > 0)
bytecode.addAload(var);
else
switch (exprType) {
case CLASS :
bytecode.addAload(var);
break;
case LONG :
bytecode.addLload(var);
break;
case FLOAT :
bytecode.addFload(var);
break;
case DOUBLE :
bytecode.addDload(var);
break;
default : // BOOLEAN, BYTE, CHAR, SHORT, INT
bytecode.addIload(var);
break;
}
}
示例6: atVariable
import scouter.javassist.compiler.ast.Declarator; //导入方法依赖的package包/类
public void atVariable(Variable v) throws CompileError {
Declarator d = v.getDeclarator();
exprType = d.getType();
arrayDim = d.getArrayDim();
className = d.getClassName();
}
示例7: atVariableAssign
import scouter.javassist.compiler.ast.Declarator; //导入方法依赖的package包/类
private void atVariableAssign(Expr expr, int op, Variable var,
Declarator d, ASTree right,
boolean doDup) throws CompileError
{
int varType = d.getType();
int varArray = d.getArrayDim();
String varClass = d.getClassName();
int varNo = getLocalVar(d);
if (op != '=')
atVariable(var);
// expr is null if the caller is atDeclarator().
if (expr == null && right instanceof ArrayInit)
atArrayVariableAssign((ArrayInit)right, varType, varArray, varClass);
else
atAssignCore(expr, op, right, varType, varArray, varClass);
if (doDup)
if (is2word(varType, varArray))
bytecode.addOpcode(DUP2);
else
bytecode.addOpcode(DUP);
if (varArray > 0)
bytecode.addAstore(varNo);
else if (varType == DOUBLE)
bytecode.addDstore(varNo);
else if (varType == FLOAT)
bytecode.addFstore(varNo);
else if (varType == LONG)
bytecode.addLstore(varNo);
else if (isRefType(varType))
bytecode.addAstore(varNo);
else
bytecode.addIstore(varNo);
exprType = varType;
arrayDim = varArray;
className = varClass;
}