C-Breeze
C Compiler Infrastructure

[ Project home page]

name_mangle_walker Class Reference

mangles names to avoid id conflicts. More...

#include <name_mangle_walker.h>

Inheritance diagram for name_mangle_walker:

scope_walker Walker List of all members.

Public Types

enum  Order { Preorder, Postorder, Both }
 The order in which AST Nodes should be visited. More...
enum  Depth { Subtree, NodeOnly }
 Which Nodes in the AST tree should be visited. More...

Public Member Functions

*virtual void at_proc (procNode *the_proc, Order ord)
 Enter and exit scopes.
virtual void at_decl (declNode *the_decl, Order ord)
virtual void at_id (idNode *the_id, Order ord)
 Fix identifier names.
virtual void at_label (labelNode *the_label, Order ord)
 Fix label names.
Labels_table * labels () const
virtual void at_block (blockNode *the_block, Order ord)
*virtual void at_suespec (suespecNode *the_suespec, Order ord)
virtual void at_func (funcNode *the_func, Order ord)
*Identifiers_table * ids () const
Tags_table * tags () const
Externals_table * externs () const
int symbol_level () const
*bool in_su () const
bool in_enum () const
bool in_formals () const
unitNode * unit ()
 unitNode
*void enter_scope ()
void exit_scope ()

Static Public Member Functions

*static void mangle ()
static void mangle (unitNode *u)

Protected Attributes

procNode * _cur_proc

Private Member Functions

 name_mangle_walker (unitNode *u)

Private Attributes

Labels_table * _labels

Detailed Description

mangles names to avoid id conflicts.

Definition at line 50 of file name_mangle_walker.h.


Member Enumeration Documentation

enum Walker::Depth [inherited]
 

Which Nodes in the AST tree should be visited.

Enumeration values:
Subtree  The entire AST should be traversed.
NodeOnly  Only the root Node should be visited.

Definition at line 155 of file walker.h.

enum Walker::Order [inherited]
 

The order in which AST Nodes should be visited.

Enumeration values:
Preorder  Nodes should be visited before their children.
Postorder  Nodes should be visited after their children.
Both  Nodes should be visited both before and after their children.

Definition at line 147 of file walker.h.


Constructor & Destructor Documentation

name_mangle_walker::name_mangle_walker (  unitNode *  u  )  [inline, private]
 

Definition at line 66 of file name_mangle_walker.h.


Member Function Documentation

