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

📄 sourceprinter.java

📁 大名鼎鼎的java动态脚本语言。已经通过了sun的认证
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        print(t,visit,"this",null,null);    }    public void visitLiteralThrow(GroovySourceAST t, int visit) {        print(t,visit,"throw ",null,null);    }    public void visitLiteralTrue(GroovySourceAST t,int visit) {        print(t,visit,"true",null,null);    }    public void visitLiteralTry(GroovySourceAST t,int visit) {        print(t,visit,"try ",null,null);    }    public void visitLiteralVoid(GroovySourceAST t,int visit) {        print(t,visit,"void",null," ");    }    public void visitLiteralWhile(GroovySourceAST t,int visit) {        printUpdatingTabLevel(t,visit,"while (",null,") ");    }    public void visitLnot(GroovySourceAST t, int visit) {        print(t,visit,"!",null,null);    }    public void visitLt(GroovySourceAST t, int visit) {        print(t,visit," < ",null,null);    }    public void visitMapConstructor(GroovySourceAST t, int visit) {        if (t.getNumberOfChildren() == 0) {            print(t,visit,"[:]",null,null);        } else {            printUpdatingTabLevel(t,visit,"[",null,"]");        }    }    public void visitMemberPointer(GroovySourceAST t, int visit) {        print(t,visit,".&",null,null);    }    public void visitMethodCall(GroovySourceAST t,int visit) {        printUpdatingTabLevel(t,visit,"("," ",")");    }    public void visitMinus(GroovySourceAST t,int visit) {        print(t,visit," - ",null,null);    }    public void visitMethodDef(GroovySourceAST t,int visit) {        //do nothing    }    public void visitModifiers(GroovySourceAST t,int visit) {        //do nothing    }    public void visitNotEqual(GroovySourceAST t, int visit) {        print(t,visit," != ",null,null);    }    public void visitNumInt(GroovySourceAST t,int visit) {        print(t,visit,t.getText(),null,null);    }    public void visitNumFloat(GroovySourceAST t,int visit) {        print(t,visit,t.getText(),null,null);    }    public void visitObjblock(GroovySourceAST t,int visit) {        if (visit == OPENING_VISIT) {            tabLevel++;            print(t,visit,"{");        } else {            tabLevel--;            print(t,visit,"}");        }    }    public void visitPackageDef(GroovySourceAST t, int visit) {        print(t,visit,"package ",null,null);    }    public void visitParameterDef(GroovySourceAST t,int visit) {        //do nothing    }    public void visitParameters(GroovySourceAST t,int visit) {        printUpdatingTabLevel(t,visit,"(",", ",") ");    }    public void visitPlus(GroovySourceAST t, int visit) {        print(t,visit," + ",null,null);    }    public void visitQuestion(GroovySourceAST t, int visit) {        // ternary operator        print(t,visit,"?",":",null);    }    public void visitRangeExclusive(GroovySourceAST t, int visit) {        print(t,visit,"..<",null,null);    }    public void visitRangeInclusive(GroovySourceAST t, int visit) {        print(t,visit,"..",null,null);    }    public void visitSlist(GroovySourceAST t,int visit) {        if (visit == OPENING_VISIT) {            tabLevel++;            print(t,visit,"{");        } else {            tabLevel--;            print(t,visit,"}");        }    }    public void visitStar(GroovySourceAST t,int visit) {        print(t,visit,"*",null,null);    }    public void visitStringConstructor(GroovySourceAST t,int visit) {        if (visit == OPENING_VISIT) {            stringConstructorCounter = 0;            print(t,visit,"\"");        }        if (visit == SUBSEQUENT_VISIT) {            // every other subsequent visit use an escaping $            if (stringConstructorCounter % 2 == 0) {               print(t,visit,"$");            }            stringConstructorCounter++;        }        if (visit == CLOSING_VISIT) {            print(t,visit,"\"");        }    }    public void visitStringLiteral(GroovySourceAST t,int visit) {        if (visit == OPENING_VISIT) {            String theString = escape(t.getText());        if (getParentNode().getType() != GroovyTokenTypes.LABELED_ARG &&            getParentNode().getType() != GroovyTokenTypes.STRING_CONSTRUCTOR) {                theString = "\"" + theString + "\"";            }            print(t,visit,theString);        }    }    private String escape(String literal) {        literal = literal.replaceAll("\n","\\\\<<REMOVE>>n"); // can't seem to do \n in one go with Java regex        literal = literal.replaceAll("<<REMOVE>>","");        return literal;    }    public void visitType(GroovySourceAST t,int visit) {        GroovySourceAST parent = getParentNode();        GroovySourceAST modifiers = parent.childOfType(GroovyTokenTypes.MODIFIERS);        // No need to print 'def' if we already have some modifiers        if (modifiers == null || modifiers.getNumberOfChildren() == 0) {            if (visit == OPENING_VISIT) {                if (t.getNumberOfChildren() == 0) {                    print(t,visit,"def");                }            }            if (visit == CLOSING_VISIT) {                print(t,visit," ");            }        }    }    public void visitTypecast(GroovySourceAST t,int visit) {        print(t,visit,"(",null,")");    }    public void visitVariableDef(GroovySourceAST t,int visit) {        // do nothing    }    public void visitDefault(GroovySourceAST t,int visit) {        if (visit == OPENING_VISIT) {            print(t,visit,"<" + tokenNames[t.getType()] + ">");            //out.print("<" + t.getType() + ">");        } else {            print(t,visit,"</" + tokenNames[t.getType()] + ">");            //out.print("</" + t.getType() + ">");        }    }    protected void printUpdatingTabLevel(GroovySourceAST t,int visit,String opening, String subsequent, String closing) {        if (visit == OPENING_VISIT && opening != null) {            print(t,visit,opening);            tabLevel++;        }        if (visit == SUBSEQUENT_VISIT && subsequent != null) {            print(t,visit,subsequent);        }        if (visit == CLOSING_VISIT && closing != null) {            tabLevel--;            print(t,visit,closing);        }    }    protected void print(GroovySourceAST t,int visit,String opening, String subsequent, String closing) {        if (visit == OPENING_VISIT && opening != null) {            print(t,visit,opening);        }        if (visit == SUBSEQUENT_VISIT && subsequent != null) {            print(t,visit,subsequent);        }        if (visit == CLOSING_VISIT && closing != null) {            print(t,visit,closing);        }    }    protected void print(GroovySourceAST t,int visit,String value) {        if(visit == OPENING_VISIT) {            printNewlineAndIndent(t, visit);        }        if (visit == CLOSING_VISIT) {            printNewlineAndIndent(t, visit);        }        out.print(value);    }    protected void printNewlineAndIndent(GroovySourceAST t, int visit) {        int currentLine = t.getLine();        if (lastLinePrinted == 0) { lastLinePrinted = currentLine; }        if (lastLinePrinted != currentLine) {            if (newLines) {                if (!(visit == OPENING_VISIT && t.getType() == GroovyTokenTypes.SLIST)) {                    for (int i=lastLinePrinted;i<currentLine;i++) {                        out.println();                    }                    if (lastLinePrinted > currentLine) {                        out.println();                    }                    if (visit == OPENING_VISIT || (visit == CLOSING_VISIT && lastLinePrinted > currentLine)) {                        for (int i=0;i<tabLevel;i++) {                            out.print("    ");                        }                    }                }            }            lastLinePrinted = Math.max(currentLine,lastLinePrinted);        }    }    public void push(GroovySourceAST t) {        stack.push(t);    }    public GroovySourceAST pop() {        if (!stack.empty()) {            return (GroovySourceAST) stack.pop();        }        return null;    }    private GroovySourceAST getParentNode() {        Object currentNode = stack.pop();        Object parentNode = stack.peek();        stack.push(currentNode);        return (GroovySourceAST) parentNode;    }}

⌨️ 快捷键说明

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