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

📄 findlastlinevisitor.java

📁 Python Development Environment (Python IDE plugin for Eclipse). Features editor, code completion, re
💻 JAVA
字号:
package org.python.pydev.parser.visitors;

import java.util.List;

import org.python.pydev.parser.jython.SimpleNode;
import org.python.pydev.parser.jython.SpecialStr;
import org.python.pydev.parser.jython.ast.Attribute;
import org.python.pydev.parser.jython.ast.ImportFrom;
import org.python.pydev.parser.jython.ast.VisitorBase;

public class FindLastLineVisitor extends VisitorBase{

    private SimpleNode lastNode;
    private SpecialStr lastSpecialStr;

    @Override
    protected Object unhandled_node(SimpleNode node) throws Exception {
        this.lastNode = node;
        check(this.lastNode.specialsBefore);
        check(this.lastNode.specialsAfter);
        return null;
    }
    
    @Override
    public Object visitAttribute(Attribute node) throws Exception {
    	check(node.specialsBefore);
    	if (node.attr != null)
    		node.attr.accept(this);
        if (node.value != null)
        	node.value.accept(this);
        check(node.specialsAfter);
        return null;
    }

    private void check(List<Object> specials) {
        if(specials==null){
            return;
        }
        for (Object obj : specials) {
            if(obj instanceof SpecialStr){
                if(lastSpecialStr == null || lastSpecialStr.beginLine <= ((SpecialStr)obj).beginLine){
                    lastSpecialStr = (SpecialStr) obj;
                }
            }
        }
    }
    
    @Override
    public Object visitImportFrom(ImportFrom node) throws Exception {
        if (node.module != null){
            unhandled_node(node.module);
            node.module.accept(this);
        }
        
        if (node.names != null) {
            for (int i = 0; i < node.names.length; i++) {
                if (node.names[i] != null){
                    unhandled_node(node.names[i]);
                    node.names[i].accept(this);
                }
            }
        }
        unhandled_node(node);
        return null;
    }

    @Override
    public void traverse(SimpleNode node) throws Exception {
        node.traverse(this);
    }
    
    public SimpleNode getLastNode(){
        return lastNode;
    }
    
    public SpecialStr getLastSpecialStr(){
        return lastSpecialStr;
    }
    
}

⌨️ 快捷键说明

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