C-Breeze
C Compiler Infrastructure

[ Project home page]
Main Page   Modules   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

semcheck_expr_visitor Class Reference
[phases defined in c-breeze (some of which are available from the command line).]

Expression checker. More...

#include <semcheck.h>

Inheritance diagram for semcheck_expr_visitor:

Visitor List of all members.

Public Member Functions

virtual void at_const (constNode *the_const)
virtual void at_id (idNode *the_id)
virtual void at_binary (binaryNode *the_binary)
virtual void at_unary (unaryNode *the_unary)
virtual void at_cast (castNode *the_cast)
virtual void at_comma (commaNode *the_comma)
virtual void at_ternary (ternaryNode *the_ternary)
virtual void at_call (callNode *the_call)
virtual void at_initializer (initializerNode *the_initializer)
"at_" methods
These methods define the functions that should be performed when different classes of Nodes are visited. The most specific "at_" method that matches a given Node's class will be called.

virtual void at_node (Node *the_node)
virtual void at_unit (unitNode *the_unit)
virtual void at_def (defNode *the_def)
virtual void at_decl (declNode *the_decl)
virtual void at_subdecl (subdeclNode *the_subdecl)
virtual void at_proc (procNode *the_proc)
virtual void at_type (typeNode *the_type)
virtual void at_prim (primNode *the_prim)
virtual void at_tdef (tdefNode *the_tdef)
virtual void at_ptr (ptrNode *the_ptr)
virtual void at_array (arrayNode *the_array)
virtual void at_func (funcNode *the_func)
virtual void at_sue (sueNode *the_sue)
virtual void at_struct (structNode *the_struct)
virtual void at_union (unionNode *the_union)
virtual void at_enum (enumNode *the_enum)
virtual void at_suespec (suespecNode *the_suespec)
virtual void at_expr (exprNode *the_expr)
virtual void at_index (indexNode *the_index)
virtual void at_stmt (stmtNode *the_stmt)
virtual void at_block (blockNode *the_block)
virtual void at_basicblock (basicblockNode *the_basicblock)
virtual void at_exprstmt (exprstmtNode *the_exprstmt)
virtual void at_target (targetNode *the_target)
virtual void at_label (labelNode *the_label)
virtual void at_case (caseNode *the_case)
virtual void at_selection (selectionNode *the_selection)
virtual void at_if (ifNode *the_if)
virtual void at_switch (switchNode *the_switch)
virtual void at_loop (loopNode *the_loop)
virtual void at_while (whileNode *the_while)
virtual void at_do (doNode *the_do)
virtual void at_for (forNode *the_for)
virtual void at_jump (jumpNode *the_jump)
virtual void at_goto (gotoNode *the_goto)
virtual void at_continue (continueNode *the_continue)
virtual void at_break (breakNode *the_break)
virtual void at_return (returnNode *the_return)
virtual void at_attrib (attribNode *the_attrib)
virtual void at_operand (operandNode *the_oper)
virtual void at_conditiongoto (conditiongotoNode *the_condgoto)
virtual void at_threeAddr (threeAddrNode *the_3addr)
virtual void at_text (textNode *the_text)

Static Public Member Functions

void check (exprNode *e)
void check (unitNode *u)

Private Member Functions

typeNodedefault_type ()
typeNodecheck_binary (unsigned int opid, exprNode *lhs, exprNode *rhs, exprNode **new_lhs, exprNode **new_rhs)
typeNodecheck_unary (unsigned int opid, exprNode *ex, exprNode **new_ex)
 semcheck_expr_visitor ()

Detailed Description

Expression checker.

Definition at line 75 of file semcheck.h.


Constructor & Destructor Documentation

semcheck_expr_visitor::semcheck_expr_visitor   [inline, private]
 

Definition at line 92 of file semcheck.h.


Member Function Documentation

