compiler.symbols
index
/usr/local/lib/python2.5/compiler/symbols.py
Module Docs

Module symbol-table generator

 
Modules
       
compiler.ast
sys
types

 
Classes
       
Scope
ClassScope
FunctionScope
LambdaScope
GenExprScope
ModuleScope
SymbolVisitor

 
class ClassScope(Scope)
     Methods defined here:
__init__(self, name, module)

Methods inherited from Scope:
DEBUG(self)
__repr__(self)
add_child(self, child)
add_def(self, name)
add_frees(self, names)
Process list of free vars from nested scope.
 
Returns a list of names that are either 1) declared global in the
parent or 2) undefined in a top-level parent.  In either case,
the nested scope should treat them as globals.
add_global(self, name)
add_param(self, name)
add_use(self, name)
check_name(self, name)
Return scope of name.
 
The scope of a name could be LOCAL, GLOBAL, FREE, or CELL.
force_global(self, name)
Force name to be global in scope.
 
Some child of the current node had a free reference to name.
When the child was processed, it was labelled a free
variable.  Now that all its enclosing scope have been
processed, the name is known to be a global or builtin.  So
walk back down the child chain and set the name to be global
rather than free.
 
Be careful to stop if a child does not think the name is
free.
get_cell_vars(self)
get_children(self)
get_free_vars(self)
get_names(self)
handle_children(self)
mangle(self, name)

 
class FunctionScope(Scope)
     Methods inherited from Scope:
DEBUG(self)
__init__(self, name, module, klass=None)
# XXX how much information do I need about each name?
__repr__(self)
add_child(self, child)
add_def(self, name)
add_frees(self, names)
Process list of free vars from nested scope.
 
Returns a list of names that are either 1) declared global in the
parent or 2) undefined in a top-level parent.  In either case,
the nested scope should treat them as globals.
add_global(self, name)
add_param(self, name)
add_use(self, name)
check_name(self, name)
Return scope of name.
 
The scope of a name could be LOCAL, GLOBAL, FREE, or CELL.
force_global(self, name)
Force name to be global in scope.
 
Some child of the current node had a free reference to name.
When the child was processed, it was labelled a free
variable.  Now that all its enclosing scope have been
processed, the name is known to be a global or builtin.  So
walk back down the child chain and set the name to be global
rather than free.
 
Be careful to stop if a child does not think the name is
free.
get_cell_vars(self)
get_children(self)
get_free_vars(self)
get_names(self)
handle_children(self)
mangle(self, name)

 
class GenExprScope(Scope)
     Methods defined here:
__init__(self, module, klass=None)
get_names(self)

Methods inherited from Scope:
DEBUG(self)
__repr__(self)
add_child(self, child)
add_def(self, name)
add_frees(self, names)
Process list of free vars from nested scope.
 
Returns a list of names that are either 1) declared global in the
parent or 2) undefined in a top-level parent.  In either case,
the nested scope should treat them as globals.
add_global(self, name)
add_param(self, name)
add_use(self, name)
check_name(self, name)
Return scope of name.
 
The scope of a name could be LOCAL, GLOBAL, FREE, or CELL.
force_global(self, name)
Force name to be global in scope.
 
Some child of the current node had a free reference to name.
When the child was processed, it was labelled a free
variable.  Now that all its enclosing scope have been
processed, the name is known to be a global or builtin.  So
walk back down the child chain and set the name to be global
rather than free.
 
Be careful to stop if a child does not think the name is
free.
get_cell_vars(self)
get_children(self)
get_free_vars(self)
handle_children(self)
mangle(self, name)

 
class LambdaScope(FunctionScope)
    
Method resolution order:
LambdaScope
FunctionScope
Scope

Methods defined here:
__init__(self, module, klass=None)

Methods inherited from Scope:
DEBUG(self)
__repr__(self)
add_child(self, child)
add_def(self, name)
add_frees(self, names)
Process list of free vars from nested scope.
 
Returns a list of names that are either 1) declared global in the
parent or 2) undefined in a top-level parent.  In either case,
the nested scope should treat them as globals.
add_global(self, name)
add_param(self, name)
add_use(self, name)
check_name(self, name)
Return scope of name.
 
The scope of a name could be LOCAL, GLOBAL, FREE, or CELL.
force_global(self, name)
Force name to be global in scope.
 
