expression_load_bogus Class Reference

#include <bogus.h>

Inheritance diagram for expression_load_bogus:

expression_load expression List of all members.

Public Member Functions

virtual ~expression_load_bogus ()
 expression_load_bogus (const expression::pointer &operand, translator_compile *cntxt)

Protected Member Functions

void traversal (int pprec)
void logical_traversal (int pprec, label::pointer &true_branch, label::pointer &false_branch, bool fall_through_preference)
expression::pointer optimize () const
expression::pointer assignment_expression_factory (const expression::pointer &rhs) const
expression::pointer strip_indirection () const

Private Member Functions

 expression_load_bogus ()
 expression_load_bogus (const expression_load_bogus &)
expression_load_bogusoperator= (const expression_load_bogus &)

Private Attributes

translator_compilecode
expression::pointer operand

Detailed Description

The expression_load_bogus class is used to represent a load that isn't a load - the address stays on the stack. This is used principally for strings, but may eventually have otjer uses.

Definition at line 33 of file bogus.h.


Constructor & Destructor Documentation

virtual expression_load_bogus::~expression_load_bogus (  )  [virtual]

The destructor.

expression_load_bogus::expression_load_bogus ( const expression::pointer operand,
translator_compile cntxt 
)

The constructor.

expression_load_bogus::expression_load_bogus (  )  [private]

The default constructor. Do not use.

expression_load_bogus::expression_load_bogus ( const expression_load_bogus  )  [private]

The copy constructor. Do not use.


Member Function Documentation

void expression_load_bogus::traversal ( int  pprec  )  [protected, virtual]

The traversal method may be used to traverse each of the declaractions in the list.

Parameters:
pprec The precedence of the parent expression node.

Implements expression.

void expression_load_bogus::logical_traversal ( int  pprec,
label::pointer true_branch,
label::pointer false_branch,
bool  fall_through_preference 
) [protected]

expression::pointer expression_load_bogus::optimize (  )  const [protected, virtual]

The optimize method may be used to evaluate constant expressions, or substitute more efficient expressions.

This is intended to be called by the translator:: expression_statement method, or similar, where the expression is in its final form, and will get no deeper. In other words, when all available information has been provided.

There is no default implementation, even though most optimize implementations return self(), because this gives the compiler no opportunity to remind the authors of new classes that they have forgotten something.

Returns:
If the expression tree is not constant, or it is already as reduced as it can get, it returns itself. Otherwise, it returns a new expression node.

Implements expression.

expression::pointer expression_load_bogus::assignment_expression_factory ( const expression::pointer rhs  )  const [protected, virtual]

The assignment_expression_factory method is used by the assignment_expression method to build an assignment expression node.

The default implementation prints and error saying that the left hand side of the assignment is inappropriate.

Parameters:
rhs The right hand side of the assignment ("this" is the left hand side).
Note:
The parser will delete this expression tree once the assignment tree has been manufactored. If you wish to keep using this tree, you will need to self() it.

Reimplemented from expression.

expression::pointer expression_load_bogus::strip_indirection (  )  const [protected, virtual]

The strip_indirection method is used to obtain the address expression of an abstract indirection expression. This is used to pass variables by reference to functions and procedures.

The default implementation returns a NULL pointer, because the error has to be printer by the caller.

Reimplemented from expression.

expression_load_bogus& expression_load_bogus::operator= ( const expression_load_bogus  )  [private]

The assignment operator. Do not use.


Member Data Documentation

translator_compile& expression_load_bogus::code [private]

The code instance variable is used to remember where to send our generated code.

Definition at line 71 of file bogus.h.

expression::pointer expression_load_bogus::operand [private]

The operand instance variable is used to remember the address operand of this load.

Definition at line 77 of file bogus.h.


The documentation for this class was generated from the following file:
Generated on Sun Feb 25 01:27:12 2007 for UCSDp-SystemCrossCompiler by  doxygen 1.5.1