virtual void Visitor::at_array arrayNode   the_array [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 142 of file visitor.h.

References Visitor::at_type().

Referenced by arrayNode::visit().

virtual void Visitor::at_attrib attribNode   the_attrib [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 253 of file visitor.h.

References Visitor::at_stmt().

Referenced by attribNode::visit().

virtual void Visitor::at_basicblock basicblockNode   the_basicblock [inline, virtual, inherited]
 

Definition at line 202 of file visitor.h.

References Visitor::at_block().

Referenced by basicblockNode::visit().

void semcheck_expr_visitor::at_binary binaryNode   the_binary [virtual]
 

Reimplemented from Visitor.

Definition at line 214 of file semcheck.cc.

References Array, check_binary(), ref_clone_changer::clone(), Node::coord(), default_type(), binaryNode::get_left(), binaryNode::get_right(), Operator::id(), Operator::Index, exprNode::integral_promotions(), typeNode::is_integer(), binaryNode::left(), exprNode::no_tdef_type(), binaryNode::op(), Ptr, binaryNode::right(), CBZ::SyntaxError(), Node::typ(), exprNode::type(), typeNode::type(), and Node::visit().

virtual void Visitor::at_block blockNode   the_block [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 199 of file visitor.h.

References Visitor::at_stmt().

Referenced by Visitor::at_basicblock(), and blockNode::visit().

virtual void Visitor::at_break breakNode   the_break [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 247 of file visitor.h.

References Visitor::at_jump().

Referenced by breakNode::visit().

void semcheck_expr_visitor::at_call callNode   the_call [virtual]
 

Reimplemented from Visitor.

Definition at line 366 of file semcheck.cc.

References callNode::args(), Array, Node::coord(), Func, list_visitor(), callNode::name(), typeNode::no_tdef_type(), exprNode::no_tdef_type(), Ptr, CBZ::SyntaxError(), Node::typ(), exprNode::type(), and Node::visit().

virtual void Visitor::at_case caseNode   the_case [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 214 of file visitor.h.

References Visitor::at_target().

Referenced by caseNode::visit().

void semcheck_expr_visitor::at_cast castNode   the_cast [virtual]
 

Reimplemented from Visitor.

Definition at line 315 of file semcheck.cc.

References castNode::expr(), and Node::visit().

void semcheck_expr_visitor::at_comma commaNode   the_comma [virtual]
 

Reimplemented from Visitor.

Definition at line 330 of file semcheck.cc.

References commaNode::exprs(), list_visitor(), and exprNode::type().

virtual void Visitor::at_conditiongoto conditiongotoNode   the_condgoto [inline, virtual, inherited]
 

Definition at line 259 of file visitor.h.

References Visitor::at_goto().

Referenced by conditiongotoNode::visit().

void semcheck_expr_visitor::at_const constNode   the_const [virtual]
 

Reimplemented from Visitor.

Definition at line 192 of file semcheck.cc.

virtual void Visitor::at_continue continueNode   the_continue [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 244 of file visitor.h.

References Visitor::at_jump().

Referenced by continueNode::visit().

virtual void Visitor::at_decl declNode   the_decl [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 121 of file visitor.h.

References Visitor::at_def().

Referenced by Visitor::at_subdecl(), and declNode::visit().

virtual void Visitor::at_def defNode   the_def [inline, virtual, inherited]
 

Definition at line 118 of file visitor.h.

References Visitor::at_node().

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

virtual void Visitor::at_do doNode   the_do [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 232 of file visitor.h.

References Visitor::at_loop().

Referenced by doNode::visit().

virtual void Visitor::at_enum enumNode   the_enum [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 157 of file visitor.h.

References Visitor::at_sue().

Referenced by enumNode::visit().

virtual void Visitor::at_expr exprNode   the_expr [inline, virtual, inherited]
 

Definition at line 163 of file visitor.h.

References Visitor::at_node().

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

virtual void Visitor::at_exprstmt exprstmtNode   the_exprstmt [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 205 of file visitor.h.

References Visitor::at_stmt().

Referenced by exprstmtNode::visit().

virtual void Visitor::at_for forNode   the_for [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 235 of file visitor.h.

References Visitor::at_loop().

Referenced by forNode::visit().

virtual void Visitor::at_func funcNode   the_func [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 145 of file visitor.h.

References Visitor::at_type().

Referenced by funcNode::visit().

virtual void Visitor::at_goto gotoNode   the_goto [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 241 of file visitor.h.

References Visitor::at_jump().

Referenced by Visitor::at_conditiongoto(), and gotoNode::visit().

void semcheck_expr_visitor::at_id idNode   the_id [virtual]
 

Reimplemented from Visitor.

Definition at line 197 of file semcheck.cc.

References idNode::decl(), default_type(), and exprNode::type().

virtual void Visitor::at_if ifNode   the_if [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 220 of file visitor.h.

References Visitor::at_selection().

Referenced by ifNode::visit().

virtual void Visitor::at_index indexNode   the_index [inline, virtual, inherited]
 

Definition at line 166 of file visitor.h.

References Visitor::at_expr().

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

void semcheck_expr_visitor::at_initializer initializerNode   the_initializer [virtual]
 

Reimplemented from Visitor.

Definition at line 411 of file semcheck.cc.

References initializerNode::exprs(), and list_visitor().

virtual void Visitor::at_jump jumpNode   the_jump [inline, virtual, inherited]
 

Definition at line 238 of file visitor.h.

References Visitor::at_stmt().

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

virtual void Visitor::at_label labelNode   the_label [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 211 of file visitor.h.

References Visitor::at_target().

Referenced by labelNode::visit().

virtual void Visitor::at_loop loopNode   the_loop [inline, virtual, inherited]
 

Definition at line 226 of file visitor.h.

References Visitor::at_stmt().

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

virtual void Visitor::at_node Node   the_node [inline, virtual, inherited]
 

Definition at line 111 of file visitor.h.

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

virtual void Visitor::at_operand operandNode   the_oper [inline, virtual, inherited]
 

Definition at line 256 of file visitor.h.

References Visitor::at_expr().

Referenced by operandNode::visit().

virtual void Visitor::at_prim primNode   the_prim [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 133 of file visitor.h.

References Visitor::at_type().

Referenced by primNode::visit().

virtual void Visitor::at_proc procNode   the_proc [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 127 of file visitor.h.

References Visitor::at_def().

Referenced by procNode::visit().

virtual void Visitor::at_ptr ptrNode   the_ptr [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 139 of file visitor.h.

References Visitor::at_type().

Referenced by ptrNode::visit().

virtual void Visitor::at_return returnNode   the_return [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 250 of file visitor.h.

References Visitor::at_jump().

Referenced by returnNode::visit().

virtual void Visitor::at_selection selectionNode   the_selection [inline, virtual, inherited]
 

Definition at line 217 of file visitor.h.

References Visitor::at_stmt().

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

virtual void Visitor::at_stmt stmtNode   the_stmt [inline, virtual, inherited]
 

Definition at line 196 of file visitor.h.

References Visitor::at_node().

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

virtual void Visitor::at_struct structNode   the_struct [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 151 of file visitor.h.

References Visitor::at_sue().

Referenced by structNode::visit().

virtual void Visitor::at_subdecl subdeclNode   the_subdecl [inline, virtual, inherited]
 

Definition at line 124 of file visitor.h.

References Visitor::at_decl().

Referenced by subdeclNode::visit().

virtual void Visitor::at_sue sueNode   the_sue [inline, virtual, inherited]
 

Reimplemented in print_tree_visitor.

Definition at line 148 of file visitor.h.

References Visitor::at_type().

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

virtual void Visitor::at_suespec suespecNode   the_suespec [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 160 of file visitor.h.

References Visitor::at_type().

Referenced by suespecNode::visit().

virtual void Visitor::at_switch switchNode   the_switch [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 223 of file visitor.h.

References Visitor::at_selection().

Referenced by switchNode::visit().

virtual void Visitor::at_target targetNode   the_target [inline, virtual, inherited]
 

Definition at line 208 of file visitor.h.

References Visitor::at_stmt().

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

virtual void Visitor::at_tdef tdefNode   the_tdef [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 136 of file visitor.h.

References Visitor::at_type().

Referenced by tdefNode::visit().

void semcheck_expr_visitor::at_ternary ternaryNode   the_ternary [virtual]
 

Reimplemented from Visitor.

Definition at line 346 of file semcheck.cc.

References ternaryNode::cond(), ternaryNode::false_br(), ternaryNode::true_br(), exprNode::type(), and Node::visit().

virtual void Visitor::at_text textNode   the_text [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 265 of file visitor.h.

References Visitor::at_node().

Referenced by textNode::visit().

virtual void Visitor::at_threeAddr threeAddrNode   the_3addr [inline, virtual, inherited]
 

Definition at line 262 of file visitor.h.

References Visitor::at_stmt().

Referenced by threeAddrNode::visit().

virtual void Visitor::at_type typeNode   the_type [inline, virtual, inherited]
 

Definition at line 130 of file visitor.h.

References Visitor::at_node().

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

void semcheck_expr_visitor::at_unary unaryNode   the_unary [virtual]
 

Reimplemented from Visitor.

Definition at line 278 of file semcheck.cc.

References check_unary(), unaryNode::expr(), unaryNode::get_expr(), Operator::id(), unaryNode::op(), Operator::SIZEOF, unaryNode::sizeof_type(), exprNode::type(), and Node::visit().

virtual void Visitor::at_union unionNode   the_union [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 154 of file visitor.h.

References Visitor::at_sue().

Referenced by unionNode::visit().

virtual void Visitor::at_unit unitNode   the_unit [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 115 of file visitor.h.

References Visitor::at_node().

Referenced by unitNode::visit().

virtual void Visitor::at_while whileNode   the_while [inline, virtual, inherited]
 

Reimplemented in tree_visitor, and print_tree_visitor.

Definition at line 229 of file visitor.h.

References Visitor::at_loop().

Referenced by whileNode::visit().

void semcheck_expr_visitor::check unitNode   u [static]
 

void semcheck_expr_visitor::check exprNode   e [static]
 

Definition at line 174 of file semcheck.cc.

References Node::visit(), and Node::walk().

Referenced by semcheck_walker::at_case(), semcheck_walker::at_decl(), semcheck_walker::at_exprstmt(), semcheck_walker::at_for(), semcheck_walker::at_loop(), semcheck_walker::at_return(), semcheck_walker::at_selection(), semcheck_walker::at_suespec(), and arrayNode::qualified_equal_to().

typeNode * semcheck_expr_visitor::check_binary unsigned int    opid,
exprNode   lhs,
exprNode   rhs,
exprNode **    new_lhs,
exprNode **    new_rhs
[private]
 

Definition at line 602 of file semcheck.cc.

References Operator::ANDAND, Operator::ANDassign, Array, Operator::ARROW, ref_clone_changer::clone(), Node::coord(), idNode::decl(), default_type(), Operator::DIVassign, Operator::EQ, Operator::ERassign, suespecNode::find_field(), Operator::GE, exprNode::integral_promotions(), typeNode::is_arithmetic(), typeNode::is_integer(), exprNode::is_lvalue(), typeNode::is_pointer(), typeNode::is_scalar(), typeNode::is_void(), Operator::LE, Operator::LS, Operator::LSassign, Operator::MINUSassign, Operator::MODassign, Operator::MULTassign, suespecNode::name(), idNode::name(), Operator::NE, typeNode::no_tdef_type(), exprNode::no_tdef_type(), Operator::ORassign, Operator::OROR, Operator::PLUSassign, Prim, Ptr, Operator::RS, Operator::RSassign, sueNode::spec(), Struct, CBZ::SyntaxError(), Tdef, Node::typ(), typeNode::type(), exprNode::type(), declNode::type(), typeNode::type_qualifiers(), Union, and exprNode::usual_arithmetic_conversions().

Referenced by at_binary().

typeNode * semcheck_expr_visitor::check_unary unsigned int    opid,
exprNode   ex,
exprNode **    new_ex
[private]
 

Definition at line 422 of file semcheck.cc.

References Operator::ADDRESS, Array, ref_clone_changer::clone(), Node::coord(), Operator::DECR, default_type(), Operator::ICR, Operator::INDIR, exprNode::integral_promotions(), typeNode::is_arithmetic(), typeNode::is_integer(), exprNode::is_lvalue(), typeNode::is_scalar(), exprNode::no_tdef_type(), Operator::POSTDEC, Operator::POSTINC, Operator::PREDEC, Operator::PREINC, Ptr, Operator::SIZEOF, CBZ::SyntaxError(), Node::typ(), typeNode::type(), exprNode::type(), Operator::UMINUS, and Operator::UPLUS.

Referenced by at_unary().

typeNode * semcheck_expr_visitor::default_type   [private]
 

Definition at line 1130 of file semcheck.cc.

Referenced by at_binary(), at_id(), check_binary(), and check_unary().


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

Generated on August 27, 2003
Back to the C-Breeze home page