⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 treeinfo.java

📁 java编译器gjc源码 java编译环境
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            return ((Select) tree).name;

        default:
            return null;

        }
    }

    /**
      * If this tree is a qualified identifier, its return fully qualified name,
      *  otherwise return null.
      */
    public static Name fullName(Tree tree) {
        tree = skipParens(tree);
        switch (tree.tag) {
        case Tree.IDENT:
            return ((Ident) tree).name;

        case Tree.SELECT:
            Name sname = fullName(((Select) tree).selected);
            return sname == null ? null : sname.append('.', name(tree));

        default:
            return null;

        }
    }

    /**
      * If this tree is an identifier or a field, return its symbol,
      *  otherwise return null.
      */
    public static Symbol symbol(Tree tree) {
        tree = skipParens(tree);
        switch (tree.tag) {
        case Tree.IDENT:
            return ((Ident) tree).sym;

        case Tree.SELECT:
            return ((Select) tree).sym;

        default:
            return null;

        }
    }

    /**
      * If this tree is an identifier or a field, set its symbol, otherwise skip.
      */
    public static void setSymbol(Tree tree, Symbol sym) {
        tree = skipParens(tree);
        switch (tree.tag) {
        case Tree.IDENT:
            ((Ident) tree).sym = sym;
            break;

        case Tree.SELECT:
            ((Select) tree).sym = sym;
            break;

        default:

        }
    }

    /**
      * If this tree is a declaration or a block, return its flags field,
      *  otherwise return 0.
      */
    public static long flags(Tree tree) {
        switch (tree.tag) {
        case Tree.VARDEF:
            return ((VarDef) tree).flags;

        case Tree.METHODDEF:
            return ((MethodDef) tree).flags;

        case Tree.CLASSDEF:
            return ((ClassDef) tree).flags;

        case Tree.BLOCK:
            return ((Block) tree).flags;

        default:
            return 0;

        }
    }

    /**
      * Return first (smallest) flag in `flags':
      *  pre: flags != 0
      */
    public static long firstFlag(long flags) {
        int flag = 1;
        while ((flag & StandardFlags) != 0 && (flag & flags) == 0)
            flag = flag << 1;
        return flag;
    }

    /**
      * Return flags as a string, separated by " ".
      */
    public static String flagNames(long flags) {
        StringBuffer sbuf = new StringBuffer();
        int i = 0;
        long f = flags & StandardFlags;
        while (f != 0) {
            if ((f & 1) != 0) {
                if (sbuf.length() != 0)
                    sbuf.append(" ");
                sbuf.append(flagName[i]);
            }
            f = f >> 1;
            i++;
        }
        return sbuf.toString();
    }
    private static final String[] flagName = {"public", "private", "protected", "static",
    "final", "synchronized", "volatile", "transient", "native", "interface",
    "abstract", "strictfp"};

    /**
     * Operator precedences values.
     */
    public static final int notExpression = -1;

    /**
     * Operator precedences values.
     */
    public static final int noPrec = 0;

    /**
     * Operator precedences values.
     */
    public static final int assignPrec = 1;

    /**
     * Operator precedences values.
     */
    public static final int assignopPrec = 2;

    /**
     * Operator precedences values.
     */
    public static final int condPrec = 3;

    /**
     * Operator precedences values.
     */
    public static final int orPrec = 4;

    /**
     * Operator precedences values.
     */
    public static final int andPrec = 5;

    /**
     * Operator precedences values.
     */
    public static final int bitorPrec = 6;

    /**
     * Operator precedences values.
     */
    public static final int bitxorPrec = 7;

    /**
     * Operator precedences values.
     */
    public static final int bitandPrec = 8;

    /**
     * Operator precedences values.
     */
    public static final int eqPrec = 9;

    /**
     * Operator precedences values.
     */
    public static final int ordPrec = 10;

    /**
     * Operator precedences values.
     */
    public static final int shiftPrec = 11;

    /**
     * Operator precedences values.
     */
    public static final int addPrec = 12;

    /**
     * Operator precedences values.
     */
    public static final int mulPrec = 13;

    /**
     * Operator precedences values.
     */
    public static final int prefixPrec = 14;

    /**
     * Operator precedences values.
     */
    public static final int postfixPrec = 15;

    /**
     * Operator precedences values.
     */
    public static final int precCount = 16;

    /**
     * Map operators to their precedence levels.
     */
    public static int opPrec(int op) {
        switch (op) {
        case Tree.POS:

        case Tree.NEG:

        case Tree.NOT:

        case Tree.COMPL:

        case Tree.PREINC:

        case Tree.PREDEC:
            return prefixPrec;

        case Tree.POSTINC:

        case Tree.POSTDEC:

        case Tree.NULLCHK:
            return postfixPrec;

        case Tree.ASSIGN:
            return assignPrec;

        case Tree.BITOR_ASG:

        case Tree.BITXOR_ASG:

        case Tree.BITAND_ASG:

        case Tree.SL_ASG:

        case Tree.SR_ASG:

        case Tree.USR_ASG:

        case Tree.PLUS_ASG:

        case Tree.MINUS_ASG:

        case Tree.MUL_ASG:

        case Tree.DIV_ASG:

        case Tree.MOD_ASG:
            return assignopPrec;

        case Tree.OR:
            return orPrec;

        case Tree.AND:
            return andPrec;

        case Tree.EQ:

        case Tree.NE:
            return eqPrec;

        case Tree.LT:

        case Tree.GT:

        case Tree.LE:

        case Tree.GE:
            return ordPrec;

        case Tree.BITOR:
            return bitorPrec;

        case Tree.BITXOR:
            return bitxorPrec;

        case Tree.BITAND:
            return bitandPrec;

        case Tree.SL:

        case Tree.SR:

        case Tree.USR:
            return shiftPrec;

        case Tree.PLUS:

        case Tree.MINUS:
            return addPrec;

        case Tree.MUL:

        case Tree.DIV:

        case Tree.MOD:
            return mulPrec;

        case Tree.TYPETEST:
            return ordPrec;

        default:
            throw new AssertionError();

        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -