当前位置: 首页>>代码示例>>Java>>正文


Java Declarator.getArrayDim方法代码示例

本文整理汇总了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;
}
 
开发者ID:scouter-project,项目名称:scouter,代码行数:17,代码来源:TypeChecker.java

示例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)));
}
 
开发者ID:scouter-project,项目名称:scouter,代码行数:39,代码来源:Parser.java

示例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);
}
 
开发者ID:scouter-project,项目名称:scouter,代码行数:30,代码来源:Parser.java

示例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);
    }
}
 
开发者ID:scouter-project,项目名称:scouter,代码行数:30,代码来源:TypeChecker.java

示例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;
        }
}
 
开发者ID:scouter-project,项目名称:scouter,代码行数:29,代码来源:CodeGen.java

示例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();
}
 
开发者ID:scouter-project,项目名称:scouter,代码行数:7,代码来源:TypeChecker.java

示例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;
}
 
开发者ID:scouter-project,项目名称:scouter,代码行数:42,代码来源:CodeGen.java


注:本文中的scouter.javassist.compiler.ast.Declarator.getArrayDim方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。