<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>19. Python compiler package </title> <META NAME="description" CONTENT="19. Python compiler package "> <META NAME="keywords" CONTENT="lib"> <META NAME="resource-type" CONTENT="document"> <META NAME="distribution" CONTENT="global"> <meta http-equiv="Content-Type" content="text/html; charset="> <link rel="STYLESHEET" href="lib.css"> <link rel="first" href="lib.html"> <link rel="contents" href="contents.html" title="Contents"> <link rel="index" href="genindex.html" title="Index"> <LINK REL="next" href="sgi.html"> <LINK REL="previous" href="language.html"> <LINK REL="up" HREF="lib.html"> <LINK REL="next" href="module-compiler.html"> </head> <body> <DIV CLASS="navigation"> <table align="center" width="100%" cellpadding="0" cellspacing="2"> <tr> <td><A href="module-distutils.html"><img src="../icons/previous.gif" border="0" height="32" alt="Previous Page" width="32"></A></td> <td><A HREF="lib.html"><img src="../icons/up.gif" border="0" height="32" alt="Up One Level" width="32"></A></td> <td><A href="module-compiler.html"><img src="../icons/next.gif" border="0" height="32" alt="Next Page" width="32"></A></td> <td align="center" width="100%">Python Library Reference</td> <td><A href="contents.html"><img src="../icons/contents.gif" border="0" height="32" alt="Contents" width="32"></A></td> <td><a href="modindex.html" title="Module Index"><img src="../icons/modules.gif" border="0" height="32" alt="Module Index" width="32"></a></td> <td><A href="genindex.html"><img src="../icons/index.gif" border="0" height="32" alt="Index" width="32"></A></td> </tr></table> <b class="navlabel">Previous:</b> <a class="sectref" href="module-distutils.html">18.11 distutils </A> <b class="navlabel">Up:</b> <a class="sectref" HREF="lib.html">Python Library Reference</A> <b class="navlabel">Next:</b> <a class="sectref" href="module-compiler.html">19.1 The basic interface</A> <br><hr> </DIV> <!--End of Navigation Panel--> <H1><A NAME="SECTION0021000000000000000000"> </A> <BR> 19. Python compiler package </H1> <P> <P> The Python compiler package is a tool for analyzing Python source code and generating Python bytecode. The compiler contains libraries to generate an abstract syntax tree from Python source code and to generate Python bytecode from the tree. <P> The <tt class="module"><a href="module-compiler.html">compiler</a></tt> package is a Python source to bytecode translator written in Python. It uses the built-in parser and standard <tt class="module"><a href="module-parser.html">parser</a></tt> module to generated a concrete syntax tree. This tree is used to generate an abstract syntax tree (AST) and then Python bytecode. <P> The full functionality of the package duplicates the builtin compiler provided with the Python interpreter. It is intended to match its behavior almost exactly. Why implement another compiler that does the same thing? The package is useful for a variety of purposes. It can be modified more easily than the builtin compiler. The AST it generates is useful for analyzing Python source code. <P> This chapter explains how the various components of the <tt class="module"><a href="module-compiler.html">compiler</a></tt> package work. It blends reference material with a tutorial. <P> The following modules are part of the <tt class="module"><a href="module-compiler.html">compiler</a></tt> package: <P> <table class='synopsistable' valign='baseline'> <tr class='oddrow'> <td><b><tt class='module'><a href='module-compiler.html'>compiler</a></tt></b></td> <td> </td> <td class='synopsis'></td></tr> <tr><td><b><tt class='module'><a href='module-compiler.ast.html'>compiler.ast</a></tt></b></td> <td> </td> <td class='synopsis'></td></tr> <tr class='oddrow'> <td><b><tt class='module'><a href='module-compiler.visitor.html'>compiler.visitor</a></tt></b></td> <td> </td> <td class='synopsis'></td></tr> </table> <BR> <P> <DIV CLASS="navigation"> <p><hr> <table align="center" width="100%" cellpadding="0" cellspacing="2"> <tr> <td><A href="module-distutils.html"><img src="../icons/previous.gif" border="0" height="32" alt="Previous Page" width="32"></A></td> <td><A HREF="lib.html"><img src="../icons/up.gif" border="0" height="32" alt="Up One Level" width="32"></A></td> <td><A href="module-compiler.html"><img src="../icons/next.gif" border="0" height="32" alt="Next Page" width="32"></A></td> <td align="center" width="100%">Python Library Reference</td> <td><A href="contents.html"><img src="../icons/contents.gif" border="0" height="32" alt="Contents" width="32"></A></td> <td><a href="modindex.html" title="Module Index"><img src="../icons/modules.gif" border="0" height="32" alt="Module Index" width="32"></a></td> <td><A href="genindex.html"><img src="../icons/index.gif" border="0" height="32" alt="Index" width="32"></A></td> </tr></table> <b class="navlabel">Previous:</b> <a class="sectref" href="module-distutils.html">18.11 distutils </A> <b class="navlabel">Up:</b> <a class="sectref" HREF="lib.html">Python Library Reference</A> <b class="navlabel">Next:</b> <a class="sectref" href="module-compiler.html">19.1 The basic interface</A> <hr> <span class="release-info">Release 2.2, documentation updated on December 21, 2001.</span> </DIV> <!--End of Navigation Panel--> <ADDRESS> See <i><a href="about.html">About this document...</a></i> for information on suggesting changes. </ADDRESS> </BODY> </HTML>