[Pydev-cvs] org.python.pydev/src/org/python/pydev/editor/dictionary PyDClassItem.java,NONE,1.1 PyDFu
Brought to you by:
fabioz
From: Aleksandar T. <at...@us...> - 2004-03-30 01:15:10
|
Update of /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/dictionary In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3679/src/org/python/pydev/editor/dictionary Added Files: PyDClassItem.java PyDFunctionItem.java DebugVisitor.java PyDictionaryItem.java PyDLocalItem.java PyDEditorItem.java PopulateDictionary.java PyDictionary.java Log Message: Started imoplementation of the PyDictionary --- NEW FILE: DebugVisitor.java --- /* * Author: atotic * Created on Mar 29, 2004 * License: Common Public License v1.0 */ package org.python.pydev.editor.dictionary; import org.python.parser.SimpleNode; import org.python.parser.ast.*; /** * For debugging only. Prints out all the results of a visitor pattern. * This is a org.python.parser visitor. */ class DebugVisitor extends VisitorBase { DebugVisitor() { } protected Object unhandled_node(SimpleNode node) throws Exception { System.out.println("unhandled_node"); return null; } public void traverse(SimpleNode node) throws Exception { System.out.println("traverse"); } public Object visitAttribute(Attribute node) throws Exception { System.out.println("visitAttribute " + node.attr); return null; } public Object visitClassDef(ClassDef node) throws Exception { System.out.println("visitClassDef:" + node.name); return null; } public Object visitExpr(Expr node) throws Exception { System.out.println("visitExpr:" + node.toString("")); return null; } public Object visitExpression(Expression node) throws Exception { System.out.println("visitExpression:" + node.toString("")); return null; } public Object visitFunctionDef(FunctionDef node) throws Exception { System.out.println("visitFunctionDef:" + node.toString("")); return null; } public Object visitGlobal(Global node) throws Exception { System.out.println("visitGlobal:" + node.toString("")); return null; } public Object visitName(Name node) throws Exception { System.out.println("visitName:" + node.toString("")); return null; } public Object visitAssert(Assert node) throws Exception { System.out.println("visitAssert:" + node.toString("")); return null; } public Object visitAssign(Assign node) throws Exception { System.out.println("visitAssign:" + node.toString("")); return null; } public Object visitAugAssign(AugAssign node) throws Exception { System.out.println("visitAugAssign:" + node.toString("")); return null; } public Object visitBinOp(BinOp node) throws Exception { System.out.println("visitBinOp:" + node.toString("")); return null; } public Object visitBoolOp(BoolOp node) throws Exception { System.out.println("visitBoolOp:" + node.toString("")); return null; } public Object visitBreak(Break node) throws Exception { System.out.println("visitBreak:" + node.toString("")); return null; } public Object visitCall(Call node) throws Exception { System.out.println("visitCall:" + node.toString("")); return null; } public Object visitCompare(Compare node) throws Exception { System.out.println("visitCompare:" + node.toString("")); return null; } public Object visitContinue(Continue node) throws Exception { System.out.println("visitContinue:" + node.toString("")); return null; } public Object visitDelete(Delete node) throws Exception { System.out.println("visitDelete:" + node.toString("")); return null; } public Object visitDict(Dict node) throws Exception { System.out.println("visitDict:" + node.toString("")); return null; } public Object visitEllipsis(Ellipsis node) throws Exception { System.out.println("visitEllipsis:" + node.toString("")); return null; } public Object visitExec(Exec node) throws Exception { System.out.println("visitExec:" + node.toString("")); return null; } public Object visitExtSlice(ExtSlice node) throws Exception { System.out.println("visitExtSlice:" + node.toString("")); return null; } public Object visitFor(For node) throws Exception { System.out.println("visitFor:" + node.toString("")); return null; } public Object visitIf(If node) throws Exception { System.out.println("visitIf:" + node.toString("")); return null; } public Object visitImport(Import node) throws Exception { System.out.println("visitImport:" + node.toString("")); return null; } public Object visitImportFrom(ImportFrom node) throws Exception { System.out.println("visitImportFrom:" + node.toString("")); return null; } public Object visitIndex(Index node) throws Exception { System.out.println("visitIndex:" + node.toString("")); return null; } public Object visitInteractive(Interactive node) throws Exception { System.out.println("visitInteractive:" + node.toString("")); return null; } public Object visitLambda(Lambda node) throws Exception { System.out.println("visitLambda:" + node.toString("")); return null; } public Object visitList(List node) throws Exception { System.out.println("visitList:" + node.toString("")); return null; } public Object visitListComp(ListComp node) throws Exception { System.out.println("visitListComp:" + node.toString("")); return null; } public Object visitModule(Module node) throws Exception { System.out.println("visitModule:" + node.toString("")); return null; } public Object visitNum(Num node) throws Exception { System.out.println("visitNum:" + node.toString("")); return null; } public Object visitPass(Pass node) throws Exception { System.out.println("visitPass:" + node.toString("")); return null; } public Object visitPrint(Print node) throws Exception { System.out.println("visitPrint:" + node.toString("")); return null; } public Object visitRaise(Raise node) throws Exception { System.out.println("visitRaise:" + node.toString("")); return null; } public Object visitRepr(Repr node) throws Exception { System.out.println("visitRepr:" + node.toString("")); return null; } public Object visitReturn(Return node) throws Exception { System.out.println("visitReturn:" + node.toString("")); return null; } public Object visitSlice(Slice node) throws Exception { System.out.println("visitSlice:" + node.toString("")); return null; } public Object visitStr(Str node) throws Exception { System.out.println("visitStr:" + node.toString("")); return null; } public Object visitSubscript(Subscript node) throws Exception { System.out.println("visitSubscript:" + node.toString("")); return null; } public Object visitSuite(Suite node) throws Exception { System.out.println("visitSuite:" + node.toString("")); return null; } public Object visitTryExcept(TryExcept node) throws Exception { System.out.println("visitTryExcept:" + node.toString("")); return null; } public Object visitTryFinally(TryFinally node) throws Exception { System.out.println("visitTryFinally:" + node.toString("")); return null; } public Object visitTuple(Tuple node) throws Exception { System.out.println("visitTuple:" + node.toString("")); return null; } public Object visitUnaryOp(UnaryOp node) throws Exception { System.out.println("visitUnaryOp:" + node.toString("")); return null; } public Object visitWhile(While node) throws Exception { System.out.println("visitWhile:" + node.toString("")); return null; } public Object visitYield(Yield node) throws Exception { System.out.println("visitYield:" + node.toString("")); return null; } } --- NEW FILE: PyDFunctionItem.java --- /* * Author: atotic * Created on Mar 29, 2004 * License: Common Public License v1.0 */ package org.python.pydev.editor.dictionary; import org.python.parser.ast.FunctionDef; import org.eclipse.core.runtime.IStatus; import org.python.pydev.plugin.PydevPlugin; /** * * TODO Comment this class */ public class PyDFunctionItem extends PyDictionaryItem { FunctionDef node; public PyDFunctionItem(PyDictionaryItem parent, FunctionDef node) { super(parent); this.node = node; PopulateDictionary populator = new PopulateDictionary(this, subItems); try { node.traverse(populator); } catch (Exception e) { PydevPlugin.log(IStatus.ERROR, "Unexpected error populating ClassDef", e); e.printStackTrace(); } } public String toString() { return "Function " + node.name + "\n" + subItems.toString(); } } --- NEW FILE: PopulateDictionary.java --- /* * Author: atotic * Created on Mar 29, 2004 * License: Common Public License v1.0 */ package org.python.pydev.editor.dictionary; import org.python.parser.SimpleNode; import org.python.parser.ast.*; class PopulateDictionary extends VisitorBase { PyDictionary dict; PyDictionaryItem parent; PopulateDictionary(PyDictionaryItem parent, PyDictionary dict) { this.parent = parent; this.dict = dict; } protected Object unhandled_node(SimpleNode node) throws Exception { return null; } public void traverse(SimpleNode node) throws Exception { System.out.println("Traverse?"); } public Object visitAssign(Assign node) throws Exception { dict.addLocal(new PyDLocalItem(parent, node)); return null; } public Object visitClassDef(ClassDef node) throws Exception { dict.addClass(new PyDClassItem(parent, node)); return null; } public Object visitFunctionDef(FunctionDef node) throws Exception { dict.addFunction(new PyDFunctionItem(parent, node)); return null; } } --- NEW FILE: PyDictionaryItem.java --- /* * Author: atotic * Created on Mar 29, 2004 * License: Common Public License v1.0 */ package org.python.pydev.editor.dictionary; import org.eclipse.jface.text.IRegion; /** * A generic dictionary item. * * Subclasses hold additional information, such as class name/file position/etc. */ public class PyDictionaryItem { protected IRegion position; protected PyDictionaryItem parent; protected PyDictionary subItems; public PyDictionaryItem(PyDictionaryItem parent) { this.parent = parent; this.subItems = new PyDictionary(); } public PyDictionaryItem getParent() { return parent; } public void setPosition(IRegion position) { this.position = position; } public IRegion getPosition() { return position; } } --- NEW FILE: PyDLocalItem.java --- /* * Author: atotic * Created on Mar 29, 2004 * License: Common Public License v1.0 */ package org.python.pydev.editor.dictionary; import org.python.parser.ast.Assign; import org.eclipse.core.runtime.IStatus; import org.python.pydev.plugin.PydevPlugin; /** * * TODO Comment this class */ public class PyDLocalItem extends PyDictionaryItem { Assign node; public PyDLocalItem(PyDictionaryItem parent, Assign node) { super(parent); this.node = node; PopulateDictionary populator = new PopulateDictionary(this, subItems); try { node.traverse(populator); } catch (Exception e) { PydevPlugin.log(IStatus.ERROR, "Unexpected error populating ClassDef", e); e.printStackTrace(); } } public String toString() { String locals = ""; for (int i=0;i<node.targets.length; i++) locals += node.targets[i].toString(); return "Local " + locals + "\n" + subItems.toString(); } } --- NEW FILE: PyDEditorItem.java --- /* * Author: atotic * Created on Mar 29, 2004 * License: Common Public License v1.0 */ package org.python.pydev.editor.dictionary; import org.eclipse.core.runtime.IStatus; import org.python.parser.SimpleNode; import org.python.pydev.editor.PyEdit; import org.python.pydev.parser.IParserListener; import org.python.pydev.parser.PyParser; import org.python.pydev.plugin.PydevPlugin; /** * Represents a PyEdit item. * I wanted to name this one PyDFileItem, but the file item can represent any * file, and this class really represents a live editor. */ public class PyDEditorItem extends PyDictionaryItem implements IParserListener{ PyEdit editor; public PyDEditorItem(PyParser parser) { super(null); parser.addParseListener(this); // TODO Auto-generated constructor stub } public void createDictionary(SimpleNode topNode) { subItems = new PyDictionary(); PopulateDictionary v = new PopulateDictionary(this, subItems); try {// traversal fills in the children topNode.traverse(v); } catch (Exception e) { PydevPlugin.log(IStatus.ERROR, "Unexpected error creating dictionary", e); e.printStackTrace(); } } /* * Callback from PyParser */ public void parserChanged(SimpleNode root) { createDictionary(root); System.out.println(toString()); } /* * Callback from PyParser */ public void parserError(Throwable error) { // we'll ignore errors } public String toString() { return "Top node\n" + subItems.toString(); } } --- NEW FILE: PyDictionary.java --- /* * Author: atotic * Created on Mar 26, 2004 * License: Common Public License v1.0 */ package org.python.pydev.editor.dictionary; import java.util.ArrayList; import java.util.Iterator; /** * * TODO Comment this class */ public class PyDictionary { ArrayList classes; ArrayList functions; ArrayList locals; ArrayList methods; public PyDictionary() { classes = new ArrayList(); functions = new ArrayList(); locals = new ArrayList(); } public void addClass(PyDClassItem newClass) { classes.add(newClass); } public void addFunction(PyDFunctionItem newFunction) { functions.add(newFunction); } public void addLocal(PyDLocalItem newLocal) { locals.add(newLocal); } /** * For debugging, pretty print the dictionary */ public String toString() { StringBuffer buf = new StringBuffer(); if (!classes.isEmpty()) { buf.append("Classes: "); Iterator i = classes.iterator(); while (i.hasNext()) buf.append(i.next().toString()); buf.append("\n"); } if (!functions.isEmpty()) { buf.append("Functions: "); Iterator i = functions.iterator(); while (i.hasNext()) buf.append(i.next().toString()); buf.append("\n"); } if (!locals.isEmpty()) { buf.append("Locals: "); Iterator i = locals.iterator(); while (i.hasNext()) buf.append(i.next().toString()); buf.append("\n"); } return buf.toString(); } } --- NEW FILE: PyDClassItem.java --- /* * Author: atotic * Created on Mar 29, 2004 * License: Common Public License v1.0 */ package org.python.pydev.editor.dictionary; import org.eclipse.core.runtime.IStatus; import org.python.parser.ast.ClassDef; import org.python.pydev.plugin.PydevPlugin; /** * * TODO Comment this class */ public class PyDClassItem extends PyDictionaryItem { ClassDef node; public PyDClassItem(PyDictionaryItem parent, ClassDef node) { super(parent); this.node = node; PopulateDictionary populator = new PopulateDictionary(this, subItems); try { node.traverse(populator); } catch (Exception e) { PydevPlugin.log(IStatus.ERROR, "Unexpected error populating ClassDef", e); e.printStackTrace(); } } public String toString() { return "Class " + node.name + "\n" + subItems.toString(); } } |