PUMA Library Reference Manual
|
#include <Puma/Builder.h>
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.
Classes | |
class | Container |
Container class for collecting a set of syntax tree nodes. More... | |
Public Member Functions | |
virtual void | destroyNode (CTree *node) |
Destroy the given syntax tree node. | |
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. | |
Public Member Functions inherited from Puma::PtrStack< CTree > | |
PtrStack (long size=8192, long incr=8192) | |
Construct a new layered stack. | |
virtual | ~PtrStack () |
Destructor. | |
void | Push (const CTree *item) |
Add a new item on the top of the current layer. | |
void | Pop () |
Remove the top item from the current layer. | |
CTree * | Top () const |
Get the top item from the current layer. | |
long | Length () const |
Get the number of items added to the current layer. | |
CTree * | Get (long n) const |
Get the n-th item on the current layer. | |
void | New () |
Create a new layer. | |
void | Forget () |
Remove the top layer and add its items to the underlying layer. | |
void | Reject () |
Remove the top layer. | |
void | Destroy () |
Remove the top layer and delete its items. | |
long | Stacks () const |
Get the number of layers. | |
void | Reset () |
Remove all layers. | |
Static Public Member Functions | |
static void | destroy (CTree *tree, bool recursive=true) |
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 Member Functions inherited from Puma::PtrStack< CTree > | |
virtual void | Remove () |
Remove the top item of the current layer. | |
Protected Attributes | |
ErrorCollector | ec |
The error collector object. | |
Static Protected Attributes | |
static unsigned long int | token_counter |
Counter for the created CT_Token object. | |
|
inlineprotected |
Constructor.
|
inlineprotected |
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. |
|
protectedvirtual |
Destroy the top tree node of the builder stack.
Reimplemented from Puma::PtrStack< CTree >.
Reimplemented in Puma::CCBuilder.
|
static |
Destroy the given syntax tree recursively.
tree | The root node of the syntax tree. |
recursive | Delete sub tree too. |
|
virtual |
Destroy the given syntax tree node.
Child nodes are not destroyed.
node | The node. |
|
inline |
Get the collected errors.
|
inline |
Print the collected error messages on the given error output stream.
e | The error output stream. |
|
inline |
Discard the saved state.
|
inline |
Get the n-th node from the builder stack.
n | The index of the node. |
|
inline |
Get the current token count.
Add all nodes on the builder stack to the given list node.
l | The list node. |
|
inline |
Get the current number of nodes on the builder stack.
|
inline |
Restore the saved state.
|
inline |
Save the current state.
|
inline |
Reset the token counter.
v | The new counter value. |
Create a new CT_Token object for the given token.
t | The token. |
|
protected |
The error collector object.
|
staticprotected |
Counter for the created CT_Token object.