Some child of the current node had a free reference to name.
When the child was processed, it was labelled a free
variable.  Now that all its enclosing scope have been
processed, the name is known to be a global or builtin.  So
walk back down the child chain and set the name to be global
rather than free.
 
Be careful to stop if a child does not think the name is
free.
get_cell_vars(self)
get_children(self)
get_free_vars(self)
get_names(self)
handle_children(self)
mangle(self, name)

 
class ModuleScope(Scope)
     Methods defined here:
__init__(self)

Methods inherited from Scope:
DEBUG(self)
__repr__(self)
add_child(self, child)
add_def(self, name)
add_frees(self, names)
Process list of free vars from nested scope.
 
Returns a list of names that are either 1) declared global in the
parent or 2) undefined in a top-level parent.  In either case,
the nested scope should treat them as globals.
add_global(self, name)
add_param(self, name)
add_use(self, name)
check_name(self, name)
Return scope of name.
 
The scope of a name could be LOCAL, GLOBAL, FREE, or CELL.
force_global(self, name)
Force name to be global in scope.
 
Some child of the current node had a free reference to name.
When the child was processed, it was labelled a free
variable.  Now that all its enclosing scope have been
processed, the name is known to be a global or builtin.  So
walk back down the child chain and set the name to be global
rather than free.
 
Be careful to stop if a child does not think the name is
free.
get_cell_vars(self)
get_children(self)
get_free_vars(self)
get_names(self)
handle_children(self)
mangle(self, name)

 
class Scope
     Methods defined here:
DEBUG(self)
__init__(self, name, module, klass=None)
# XXX how much information do I need about each name?
__repr__(self)
add_child(self, child)
add_def(self, name)
add_frees(self, names)
Process list of free vars from nested scope.
 
Returns a list of names that are either 1) declared global in the
parent or 2) undefined in a top-level parent.  In either case,
the nested scope should treat them as globals.
add_global(self, name)
add_param(self, name)
add_use(self, name)
check_name(self, name)
Return scope of name.
 
The scope of a name could be LOCAL, GLOBAL, FREE, or CELL.
force_global(self, name)
Force name to be global in scope.
 
Some child of the current node had a free reference to name.
When the child was processed, it was labelled a free
variable.  Now that all its enclosing scope have been
processed, the name is known to be a global or builtin.  So
walk back down the child chain and set the name to be global
rather than free.
 
Be careful to stop if a child does not think the name is
free.
get_cell_vars(self)
get_children(self)
get_free_vars(self)
get_names(self)
handle_children(self)
mangle(self, name)

 
class SymbolVisitor
     Methods defined here:
__init__(self)
handle_free_vars(self, scope, parent)
visitAssAttr(self, node, scope, assign=0)
visitAssName(self, node, scope, assign=1)
visitAssign(self, node, scope)
Propagate assignment flag down to child nodes.
 
The Assign node doesn't itself contains the variables being
assigned to.  Instead, the children in node.nodes are visited
with the assign flag set to true.  When the names occur in
those nodes, they are marked as defs.
 
Some names that occur in an assignment target are not bound by
the assignment, e.g. a name occurring inside a slice.  The
visitor handles these nodes specially; they do not propagate
the assign flag to their children.
visitAugAssign(self, node, scope)
visitClass(self, node, parent)
visitExpression = visitModule(self, node)
visitFor(self, node, scope)
visitFrom(self, node, scope)
visitFunction(self, node, parent)
visitGenExpr(self, node, parent)
visitGenExprFor(self, node, scope)
visitGenExprIf(self, node, scope)
visitGenExprInner(self, node, scope)
visitGlobal(self, node, scope)
visitIf(self, node, scope)
visitImport(self, node, scope)
visitLambda(self, node, parent, assign=0)
visitModule(self, node)
visitName(self, node, scope, assign=0)
visitSlice(self, node, scope, assign=0)
visitSubscript(self, node, scope, assign=0)
visitYield(self, node, scope)

 
Functions
       
list_eq(l1, l2)

 
Data
        MANGLE_LEN = 256
SC_CELL = 4
SC_FREE = 3
SC_GLOBAL = 2
SC_LOCAL = 1
SC_UNKNOWN = 5