📄 symtab.java
字号:
errorType = enterClass("java.lang.Error"); exceptionType = enterClass("java.lang.Exception"); runtimeExceptionType = enterClass("java.lang.RuntimeException"); classNotFoundExceptionType = enterClass("java.lang.ClassNotFoundException"); noClassDefFoundErrorType = enterClass("java.lang.NoClassDefFoundError"); assertionErrorType = enterClass("java.lang.AssertionError"); classLoaderType = enterClass("java.lang.ClassLoader"); ClassType arrayClassType = (ClassType) ArrayType.arrayClass.type; arrayClassType.supertype_field = objectType; arrayClassType.interfaces_field = List.make(cloneableType, serializableType); ArrayType.arrayClass.members_field = new Scope(ArrayType.arrayClass); lengthVar = new VarSymbol(PUBLIC | FINAL, StaticName.fromString("length"), Type.intType, ArrayType.arrayClass); ArrayType.arrayClass.members().enter(lengthVar); Symbol cloneMethod = new MethodSymbol(PUBLIC, StaticName.fromString("clone"), new MethodType(Type.emptyList, objectType, Type.emptyList), objectType.tsym); ArrayType.arrayClass.members().enter(cloneMethod); nullConst = enterConstant("null", Type.botType); trueConst = enterConstant("true", Type.booleanType.constType(new Integer(1))); falseConst = enterConstant("false", Type.booleanType.constType(new Integer(0))); enterUnop("+", Type.intType, Type.intType, nop); enterUnop("+", Type.longType, Type.longType, nop); enterUnop("+", Type.floatType, Type.floatType, nop); enterUnop("+", Type.doubleType, Type.doubleType, nop); enterUnop("-", Type.intType, Type.intType, ineg); enterUnop("-", Type.longType, Type.longType, lneg); enterUnop("-", Type.floatType, Type.floatType, fneg); enterUnop("-", Type.doubleType, Type.doubleType, dneg); enterUnop("~", Type.intType, Type.intType, ixor); enterUnop("~", Type.longType, Type.longType, lxor); enterUnop("++", Type.byteType, Type.byteType, iadd); enterUnop("++", Type.shortType, Type.shortType, iadd); enterUnop("++", Type.charType, Type.charType, iadd); enterUnop("++", Type.intType, Type.intType, iadd); enterUnop("++", Type.longType, Type.longType, ladd); enterUnop("++", Type.floatType, Type.floatType, fadd); enterUnop("++", Type.doubleType, Type.doubleType, dadd); enterUnop("--", Type.byteType, Type.byteType, isub); enterUnop("--", Type.shortType, Type.shortType, isub); enterUnop("--", Type.charType, Type.charType, isub); enterUnop("--", Type.intType, Type.intType, isub); enterUnop("--", Type.longType, Type.longType, lsub); enterUnop("--", Type.floatType, Type.floatType, fsub); enterUnop("--", Type.doubleType, Type.doubleType, dsub); enterUnop("!", Type.booleanType, Type.booleanType, bool_not); enterUnop("<*nullchk*>", objectType, objectType, nullchk); enterBinop("+", stringType, stringType, stringType, string_add); enterBinop("+", stringType, Type.intType, stringType, string_add); enterBinop("+", stringType, Type.longType, stringType, string_add); enterBinop("+", stringType, Type.floatType, stringType, string_add); enterBinop("+", stringType, Type.doubleType, stringType, string_add); enterBinop("+", stringType, Type.booleanType, stringType, string_add); enterBinop("+", stringType, objectType, stringType, string_add); enterBinop("+", Type.intType, stringType, stringType, string_add); enterBinop("+", Type.longType, stringType, stringType, string_add); enterBinop("+", Type.floatType, stringType, stringType, string_add); enterBinop("+", Type.doubleType, stringType, stringType, string_add); enterBinop("+", Type.booleanType, stringType, stringType, string_add); enterBinop("+", objectType, stringType, stringType, string_add); enterBinop("+", Type.intType, Type.intType, Type.intType, iadd); enterBinop("+", Type.longType, Type.longType, Type.longType, ladd); enterBinop("+", Type.floatType, Type.floatType, Type.floatType, fadd); enterBinop("+", Type.doubleType, Type.doubleType, Type.doubleType, dadd); enterBinop("-", Type.intType, Type.intType, Type.intType, isub); enterBinop("-", Type.longType, Type.longType, Type.longType, lsub); enterBinop("-", Type.floatType, Type.floatType, Type.floatType, fsub); enterBinop("-", Type.doubleType, Type.doubleType, Type.doubleType, dsub); enterBinop("*", Type.intType, Type.intType, Type.intType, imul); enterBinop("*", Type.longType, Type.longType, Type.longType, lmul); enterBinop("*", Type.floatType, Type.floatType, Type.floatType, fmul); enterBinop("*", Type.doubleType, Type.doubleType, Type.doubleType, dmul); enterBinop("/", Type.intType, Type.intType, Type.intType, idiv); enterBinop("/", Type.longType, Type.longType, Type.longType, ldiv); enterBinop("/", Type.floatType, Type.floatType, Type.floatType, fdiv); enterBinop("/", Type.doubleType, Type.doubleType, Type.doubleType, ddiv); enterBinop("%", Type.intType, Type.intType, Type.intType, imod); enterBinop("%", Type.longType, Type.longType, Type.longType, lmod); enterBinop("%", Type.floatType, Type.floatType, Type.floatType, fmod); enterBinop("%", Type.doubleType, Type.doubleType, Type.doubleType, dmod); enterBinop("&", Type.booleanType, Type.booleanType, Type.booleanType, iand); enterBinop("&", Type.intType, Type.intType, Type.intType, iand); enterBinop("&", Type.longType, Type.longType, Type.longType, land); enterBinop("|", Type.booleanType, Type.booleanType, Type.booleanType, ior); enterBinop("|", Type.intType, Type.intType, Type.intType, ior); enterBinop("|", Type.longType, Type.longType, Type.longType, lor); enterBinop("^", Type.booleanType, Type.booleanType, Type.booleanType, ixor); enterBinop("^", Type.intType, Type.intType, Type.intType, ixor); enterBinop("^", Type.longType, Type.longType, Type.longType, lxor); enterBinop("<<", Type.intType, Type.intType, Type.intType, ishl); enterBinop("<<", Type.longType, Type.intType, Type.longType, lshl); enterBinop("<<", Type.intType, Type.longType, Type.intType, ishll); enterBinop("<<", Type.longType, Type.longType, Type.longType, lshll); enterBinop(">>", Type.intType, Type.intType, Type.intType, ishr); enterBinop(">>", Type.longType, Type.intType, Type.longType, lshr); enterBinop(">>", Type.intType, Type.longType, Type.intType, ishrl); enterBinop(">>", Type.longType, Type.longType, Type.longType, lshrl); enterBinop(">>>", Type.intType, Type.intType, Type.intType, iushr); enterBinop(">>>", Type.longType, Type.intType, Type.longType, lushr); enterBinop(">>>", Type.intType, Type.longType, Type.intType, iushrl); enterBinop(">>>", Type.longType, Type.longType, Type.longType, lushrl); enterBinop("<", Type.intType, Type.intType, Type.booleanType, if_icmplt) ; enterBinop("<", Type.longType, Type.longType, Type.booleanType, lcmp, iflt); enterBinop("<", Type.floatType, Type.floatType, Type.booleanType, fcmpg, iflt); enterBinop("<", Type.doubleType, Type.doubleType, Type.booleanType, dcmpg, iflt); enterBinop(">", Type.intType, Type.intType, Type.booleanType, if_icmpgt) ; enterBinop(">", Type.longType, Type.longType, Type.booleanType, lcmp, ifgt); enterBinop(">", Type.floatType, Type.floatType, Type.booleanType, fcmpl, ifgt); enterBinop(">", Type.doubleType, Type.doubleType, Type.booleanType, dcmpl, ifgt); enterBinop("<=", Type.intType, Type.intType, Type.booleanType, if_icmple) ; enterBinop("<=", Type.longType, Type.longType, Type.booleanType, lcmp, ifle); enterBinop("<=", Type.floatType, Type.floatType, Type.booleanType, fcmpg, ifle); enterBinop("<=", Type.doubleType, Type.doubleType, Type.booleanType, dcmpg, ifle); enterBinop(">=", Type.intType, Type.intType, Type.booleanType, if_icmpge) ; enterBinop(">=", Type.longType, Type.longType, Type.booleanType, lcmp, ifge); enterBinop(">=", Type.floatType, Type.floatType, Type.booleanType, fcmpl, ifge); enterBinop(">=", Type.doubleType, Type.doubleType, Type.booleanType, dcmpl, ifge); enterBinop("==", Type.intType, Type.intType, Type.booleanType, if_icmpeq) ; enterBinop("==", Type.longType, Type.longType, Type.booleanType, lcmp, ifeq); enterBinop("==", Type.floatType, Type.floatType, Type.booleanType, fcmpl, ifeq); enterBinop("==", Type.doubleType, Type.doubleType, Type.booleanType, dcmpl, ifeq); enterBinop("==", Type.booleanType, Type.booleanType, Type.booleanType, if_icmpeq) ; enterBinop("==", objectType, objectType, Type.booleanType, if_acmpeq) ; enterBinop("!=", Type.intType, Type.intType, Type.booleanType, if_icmpne) ; enterBinop("!=", Type.longType, Type.longType, Type.booleanType, lcmp, ifne); enterBinop("!=", Type.floatType, Type.floatType, Type.booleanType, fcmpl, ifne); enterBinop("!=", Type.doubleType, Type.doubleType, Type.booleanType, dcmpl, ifne); enterBinop("!=", Type.booleanType, Type.booleanType, Type.booleanType, if_icmpne) ; enterBinop("!=", objectType, objectType, Type.booleanType, if_acmpne) ; enterBinop("&&", Type.booleanType, Type.booleanType, Type.booleanType, bool_and); enterBinop("||", Type.booleanType, Type.booleanType, Type.booleanType, bool_or); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -