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

📄 javacclassgenerator.java

📁 大名鼎鼎的java动态脚本语言。已经通过了sun的认证
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
////    public void visitIfElse(IfStatement ifElse) {//        onLineNumber(ifElse);////        ifElse.getBooleanExpression().visit(this);////        Label l0 = new Label();//        cv.visitJumpInsn(IFEQ, l0);//        ifElse.getIfBlock().visit(this);////        Label l1 = new Label();//        cv.visitJumpInsn(GOTO, l1);//        cv.visitLabel(l0);////        ifElse.getElseBlock().visit(this);//        cv.visitLabel(l1);//    }////    public void visitTernaryExpression(TernaryExpression expression) {//        onLineNumber(expression);////        expression.getBooleanExpression().visit(this);////        Label l0 = new Label();//        cv.visitJumpInsn(IFEQ, l0);//        expression.getTrueExpression().visit(this);////        Label l1 = new Label();//        cv.visitJumpInsn(GOTO, l1);//        cv.visitLabel(l0);////        expression.getFalseExpression().visit(this);//        cv.visitLabel(l1);//    }////    public void visitAssertStatement(AssertStatement statement) {//        onLineNumber(statement);////        //System.out.println("Assert: " + statement.getLineNumber() + " for: "//        // + statement.getText());////        BooleanExpression booleanExpression = statement.getBooleanExpression();//        booleanExpression.visit(this);////        Label l0 = new Label();//        cv.visitJumpInsn(IFEQ, l0);////        // do nothing////        Label l1 = new Label();//        cv.visitJumpInsn(GOTO, l1);//        cv.visitLabel(l0);////        // push expression string onto stack//        String expressionText = booleanExpression.getText();//        List list = new ArrayList();//        addVariableNames(booleanExpression, list);//        if (list.isEmpty()) {//            cv.visitLdcInsn(expressionText);//        }//        else {//            boolean first = true;////            // lets create a new expression//            cv.visitTypeInsn(NEW, "java/lang/StringBuffer");//            cv.visitInsn(DUP);//            cv.visitLdcInsn(expressionText + ". Values: ");////            cv.visitMethodInsn(INVOKESPECIAL, "java/lang/StringBuffer", "<init>", "(Ljava/lang/String;)V");////            int tempIndex = defineVariable(createVariableName("assert"), "java.lang.Object", false).getIndex();////            cv.visitVarInsn(ASTORE, tempIndex);////            for (Iterator iter = list.iterator(); iter.hasNext();) {//                String name = (String) iter.next();//                String text = name + " = ";//                if (first) {//                    first = false;//                }//                else {//                    text = ", " + text;//                }////                cv.visitVarInsn(ALOAD, tempIndex);//                cv.visitLdcInsn(text);//                cv.visitMethodInsn(//                    INVOKEVIRTUAL,//                    "java/lang/StringBuffer",//                    "append",//                    "(Ljava/lang/String;)Ljava/lang/StringBuffer;");//                cv.visitInsn(POP);////                cv.visitVarInsn(ALOAD, tempIndex);//                new VariableExpression(name).visit(this);//                cv.visitMethodInsn(//                    INVOKEVIRTUAL,//                    "java/lang/StringBuffer",//                    "append",//                    "(Ljava/lang/Object;)Ljava/lang/StringBuffer;");//                cv.visitInsn(POP);////            }//            cv.visitVarInsn(ALOAD, tempIndex);//        }////        // now the optional exception expression//        statement.getMessageExpression().visit(this);////        assertFailedMethod.call(cv);//        cv.visitLabel(l1);//    }////    public void visitTryCatchFinally(TryCatchStatement statement) {//        onLineNumber(statement);////        CatchStatement catchStatement = statement.getCatchStatement(0);////        Statement tryStatement = statement.getTryStatement();////        if (tryStatement.isEmpty() || catchStatement == null) {//            final Label l0 = new Label();//            cv.visitLabel(l0);////            tryStatement.visit(this);////            int index1 = defineVariable(this.createVariableName("exception"), "java.lang.Object").getIndex();//            int index2 = defineVariable(this.createVariableName("exception"), "java.lang.Object").getIndex();////            final Label l1 = new Label();//            cv.visitJumpInsn(JSR, l1);//            final Label l2 = new Label();//            cv.visitLabel(l2);//            final Label l3 = new Label();//            cv.visitJumpInsn(GOTO, l3);//            final Label l4 = new Label();//            cv.visitLabel(l4);//            cv.visitVarInsn(ASTORE, index1);//            cv.visitJumpInsn(JSR, l1);//            final Label l5 = new Label();//            cv.visitLabel(l5);//            cv.visitVarInsn(ALOAD, index1);//            cv.visitInsn(ATHROW);//            cv.visitLabel(l1);//            cv.visitVarInsn(ASTORE, index2);////            statement.getFinallyStatement().visit(this);////            cv.visitVarInsn(RET, index2);//            cv.visitLabel(l3);////            exceptionBlocks.add(new Runnable() {//                public void run() {//                    cv.visitTryCatchBlock(l0, l2, l4, null);//                    cv.visitTryCatchBlock(l4, l5, l4, null);//                }//            });////        }//        else {//            String exceptionVar = catchStatement.getVariable();//            String exceptionType =//                checkValidType(catchStatement.getExceptionType(), catchStatement, "in catch statement");////            int exceptionIndex = defineVariable(exceptionVar, exceptionType, false).getIndex();//            int index2 = defineVariable(this.createVariableName("exception"), "java.lang.Object").getIndex();//            int index3 = defineVariable(this.createVariableName("exception"), "java.lang.Object").getIndex();////            final Label l0 = new Label();//            cv.visitLabel(l0);////            tryStatement.visit(this);////            final Label l1 = new Label();//            cv.visitLabel(l1);//            Label l2 = new Label();//            cv.visitJumpInsn(JSR, l2);//            final Label l3 = new Label();//            cv.visitLabel(l3);//            Label l4 = new Label();//            cv.visitJumpInsn(GOTO, l4);//            final Label l5 = new Label();//            cv.visitLabel(l5);////            cv.visitVarInsn(ASTORE, exceptionIndex);////            if (catchStatement != null) {//                catchStatement.visit(this);//            }////            cv.visitJumpInsn(JSR, l2);//            final Label l6 = new Label();//            cv.visitLabel(l6);//            cv.visitJumpInsn(GOTO, l4);////            final Label l7 = new Label();//            cv.visitLabel(l7);//            cv.visitVarInsn(ASTORE, index2);//            cv.visitJumpInsn(JSR, l2);////            final Label l8 = new Label();//            cv.visitLabel(l8);//            cv.visitVarInsn(ALOAD, index2);//            cv.visitInsn(ATHROW);//            cv.visitLabel(l2);//            cv.visitVarInsn(ASTORE, index3);////            statement.getFinallyStatement().visit(this);////            cv.visitVarInsn(RET, index3);//            cv.visitLabel(l4);////            // rest of code goes here...////            //final String exceptionTypeInternalName = (catchStatement !=//            // null) ?//            // getTypeDescription(exceptionType) : null;//            final String exceptionTypeInternalName =//                (catchStatement != null) ? BytecodeHelper.getClassInternalName(exceptionType) : null;////            exceptionBlocks.add(new Runnable() {//                public void run() {//                    cv.visitTryCatchBlock(l0, l1, l5, exceptionTypeInternalName);//                    cv.visitTryCatchBlock(l0, l3, l7, null);//                    cv.visitTryCatchBlock(l5, l6, l7, null);//                    cv.visitTryCatchBlock(l7, l8, l7, null);//                }//            });//        }//    }////    public void visitSwitch(SwitchStatement statement) {//        onLineNumber(statement);////        statement.getExpression().visit(this);////        pushBlockScope();////        int switchVariableIndex = defineVariable(createVariableName("switch"), "java.lang.Object").getIndex();//        cv.visitVarInsn(ASTORE, switchVariableIndex);////        List caseStatements = statement.getCaseStatements();//        int caseCount = caseStatements.size();//        Label[] labels = new Label[caseCount + 1];//        for (int i = 0; i < caseCount; i++) {//            labels[i] = new Label();//        }////        int i = 0;//        for (Iterator iter = caseStatements.iterator(); iter.hasNext(); i++) {//            CaseStatement caseStatement = (CaseStatement) iter.next();//            visitCaseStatement(caseStatement, switchVariableIndex, labels[i], labels[i + 1]);//        }////        statement.getDefaultStatement().visit(this);////        cv.visitLabel(scope.getBreakLabel());////        popScope();//    }////    public void visitCaseStatement(CaseStatement statement) {//    }////    public void visitCaseStatement(//        CaseStatement statement,//        int switchVariableIndex,//        Label thisLabel,//        Label nextLabel) {////        onLineNumber(statement);////        cv.visitVarInsn(ALOAD, switchVariableIndex);//        statement.getExpression().visit(this);////        isCaseMethod.call(cv);////        Label l0 = new Label();//        cv.visitJumpInsn(IFEQ, l0);////        cv.visitLabel(thisLabel);////        statement.getCode().visit(this);////        // now if we don't finish with a break we need to jump past//        // the next comparison//        if (nextLabel != null) {//            cv.visitJumpInsn(GOTO, nextLabel);//        }////        cv.visitLabel(l0);//    }////    public void visitBreakStatement(BreakStatement statement) {//        onLineNumber(statement);////        cv.visitJumpInsn(GOTO, scope.getBreakLabel());//    }////    public void visitContinueStatement(ContinueStatement statement) {//        onLineNumber(statement);////        cv.visitJumpInsn(GOTO, scope.getContinueLabel());//    }////    public void visitSynchronizedStatement(SynchronizedStatement statement) {//        onLineNumber(statement);////        statement.getExpression().visit(this);////        int index = defineVariable(createVariableName("synchronized"), "java.lang.Integer").getIndex();////        cv.visitVarInsn(ASTORE, index);//        cv.visitInsn(MONITORENTER);//        final Label l0 = new Label();//        cv.visitLabel(l0);////        statement.getCode().visit(this);////        cv.visitVarInsn(ALOAD, index);//        cv.visitInsn(MONITOREXIT);//        final Label l1 = new Label();//        cv.visitJumpInsn(GOTO, l1);//        final Label l2 = new Label();//        cv.visitLabel(l2);//        cv.visitVarInsn(ALOAD, index);//        cv.visitInsn(MONITOREXIT);//        cv.visitInsn(ATHROW);//        cv.visitLabel(l1);////        exceptionBlocks.add(new Runnable() {//            public void run() {//                cv.visitTryCatchBlock(l0, l2, l2, null);//            }//        });//    }////    public void visitThrowStatement(ThrowStatement statement) {//        statement.getExpression().visit(this);////        // we should infer the type of the exception from the expression//        cv.visitTypeInsn(CHECKCAST, "java/lang/Throwable");////        cv.visitInsn(ATHROW);//    }////    public void visitReturnStatement(ReturnStatement statement) {//        onLineNumber(statement);////        Expression expression = statement.getExpression();//        evaluateExpression(expression);////        //return is based on class type//        //TODO: make work with arrays//        // we may need to cast//        String returnType = methodNode.getReturnType();//        helper.unbox(returnType);//        if (returnType.equals("double")) {//            cv.visitInsn(DRETURN);//        }//        else if (returnType.equals("float")) {//            cv.visitInsn(FRETURN);//        }//        else if (returnType.equals("long")) {//            cv.visitInsn(LRETURN);//        }//        else if (returnType.equals("boolean")) {//            cv.visitInsn(IRETURN);//        }//        else if (//            returnType.equals("char")//                || returnType.equals("byte")//                || returnType.equals("int")//                || returnType.equals("short")) { //byte,short,boolean,int are//            // all IRETURN//            cv.visitInsn(IRETURN);//        }//        else {//            doConvertAndCast(returnType, expression);//            cv.visitInsn(ARETURN);////            /*//            if (c == Boolean.class) {//                Label l0 = new Label();//                cv.visitJumpInsn(IFEQ, l0);//                cv.visitFieldInsn(GETSTATIC, "java/lang/Boolean", "TRUE", "Ljava/lang/Boolean;");//                cv.visitInsn(ARETURN);//                cv.visitLabel(l0);//                cv.visitFieldInsn(GETSTATIC, "java/lang/Boolean", "FALSE", "Ljava/lang/Boolean;");//                cv.visitInsn(ARETURN);//            }//            else {//                if (isValidTypeForCast(returnType) && !returnType.equals(c.getName())) {//                    doConvertAndCast(returnType, expression);//                }//                cv.visitInsn(ARETURN);//            }//            *///        }////        outputReturn = true;//    }}

⌨️ 快捷键说明

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