compiler.symbols
index
/usr/lib/python2.2/compiler/symbols.py

Module symbol-table generator

 
Modules
            
compiler.ast
sys
types
 
Classes
            
Scope
ClassScope
FunctionScope
LambdaScope
ModuleScope
SymbolVisitor
 
class ClassScope(Scope)
       
   Methods defined here:
_ClassScope__super_init = __init__(self, name, module, klass=None)
# XXX how much information do I need about each name?
__init__(self, name, module)

Data and non-method functions defined here:
__doc__ = None
__module__ = 'compiler.symbols'

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)
       
   Data and non-method functions defined here:
__doc__ = None
__module__ = 'compiler.symbols'

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 LambdaScope(FunctionScope)
       
  
Method resolution order:
LambdaScope
FunctionScope
Scope

Methods defined here:
_LambdaScope__super_init = __init__(self, name, module, klass=None)
# XXX how much information do I need about each name?
__init__(self, module, klass=None)

Data and non-method functions defined here:
_LambdaScope__counter = 1
__doc__ = None
__module__ = 'compiler.symbols'

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:
_ModuleScope__super_init = __init__(self, name, module, klass=None)
# XXX how much information do I need about each name?
__init__(self)

Data and non-method functions defined here:
__doc__ = None
__module__ = 'compiler.symbols'

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)

Data and non-method functions defined here:
__doc__ = None
__module__ = 'compiler.symbols'
 
class SymbolVisitor
       
   Methods defined here:
__init__(self)
_do_args(self, scope, args)
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)
visitGlobal(self, node, scope)
visitIf(self, node, scope)
visitImport(self, node, scope)
visitLambda(self, node, parent)
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)

Data and non-method functions defined here:
__doc__ = None
__module__ = 'compiler.symbols'
_const_types = (<type 'str'>, <type 'int'>, <type 'float'>)
 
Functions
            
list_eq(l1, l2)
sort(l)
 
Data
             MANGLE_LEN = 256
SC_CELL = 4
SC_FREE = 3
SC_GLOBAL = 2
SC_LOCAL = 1
SC_UNKNOWN = 5
__file__ = '/usr/lib/python2.2/compiler/symbols.pyc'
__name__ = 'compiler.symbols'