summaryrefslogtreecommitdiffstats
path: root/Lib/compiler/pycodegen.py
Commit message (Collapse)AuthorAgeFilesLines
...
* split compile.py into two filesJeremy Hylton2000-02-141-536/+186
| | | | | add StackDepthFinder (and remove push/pop from CodeGen) add several nodes, including Ellipsis, Bit&|^, Exec
* change MODULE_NAMESPACE/FUNCTION_NAMESPACE stuff to have a single flagJeremy Hylton2000-02-121-34/+87
| | | | | | | | | | | | | | | | | named OPTIMIZED, which matches compile.c and makes more sense for classes revamp call signature for PythonVMCode.__init__; doesn't really matter 'cuz this code is going to be refactored out of existence add generateClassCode and modify Func & Lambda generation add support for nodes Classdef, Keyword, fix CallFunc to generate right op arg when calling w/ keywords add ugly hack to properly compute offsets when the same stack ref is used multiple times
* add support for Lambda nodesJeremy Hylton2000-02-111-8/+28
| | | | | | | change resolution of local name ops (LOAD_FAST). i think it makes sense now. if it is an argument or a local var name that it used, it must be in varnames. if it is a local var name that is used, it must also be in names
* add loop handling viaJeremy Hylton2000-02-101-13/+63
| | | | | | | Loop object to handle StackRegs loops stack attr on CodeGenreeator to hold the current loop object add support for nodes While, Break, Continue
* add namespace attr to CodeGenerator, can be either MODULE_NAMESPACE orJeremy Hylton2000-02-101-22/+35
| | | | | | | | | | | FUNCTION_NAMESPACE. initialize in __init__ and reset in generateFunctionCode. replace direct issue of STORE_FAST, STORE_GLOBAL, etc. with call to storeName; same for loadName and deleteName the new {store,load,delete}Name methods use the namespace attr and the local variable stack to determine the correct bytecode to issue
* add ExampleASTVisitor:Jeremy Hylton2000-02-101-55/+199
| | | | | | | | | | | | | | | | | | | | | | * prints out examples of nodes that are handled by visitor. simply a development convenience remove NestedCodeGenerator -- it was bogus after all replace with generateFunctionCode, a method to call to generate code for a function instead of a top-level module fix impl of visitDiscard (most pop stack) emit lineno for pass handle the following new node types: Import, From, Getattr, Subscript, Slice, AssAttr, AssTuple, Mod, Not, And, Or, List LocalNameFinder: remove names declared as globals for locals PythonVMCode: pass arg names to constructor, force varnames to contain them all (even if they aren't referenced) add -q option on command line to disable stdout
* add optional verbose arg to walk function. it overrides the globalJeremy Hylton2000-02-081-29/+137
| | | | | | | | | | | | | | | | VERBOSE setting for the ASTVisitor add getopt handling for one or more -v args rename ForwardRef to StackRef, because it isn't necessarily directional CodeGenerator: * add assertStackEmpty method. prints warning if stack is not empty when it should be * define methods for AssName, UNARY_*, For PythonVMCode: * fix mix up between hasjrel and hasjabs for address calculation
* now produces valid pyc files for a least a trivial subset of theJeremy Hylton2000-02-081-80/+306
| | | | | | | | | | | | | | | | | language. CodeGenerator: * modify to track stack depth * add emit method that call's PythonVMCode's makeCodeObject * thread filenames through in hackish way * set flags for code objects for modules and functions XXX the docs for the flags seem out of date and/or incomplete PythonVMCode: * add doc string describing the elements of a real code object LineAddrTable: * creates an lnotab (no quite correctly though)
* rapid evolution towards producing real .pyc files (even though I don'tJeremy Hylton2000-02-041-11/+176
| | | | | | | | | | | | | | | | | handle most of the language syntax yet) create NestedCodeGenerator used to generator the separate code object that needs to be passed as an argument to MAKE_FUNCTION when a def stmt is found (probably useful for class too) change CodeGenerator.visitFunction to use the NestedCG add CompiledModule class to handle creation of .pyc (pretty minimal for now) add makeCodeObject method to PythonVMCode that replaces symbolic names with indexes into slots of the code code. the design of this class will probably need to be revised.
* checking in initial weekend's workJeremy Hylton2000-02-041-0/+406
compile.py: ASTVisitor framework plus bits of a code generator that should be bug-for-buf compatible with compile.c misc.py: Set and Stack helpers test.py: a bit of simple sample code that compile.py will work on