Puma Reference Manual Puma: Puma::Builder Class Reference



Puma::Builder Class Reference

#include <Puma/Builder.h>

Inheritance diagram for Puma::Builder:

Inheritance graph

List of all members.


Detailed Description

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.

Public Member Functions

void errors (ErrorSink &e)
 Print the collected error messages on the given error output stream.
ErrorSinkerr () 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.
CTreetoken (Token *t)
 Create a new CT_Token object for the given token.
CTreeerror ()
 Create a new CT_Error object.
int nodes () const
 Get the current number of nodes on the builder stack.
CTreeget_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.
CTreecontainer () const
 Put all nodes on the builder stack into a Container object.
CTreelist (CT_List *l) const
 Add all nodes on the builder stack to the given list node.
CTreecopy_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.

Classes

class  Container
 Container class for collecting a set of syntax tree nodes. More...


Constructor & Destructor Documentation

Puma::Builder::Builder (  )  [inline, protected]

Constructor.


Member Function Documentation

static void Puma::Builder::destroy ( CTree tree  )  [static]

Destroy the given syntax tree recursively.

Parameters:
tree The root node of the syntax tree.

void Puma::Builder::errors ( ErrorSink e  )  [inline]

Print the collected error messages on the given error output stream.

Parameters:
e The error output stream.

ErrorSink & Puma::Builder::err (  )  const [inline]

Get the collected errors.

void Puma::Builder::save_state (  )  [inline]

Save the current state.

void Puma::Builder::forget_state (  )  [inline]

Discard the saved state.

void Puma::Builder::restore_state (  )  [inline]

Restore the saved state.

CTree* Puma::Builder::token ( Token t  ) 

Create a new CT_Token object for the given token.

Parameters:
t The token.

CTree* Puma::Builder::error (  ) 

Create a new CT_Error object.

int Puma::Builder::nodes (  )  const [inline]

Get the current number of nodes on the builder stack.

CTree * Puma::Builder::get_node ( int  n = 0  )  const [inline]

Get the n-th node from the builder stack.

Parameters:
n The index of the node.

void Puma::Builder::setTokenCounter ( unsigned long  v  )  [inline]

Reset the token counter.

Parameters:
v The new counter value.

unsigned long Puma::Builder::getTokenCounter (  )  const [inline]

Get the current token count.

void Puma::Builder::Delete (  )  [protected, virtual]

Destroy the top tree node of the builder stack.

Reimplemented from Puma::PtrStack< T >.

CTree * Puma::Builder::container (  )  const [inline, protected]

Put all nodes on the builder stack into a Container object.

CTree* Puma::Builder::list ( CT_List l  )  const [protected]

Add all nodes on the builder stack to the given list node.

Parameters:
l The list node.

CTree* Puma::Builder::copy_list ( CT_List l,
Container c 
) const [protected]

Add all nodes of the given container to the given list node.

Parameters:
l The list node.
c The node container.


Member Data Documentation

The error collector object.

unsigned long int Puma::Builder::token_counter [static, protected]

Counter for the created CT_Token object.




Puma Reference Manual. Created on 5 Nov 2008.