#include <ast.h>
Inheritance diagram for labelNode::
Public Methods | |
labelNode (const char *name, stmtNode *stmt, const Coord coord=Coord::Unknown) | |
Create a new label statement. More... | |
virtual | ~labelNode () |
Destroy a labelNode. More... | |
bool | is_undeclared () const |
virtual void | dataflow (FlowVal *v, FlowProblem &fp) |
Run the dataflow analyzer. More... | |
virtual Node * | clone () const |
Clone the input node. More... | |
virtual void | output_stmt (output_context &ct, Node *par) |
Output a statement. More... | |
Parser methods | |
labelNode (idNode *ident, stmtNode *stmt) | |
Create a label from an identfier. More... | |
labelNode (idNode *ident) | |
Create an empty label from an identifier. More... | |
Accessors | |
Methods to get and set fields in the class. | |
string & | name () |
void | name (string name) |
goto_list & | references () |
const goto_list & | references () const |
AST Traversal | |
virtual void | visit (Visitor *the_visitor) |
Dispatch a Visitor. More... | |
virtual void | walk (Walker &the_walker) |
Dispatch a Walker. More... | |
virtual Node * | change (Changer &the_changer, bool redispatch=false) |
Dispatch a Changer. More... | |
Private Attributes | |
string | _name |
the name of the label. More... | |
REF goto_list | _references |
the list of referring gotos. More... |
This class represents label statements. The label has a name, and a child statement inherited from targetNode. In addition, it has a list that can hold references to all the goto statements that refer to it. This information is populated during initial parsing by the goto_label_walker.
The NodeType is Label.
|
Create a new label statement. The new label has the given name and child statement. The input string is copied and not deleted.
|
|
Create a label from an identfier.
|
|
Create an empty label from an identifier.
|
|
Destroy a labelNode.
|
|
Dispatch a Changer. This abstract method works much the walker, but allows the tree to be changed.
Reimplemented from Node. |
|
Clone the input node. This is not a "deep" clone, so be careful. For a deep clone, use the clone_changer class.
Reimplemented from Node. |
|
Run the dataflow analyzer. Each subclass overrides this method to define it's semantics for dataflow analysis. It alters the input flow value to reflect the effect of the node within the given flow problem, calling dataflow() on it's subtrees as necessary. See the dataflow analysis documentation for more information.
Reimplemented from Node. |
|
|
|
|
|
|
|
Output a statement.
Reimplemented from stmtNode. |
|
|
|
|
|
Dispatch a Visitor. This abstract method is the entry point for the visitor design pattern. Each node subclass defines a visit() method that calls the appropriate at_ method in the visitor. For more information see the Visitor documentation.
Reimplemented from Node. |
|
Dispatch a Walker. This abstract method works much like the visitor, but instead walks the entire underlying subtree calling the appropriate at_ method at each node. For more information see the Walker documentation.
Reimplemented from Node. |
|
the name of the label.
|
|
the list of referring gotos. This list is initially empty, but is populated by the goto_label_walker after parsing. |