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

📄 scopeassignedvisitor.java

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

import java.util.ArrayList;
import java.util.List;

import org.python.pydev.parser.jython.SimpleNode;
import org.python.pydev.parser.jython.ast.Assign;
import org.python.pydev.parser.jython.ast.Attribute;
import org.python.pydev.parser.jython.ast.ClassDef;
import org.python.pydev.parser.jython.ast.FunctionDef;
import org.python.pydev.parser.jython.ast.Import;
import org.python.pydev.parser.jython.ast.ImportFrom;
import org.python.pydev.parser.jython.ast.Module;
import org.python.pydev.parser.jython.ast.Name;
import org.python.pydev.refactoring.ast.adapters.AbstractScopeNode;
import org.python.pydev.refactoring.ast.adapters.ModuleAdapter;
import org.python.pydev.refactoring.ast.adapters.SimpleAdapter;

public class ScopeAssignedVisitor extends AbstractContextVisitor<SimpleAdapter> {

	private List<String> globalVars;

	public ScopeAssignedVisitor(ModuleAdapter module, AbstractScopeNode<?> parent) {
		super(module, parent);
		globalVars = new ArrayList<String>();
	}

	@Override
	protected void registerInContext(SimpleNode node) {
		String varName = nodeHelper.getName(node);
		if (!(globalVars.contains(varName))) {
			globalVars.add(varName);
			super.registerInContext(node);
		}

	}

	@Override
	public Object visitImport(Import node) throws Exception {
		return null;
	}

	@Override
	public Object visitImportFrom(ImportFrom node) throws Exception {
		return null;
	}

	@Override
	public Object visitName(Name node) throws Exception {
		if (nodeHelper.isAssign(stack.peek()))
			registerInContext(node);
		return null;
	}

	@Override
	public Object visitAttribute(Attribute node) throws Exception {
		// ignore attribute (must)
		return null;
	}

	@Override
	public Object visitAssign(Assign node) throws Exception {
		before(node);
		visit(node.targets);
		after();
		return null;
	}

	@Override
	public Object visitModule(Module node) throws Exception {
		visit(node.body);
		return null;
	}

	@Override
	public Object visitFunctionDef(FunctionDef node) throws Exception {
		return null;
	}

	@Override
	public Object visitClassDef(ClassDef node) throws Exception {
		return null;
	}

	@Override
	protected SimpleAdapter createAdapter(AbstractScopeNode<?> parent, SimpleNode node) {
		return new SimpleAdapter(moduleAdapter, parent, node, moduleAdapter.getEndLineDelimiter());
	}

}

⌨️ 快捷键说明

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