#include <address.h>
Inheritance diagram for expression_addition_address:

Public Member Functions | |
| virtual | ~expression_addition_address () |
| expression_addition_address (const type::pointer &tp, const expression::pointer &lhs, const expression::pointer &rhs, const symbol *hint, translator_compile *cntxt) | |
Protected Member Functions | |
| type::pointer | get_type () const |
| void | post_order_traversal (int pprec) |
| void | logical_traversal (int pprec, label::pointer &true_branch, label::pointer &false_branch, bool fall_through_preference) |
| expression::pointer | optimize () const |
| const symbol * | get_symbol_hint () const |
Private Member Functions | |
| expression_addition_address () | |
| expression_addition_address (const expression_addition_address &) | |
| expression_addition_address & | operator= (const expression_addition_address &) |
Private Attributes | |
| translator_compile & | code |
| type::pointer | tp |
| const symbol * | hint |
Definition at line 34 of file address.h.
| virtual expression_addition_address::~expression_addition_address | ( | ) | [virtual] |
The destructor.
| expression_addition_address::expression_addition_address | ( | const type::pointer & | tp, | |
| const expression::pointer & | lhs, | |||
| const expression::pointer & | rhs, | |||
| const symbol * | hint, | |||
| translator_compile * | cntxt | |||
| ) |
The default constructor.
| tp | The type of this expression node | |
| lhs | The base address | |
| rhs | The word offset to be applied. | |
| hint | The symbol most recently related to this expression, or NULL for no hint. | |
| cntxt | where to send our generated code. |
| expression_addition_address::expression_addition_address | ( | ) | [private] |
The default constructor. Do not use.
| expression_addition_address::expression_addition_address | ( | const expression_addition_address & | ) | [private] |
The copy constructor. Do not use.
| type::pointer expression_addition_address::get_type | ( | ) | const [protected, virtual] |
The get_type method is used to get the type of this expression.
Reimplemented from expression_addition.
| void expression_addition_address::post_order_traversal | ( | int | pprec | ) | [protected, virtual] |
The post_order_traversal method is used to perform actions required after the right hand expression has been traversed.
| pprec | The parent expressions precedence. Not much use to code generators, but essential for pretty printers to get the parentheses correct. |
Reimplemented from expression_addition.
| void expression_addition_address::logical_traversal | ( | int | pprec, | |
| label::pointer & | true_branch, | |||
| label::pointer & | false_branch, | |||
| bool | fall_through_preference | |||
| ) | [protected] |
| expression::pointer expression_addition_address::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.
Implements expression.
| const symbol* expression_addition_address::get_symbol_hint | ( | ) | const [protected, virtual] |
The get_symbol_hint method is used to get the symbol associated with the expression.
Reimplemented from expression.
| expression_addition_address& expression_addition_address::operator= | ( | const expression_addition_address & | ) | [private] |
The assignment operator. Do not use.
type::pointer expression_addition_address::tp [private] |
const symbol* expression_addition_address::hint [private] |
1.5.1