On 2/10/06, Fabiano Sidler <[EMAIL PROTECTED]> wrote: > Do I see things as they are and compiler.pyassem generates bytecode > straight without involve any C code, i.e. code from the VM or the > compiler? How is this achieved? I took a look at Python/compile.c as > mentioned in compiler.pyassem and I'm trying to get into it, but about > 6500 lines of C code are too much for me in one file. Could someone > here please give me some hints on how one can do what compiler.pyassem > does?
I'm not sure what exactly you want to know. The compiler package implements most of a Python bytecode compiler in Python. It re-uses the parser written in C, but otherwise does the entire transformation in Python. The "how is this achieved?" question is hard to answer without saying "read the source." There are about 6000 lines of Python code in the compiler pacakge, but you can largely ignore ast.py and transformer.py if you just want to study the compiler. Perhaps you specific question is: How does the interpreter create new bytecode or function objects from a program instead of compiling from source or importing a module? At some level, bytecode is simply a string representation of a progam. The new module takes the bytecode plus a lot of meta-data including the names of variables and a list of constants, and produces a new code object. See the newCodeObject() method. I suspect further discussion on this topic might be better done on python-list, unless you have some discussion that is relevant for Python implementors. Jeremy _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com