virtual void Walker::at_array (  arrayNode *  the_array,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in TreeChecker, and print_walker.

Definition at line 254 of file walker.h.

References Walker::at_type().

virtual void Walker::at_attrib (  attribNode *  the_attrib,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in print_walker.

Definition at line 365 of file walker.h.

References Walker::at_stmt().

virtual void Walker::at_basicblock (  basicblockNode *  the_basicblock,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in print_walker, LivenessWalker, LivenessComments, and reachingDefinitionsWalker.

Definition at line 314 of file walker.h.

References Walker::at_block().

virtual void Walker::at_binary (  binaryNode *  the_binary,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in gcWalker, id_lookup_walker, TreeChecker, and print_walker.

Definition at line 287 of file walker.h.

References Walker::at_expr().

virtual void scope_walker::at_block (  blockNode *  the_block,
Order  ord
)  [virtual, inherited]
 

Reimplemented from Walker.

virtual void Walker::at_break (  breakNode *  the_break,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in ref_fix_walker, set_container_walker, TreeChecker, and print_walker.

Definition at line 359 of file walker.h.

References Walker::at_jump().

virtual void Walker::at_call (  callNode *  the_call,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in id_lookup_walker, Linker, ref_fix_walker, TreeChecker, and print_walker.

Definition at line 302 of file walker.h.

References Walker::at_expr().

virtual void Walker::at_case (  caseNode *  the_case,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in ref_fix_walker, semcheck_walker, set_container_walker, TreeChecker, and print_walker.

Definition at line 326 of file walker.h.

References Walker::at_target().

virtual void Walker::at_cast (  castNode *  the_cast,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in TreeChecker, and print_walker.

Definition at line 293 of file walker.h.

References Walker::at_expr().

virtual void Walker::at_comma (  commaNode *  the_comma,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in TreeChecker, and print_walker.

Definition at line 296 of file walker.h.

References Walker::at_expr().

virtual void Walker::at_conditiongoto (  conditiongotoNode *  the_condgoto,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in TreeChecker, print_walker, LivenessWalker, and LivenessComments.

Definition at line 371 of file walker.h.

References Walker::at_goto().

virtual void Walker::at_const (  constNode *  the_const,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in TreeChecker, and print_walker.

Definition at line 281 of file walker.h.

References Walker::at_index().

virtual void Walker::at_continue (  continueNode *  the_continue,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in ref_fix_walker, set_container_walker, TreeChecker, and print_walker.

Definition at line 356 of file walker.h.

References Walker::at_jump().

virtual void Walker::at_def (  defNode *  the_def,
Order  ord
)  [inline, virtual, inherited]
 

Definition at line 230 of file walker.h.

References Walker::at_node().

Referenced by Walker::at_decl(), and Walker::at_proc().

virtual void Walker::at_do (  doNode *  the_do,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in print_walker.

Definition at line 344 of file walker.h.

References Walker::at_loop().

virtual void Walker::at_enum (  enumNode *  the_enum,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in enum_value_walker, and id_lookup_walker.

Definition at line 269 of file walker.h.

References Walker::at_sue().

virtual void Walker::at_expr (  exprNode *  the_expr,
Order  ord
)  [inline, virtual, inherited]
 

Definition at line 275 of file walker.h.

References Walker::at_node().

Referenced by Walker::at_binary(), Walker::at_call(), Walker::at_cast(), Walker::at_comma(), Walker::at_index(), Walker::at_initializer(), Walker::at_operand(), Walker::at_ternary(), and Walker::at_unary().

virtual void Walker::at_exprstmt (  exprstmtNode *  the_exprstmt,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in semcheck_walker, and print_walker.

Definition at line 317 of file walker.h.

References Walker::at_stmt().

virtual void Walker::at_for (  forNode *  the_for,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in semcheck_walker, TreeChecker, and print_walker.

Definition at line 347 of file walker.h.

References Walker::at_loop().

virtual void Walker::at_goto (  gotoNode *  the_goto,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in goto_label_walker, fix_goto_walker, ref_fix_walker, TreeChecker, ProcWalker, and print_walker.

Definition at line 353 of file walker.h.

References Walker::at_jump().

Referenced by Walker::at_conditiongoto().

virtual void name_mangle_walker::at_id (  idNode *  the_id,
Order  ord
)  [virtual]
 

Fix identifier names.

Reimplemented from Walker.

virtual void Walker::at_if (  ifNode *  the_if,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in TreeChecker, and print_walker.

Definition at line 332 of file walker.h.

References Walker::at_selection().

virtual void Walker::at_index (  indexNode *  the_index,
Order  ord
)  [inline, virtual, inherited]
 

Definition at line 278 of file walker.h.

References Walker::at_expr().

Referenced by Walker::at_const(), and Walker::at_id().

virtual void Walker::at_initializer (  initializerNode *  the_initializer,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in TreeChecker, and print_walker.

Definition at line 305 of file walker.h.

References Walker::at_expr().

virtual void Walker::at_jump (  jumpNode *  the_jump,
Order  ord
)  [inline, virtual, inherited]
 

Definition at line 350 of file walker.h.

References Walker::at_stmt().

Referenced by Walker::at_break(), Walker::at_continue(), Walker::at_goto(), and Walker::at_return().

virtual void name_mangle_walker::at_label (  labelNode *  the_label,
Order  ord
)  [virtual]
 

Fix label names.

Reimplemented from Walker.

virtual void Walker::at_loop (  loopNode *  the_loop,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in semcheck_walker, set_container_walker, TreeChecker, and init_flowproblem_walker.

Definition at line 338 of file walker.h.

References Walker::at_stmt().

Referenced by Walker::at_do(), Walker::at_for(), and Walker::at_while().

virtual void Walker::at_node (  Node *  the_node,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in gcWalker, goto_label_walker, set_container_walker, sue_complete_walker, TreeChecker, and df_number_walker.

Definition at line 223 of file walker.h.

Referenced by Walker::at_def(), Walker::at_expr(), Walker::at_stmt(), Walker::at_text(), Walker::at_type(), and Walker::at_unit().

virtual void Walker::at_operand (  operandNode *  the_oper,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in TreeChecker, and print_walker.

Definition at line 368 of file walker.h.

References Walker::at_expr().

virtual void Walker::at_prim (  primNode *  the_prim,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in print_walker.

Definition at line 245 of file walker.h.

References Walker::at_type().

virtual void Walker::at_ptr (  ptrNode *  the_ptr,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in print_walker.

Definition at line 251 of file walker.h.

References Walker::at_type().

virtual void Walker::at_return (  returnNode *  the_return,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in ref_fix_walker, semcheck_walker, set_container_walker, TreeChecker, print_walker, LivenessWalker, and LivenessComments.

Definition at line 362 of file walker.h.

References Walker::at_jump().

virtual void Walker::at_selection (  selectionNode *  the_selection,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in semcheck_walker.

Definition at line 329 of file walker.h.

References Walker::at_stmt().

Referenced by Walker::at_if(), and Walker::at_switch().

virtual void Walker::at_stmt (  stmtNode *  the_stmt,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in init_flowproblem_walker, and LivenessWalker.

Definition at line 308 of file walker.h.

References Walker::at_node().

Referenced by Walker::at_attrib(), Walker::at_block(), Walker::at_exprstmt(), Walker::at_jump(), Walker::at_loop(), Walker::at_selection(), Walker::at_target(), and Walker::at_threeAddr().

virtual void Walker::at_struct (  structNode *  the_struct,
Order  ord
)  [inline, virtual, inherited]
 

Definition at line 263 of file walker.h.

References Walker::at_sue().

virtual void Walker::at_subdecl (  subdeclNode *  the_subdecl,
Order  ord
)  [inline, virtual, inherited]
 

Definition at line 236 of file walker.h.

References Walker::at_decl().

virtual void Walker::at_sue (  sueNode *  the_sue,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in id_lookup_walker, print_walker, and has_struct_walker.

Definition at line 260 of file walker.h.

References Walker::at_type().

Referenced by Walker::at_enum(), Walker::at_struct(), and Walker::at_union().

virtual void Walker::at_switch (  switchNode *  the_switch,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in set_container_walker, TreeChecker, ProcWalker, print_walker, and init_flowproblem_walker.

Definition at line 335 of file walker.h.

References Walker::at_selection().

virtual void Walker::at_target (  targetNode *  the_target,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in init_flowproblem_walker.

Definition at line 320 of file walker.h.

References Walker::at_stmt().

Referenced by Walker::at_case(), and Walker::at_label().

virtual void Walker::at_tdef (  tdefNode *  the_tdef,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in id_lookup_walker, ref_fix_walker, TreeChecker, and print_walker.

Definition at line 248 of file walker.h.

References Walker::at_type().

virtual void Walker::at_ternary (  ternaryNode *  the_ternary,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in TreeChecker, and print_walker.

Definition at line 299 of file walker.h.

References Walker::at_expr().

virtual void Walker::at_text (  textNode *  the_text,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in print_walker.

Definition at line 377 of file walker.h.

References Walker::at_node().

virtual void Walker::at_threeAddr (  threeAddrNode *  the_3addr,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in Linker, TreeChecker, print_walker, LivenessWalker, LivenessComments, and UnificationBasedPtr.

Definition at line 374 of file walker.h.

References Walker::at_stmt().

virtual void Walker::at_type (  typeNode *  the_type,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in TreeChecker.

Definition at line 242 of file walker.h.

References Walker::at_node().

Referenced by Walker::at_array(), Walker::at_func(), Walker::at_prim(), Walker::at_ptr(), Walker::at_sue(), Walker::at_suespec(), and Walker::at_tdef().

virtual void Walker::at_unary (  unaryNode *  the_unary,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in TreeChecker, and print_walker.

Definition at line 290 of file walker.h.

References Walker::at_expr().

virtual void Walker::at_union (  unionNode *  the_union,
Order  ord
)  [inline, virtual, inherited]
 

Definition at line 266 of file walker.h.

References Walker::at_sue().

virtual void Walker::at_unit (  unitNode *  the_unit,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in gcWalker, TreeChecker, print_walker, and UnificationBasedPtr.

Definition at line 227 of file walker.h.

References Walker::at_node().

virtual void Walker::at_while (  whileNode *  the_while,
Order  ord
)  [inline, virtual, inherited]
 

Reimplemented in print_walker.

Definition at line 341 of file walker.h.

References Walker::at_loop().

Depth Walker::depth (   )  const [inline, inherited]
 

Return which Nodes of an AST should be visited.

A value of SubTree specifies that the entire AST should be traversed. A value of NodeOnly specifies that only the root Node in the AST should be visited.

Definition at line 211 of file walker.h.

References Walker::_depth.

Labels_table* name_mangle_walker::labels (   )  const [inline]
 

Definition at line 87 of file name_mangle_walker.h.

References _labels.

Order Walker::order (   )  const [inline, inherited]
 

Return the order in which Nodes of an AST should be visited.

Nodes can be visited before their children (Preorder), after their children (Postorder), or both (Both).

Definition at line 203 of file walker.h.

References Walker::_order.

Referenced by df_number_walker::at_node().

unitNode* scope_walker::unit (   )  [inline, inherited]
 

unitNode

Definition at line 100 of file scope_walker.h.

References scope_walker::_unit.


Member Data Documentation

procNode* scope_walker::_cur_proc [protected, inherited]
 

Definition at line 61 of file scope_walker.h.

Labels_table* name_mangle_walker::_labels [private]
 

Definition at line 64 of file name_mangle_walker.h.

Referenced by labels().


The documentation for this class was generated from the following file:

Generated on February 1, 2006
Back to the C-Breeze home page