# $Id: PROGRESS,v 1.16 2004/01/07 05:38:02 dchan Exp $ # # python generation progress. # goal is to re-implement compiler/pycodegen.py # so we need to reimplement all these methods: # # export DONE=`grep -E "^[ye]" PROGRESS | wc -l` # export TOTAL=`grep -E "^[yehn]" PROGRESS | wc -l` ## these are done ############################### y visitAssign: y visitAugAssign: # can't call __iadd__ etc until we have Python Objects y visitBreak: y visitCallFunc: # no */** args yet y visitContinue: y visitFor: y visitIf: y visitLambda: y visitList: y visitPrint: y visitPrintnl: y visitReturn: y visitWhile: y visitPass: y visitFunction: # no */** args yet y visitTuple: # but makes a list for now y visitAssName: # in visitAssign y visitAssTuple: # in visitAssign y visitAssList: # in visitAssign y visitGlobal: y visitListComp: y visitListCompFor: y visitListCompIf: y visitDict: # string keys only (because of PerlHash) y visitSubscript: y visitRaise: # single argument only y visitAssert: y visitTryExcept: # single handler, no storing the object, no else y visitTryFinally: # also, exception handlers persist (clear_eh op dumps core) y visitYield: # but no iterators: g.next() works, for y in g() doesn't y del ( OP_DELETE in assign ) # e just means it was done in the expression() method # instead of its own visitXXX() e visitExpression: e visitTest: used in pycodegen.py for visitAnd/visitOr e visitAdd: e visitAnd: e visitCompare: e visitConst: e visitDiv: e visitMod: # but no string interpolation of course e visitMul: e visitName: e visitNot: e visitOr: e visitSub: e visitBitand: e visitBitor: e visitBitxor: e visitLeftShift: e visitRightShift: e visitUnaryAdd: e visitUnarySub: e visitInvert: ## not done yet ################################# ## operators ############# n visitFloorDiv: n visitPower: not implemented in parrot for pmc's n visitBackquote: tree transform to str(x) ## keyword arguments ##### n visitKeyword: keyword arguments (on calling side) ## assignments ########### n visitAugName(self, node, mode): n visitAugSubscript(self, node, mode): n visitAugGetattr(self, node, mode): ## o-o stuff ############# n visitClass: # partially done, but no pythonobjects, so... n visitAssAttr: n visitGetattr: ## slices ################ n visitSlice(self, node, aug_flag=None): n visitSliceobj: n visitAugSlice(self, node, mode): ## Eval ################## n visitExec: n visitFrom: n visitImport: n visitModule: ## expressions ########### n visitDiscard: (for free expressions, eg: "cout << 5") ## will not be supported ############# - imaginary/complex numbers (2j) (because parser can't handle it) - visitEllipsis: extended slices (for Numeric, 2.3, etc)