📄 treeinfo.java
字号:
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 + -