C-Breeze
C Compiler Infrastructure

[ Project home page]

print_walker Class Reference

prints each node to an out stream. More...

#include <print_walker.h>

Inheritance diagram for print_walker:

Walker List of all members.

"at_" methods

These methods define the functions that should be performed when different classes of Nodes are encountered in the AST. The most specific "at_" method that matches a given Node's class will be called.

virtual void at_node (Node *the_node, Order ord)
virtual void at_def (defNode *the_def, Order ord)
virtual void at_subdecl (subdeclNode *the_subdecl, Order ord)
virtual void at_type (typeNode *the_type, Order ord)
virtual void at_struct (structNode *the_struct, Order ord)
virtual void at_union (unionNode *the_union, Order ord)
virtual void at_enum (enumNode *the_enum, Order ord)
virtual void at_expr (exprNode *the_expr, Order ord)
virtual void at_index (indexNode *the_index, Order ord)
virtual void at_stmt (stmtNode *the_stmt, Order ord)
virtual void at_target (targetNode *the_target, Order ord)
virtual void at_selection (selectionNode *the_selection, Order ord)
virtual void at_loop (loopNode *the_loop, Order ord)
virtual void at_jump (jumpNode *the_jump, Order ord)

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

 print_walker (ostream &out, numbering_map *num)
virtual void at_unit (unitNode *the_unit, Order ord)
virtual void at_decl (declNode *the_decl, Order ord)
virtual void at_proc (procNode *the_proc, Order ord)
virtual void at_prim (primNode *the_prim, Order ord)
virtual void at_tdef (tdefNode *the_tdef, Order ord)
virtual void at_ptr (ptrNode *the_ptr, Order ord)
virtual void at_array (arrayNode *the_array, Order ord)
virtual void at_func (funcNode *the_func, Order ord)
virtual void at_sue (sueNode *the_sue, Order ord)
virtual void at_suespec (suespecNode *the_suespec, Order ord)
virtual void at_const (constNode *the_const, Order ord)
virtual void at_id (idNode *the_id, Order ord)
virtual void at_binary (binaryNode *the_binary, Order ord)
virtual void at_unary (unaryNode *the_unary, Order ord)
virtual void at_cast (castNode *the_cast, Order ord)
virtual void at_comma (commaNode *the_comma, Order ord)
virtual void at_ternary (ternaryNode *the_ternary, Order ord)
virtual void at_call (callNode *the_call, Order ord)
virtual void at_initializer (initializerNode *the_initializer, Order ord)
virtual void at_block (blockNode *the_block, Order ord)
virtual void at_basicblock (basicblockNode *the_bb, Order ord)
virtual void at_exprstmt (exprstmtNode *the_exprstmt, Order ord)
virtual void at_label (labelNode *the_label, Order ord)
virtual void at_case (caseNode *the_case, Order ord)
virtual void at_if (ifNode *the_if, Order ord)
virtual void at_switch (switchNode *the_switch, Order ord)
virtual void at_while (whileNode *the_while, Order ord)
virtual void at_do (doNode *the_do, Order ord)
virtual void at_for (forNode *the_for, Order ord)
virtual void at_goto (gotoNode *the_goto, Order ord)
virtual void at_continue (continueNode *the_continue, Order ord)
virtual void at_break (breakNode *the_break, Order ord)
virtual void at_return (returnNode *the_return, Order ord)
virtual void at_attrib (attribNode *the_attrib, Order ord)
virtual void at_operand (operandNode *the_oper, Order ord)
virtual void at_conditiongoto (conditiongotoNode *the_condgoto, Order ord)
virtual void at_threeAddr (threeAddrNode *the_3addr, Order ord)
virtual void at_text (textNode *the_text, Order ord)

Static Public Member Functions

static void print (Node *n, ostream &out)
 To display the AST, call this static function:.

Private Member Functions

void indent (Node *n) const
void in ()
void out ()

Private Attributes

ostream & _out
int _indent
numbering_map * _num

Detailed Description

prints each node to an out stream.

Definition at line 45 of file print_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

print_walker::print_walker (  ostream &  out,
numbering_map *  num
) 
 


Member Function Documentation

virtual void print_walker::at_array (  arrayNode *  the_array,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

virtual void print_walker::at_attrib (  attribNode *  the_attrib,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

virtual void print_walker::at_basicblock (  basicblockNode *  the_bb,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

virtual void print_walker::at_binary (  binaryNode *  the_binary,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

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

Reimplemented from Walker.

virtual void print_walker::at_break (  breakNode *  the_break,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

virtual void print_walker::at_call (  callNode *  the_call,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

virtual void print_walker::at_case (  caseNode *  the_case,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

virtual void print_walker::at_cast (  castNode *  the_cast,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

virtual void print_walker::at_comma (  commaNode *  the_comma,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

virtual void print_walker::at_conditiongoto (  conditiongotoNode *  the_condgoto,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

virtual void print_walker::at_const (  constNode *  the_const,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

virtual void print_walker::at_continue (  continueNode *  the_continue,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

virtual void print_walker::at_decl (  declNode *  the_decl,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

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 print_walker::at_do (  doNode *  the_do,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

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 print_walker::at_exprstmt (  exprstmtNode *  the_exprstmt,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

virtual void print_walker::at_for (  forNode *  the_for,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

virtual void print_walker::at_func (  funcNode *  the_func,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

virtual void print_walker::at_goto (  gotoNode *  the_goto,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

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

Reimplemented from Walker.

virtual void print_walker::at_if (  ifNode *  the_if,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

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 print_walker::at_initializer (  initializerNode *  the_initializer,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

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 print_walker::at_label (  labelNode *  the_label,
Order  ord
)  [virtual]
 

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 print_walker::at_operand (  operandNode *  the_oper,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

virtual void print_walker::at_prim (  primNode *  the_prim,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

virtual void print_walker::at_proc (  procNode *  the_proc,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

virtual void print_walker::at_ptr (  ptrNode *  the_ptr,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

virtual void print_walker::at_return (  returnNode *  the_return,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

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 print_walker::at_sue (  sueNode *  the_sue,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

virtual void print_walker::at_suespec (  suespecNode *  the_suespec,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

virtual void print_walker::at_switch (  switchNode *  the_switch,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

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 print_walker::at_tdef (  tdefNode *  the_tdef,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

virtual void print_walker::at_ternary (  ternaryNode *  the_ternary,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

virtual void print_walker::at_text (  textNode *  the_text,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

virtual void print_walker::at_threeAddr (  threeAddrNode *  the_3addr,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

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 print_walker::at_unary (  unaryNode *  the_unary,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

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 print_walker::at_unit (  unitNode *  the_unit,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

virtual void print_walker::at_while (  whileNode *  the_while,
Order  ord
)  [virtual]
 

Reimplemented from Walker.

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.

void print_walker::in (   )  [inline, private]
 

Definition at line 61 of file print_walker.h.

References _indent.

void print_walker::indent (  Node *  n  )  const [private]
 

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().

void print_walker::out (   )  [inline, private]
 

Definition at line 62 of file print_walker.h.

References _indent.

static void print_walker::print (  Node *  n,
ostream &  out
)  [static]
 

To display the AST, call this static function:.


Member Data Documentation

int print_walker::_indent [private]
 

Definition at line 56 of file print_walker.h.

Referenced by in(), and out().

numbering_map* print_walker::_num [private]
 

Definition at line 57 of file print_walker.h.

ostream& print_walker::_out [private]
 

Definition at line 55 of file print_walker.h.


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

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