Puma Reference Manual | Puma: Puma::Builder Class Reference |
Syntax tree builder base class. More...
#include <Puma/Builder.h>
Inherits PtrStack< CTree >.
Inherited by Puma::CBuilder.
Classes | |
class | Container |
Container class for collecting a set of syntax tree nodes. More... | |
Public Member Functions | |
void | errors (ErrorSink &e) |
Print the collected error messages on the given error output stream. | |
ErrorSink & | err () const |
Get the collected errors. | |
void | save_state () |
Save the current state. | |
void | forget_state () |
Discard the saved state. | |
void | restore_state () |
Restore the saved state. | |
CTree * | token (Token *t) |
Create a new CT_Token object for the given token. | |
CTree * | error () |
Create a new CT_Error object. | |
int | nodes () const |
Get the current number of nodes on the builder stack. | |
CTree * | get_node (int n=0) const |
Get the n-th node from the builder stack. | |
void | setTokenCounter (unsigned long v) |
Reset the token counter. | |
unsigned long | getTokenCounter () const |
Get the current token count. | |
Static Public Member Functions | |
static void | destroy (CTree *tree) |
Destroy the given syntax tree recursively. | |
Protected Member Functions | |
Builder () | |
Constructor. | |
void | Delete () |
Destroy the top tree node of the builder stack. | |
CTree * | container () const |
Put all nodes on the builder stack into a Container object. | |
CTree * | list (CT_List *l) const |
Add all nodes on the builder stack to the given list node. | |
CTree * | copy_list (CT_List *l, Container *c) const |
Add all nodes of the given container to the given list node. | |
Protected Attributes | |
ErrorCollector | ec |
The error collector object. | |
Static Protected Attributes | |
static unsigned long int | token_counter |
Counter for the created CT_Token object. |
Syntax tree builder base class.
Implements the basic infrastructure for building CTree based syntax trees.
Tree builders are used in the syntax analysis to create the nodes of the syntax tree according to the accepted grammar (see class Syntax). A syntax tree shall be destroyed using the tree builder that has created it by calling its method Builder::destroy(CTree*) with the root node of the syntax tree as its argument.
The builder is organized as a multi-level stack. If a grammar rule is parsed then a new stack level is created. The sub-trees of the syntax tree representing the parsed grammer rule are pushed on this level of the stack. If the grammar rule is parsed successfully then these sub-trees are used to build the syntax tree representing the parsed grammar rule (and thus the corresponding source code). The current stack level is then discarded and the created syntax tree is pushed on the stack of the previous level (which is now the top level of the stack). If the grammar rule could not be parsed successfully then the current stack level is discarded and all the sub-trees pushed on it are destroyed.
Puma::Builder::Builder | ( | ) | [inline, protected] |
Constructor.
CTree * Puma::Builder::container | ( | ) | const [inline, protected] |
Put all nodes on the builder stack into a Container object.
Add all nodes of the given container to the given list node.
l | The list node. | |
c | The node container. |
void Puma::Builder::Delete | ( | ) | [protected, virtual] |
Destroy the top tree node of the builder stack.
Reimplemented from Puma::PtrStack< CTree >.
static void Puma::Builder::destroy | ( | CTree * | tree | ) | [static] |
Destroy the given syntax tree recursively.
tree | The root node of the syntax tree. |
ErrorSink & Puma::Builder::err | ( | ) | const [inline] |
Get the collected errors.
void Puma::Builder::errors | ( | ErrorSink & | e | ) | [inline] |
Print the collected error messages on the given error output stream.
e | The error output stream. |
void Puma::Builder::forget_state | ( | ) | [inline] |
Discard the saved state.
CTree * Puma::Builder::get_node | ( | int | n = 0 |
) | const [inline] |
Get the n-th node from the builder stack.
n | The index of the node. |
unsigned long Puma::Builder::getTokenCounter | ( | ) | const [inline] |
Get the current token count.
Add all nodes on the builder stack to the given list node.
l | The list node. |
int Puma::Builder::nodes | ( | ) | const [inline] |
Get the current number of nodes on the builder stack.
void Puma::Builder::restore_state | ( | ) | [inline] |
Restore the saved state.
void Puma::Builder::save_state | ( | ) | [inline] |
Save the current state.
void Puma::Builder::setTokenCounter | ( | unsigned long | v | ) | [inline] |
Reset the token counter.
v | The new counter value. |
Create a new CT_Token object for the given token.
t | The token. |
ErrorCollector Puma::Builder::ec [protected] |
The error collector object.
unsigned long int Puma::Builder::token_counter [static, protected] |
Counter for the created CT_Token object.