Overview   Project   Class   Tree   Deprecated   Index 
Grammatica 1.3 Documentation
FRAMES    NO FRAMES
SUMMARY:  INNER | FIELD | CONSTR | METHOD

PerCederberg.Grammatica.Parser
Class Analyzer

System.Object
   |
   +--Analyzer

   in Analyzer.cs

class Analyzer
extends System.Object

A parse tree analyzer. This class provides callback methods that may be used either during parsing, or for a parse tree traversal. This class should be subclassed to provide adequate handling of the parse tree nodes. The general contract for the analyzer class does not guarantee a strict call order for the callback methods. Depending on the type of parser, the enter() and exit() methods for production nodes can be called either in a top-down or a bottom-up fashion. The only guarantee provided by this API, is that the calls for any given node will always be in the order enter(), child(), and exit(). If various child() calls are made, they will be made from left to right as child nodes are added (to the right).


Constructor Summary
Analyzer()
          Creates a new parse tree analyzer.
 
Method Summary
 Node Analyze( Node node )
          Analyzes a parse tree node by traversing all it's child nodes.
 virtual void Child( Production node, Node child )
          Called when adding a child to a parse tree node.
 virtual void Enter( Node node )
          Called when entering a parse tree node.
 virtual Node Exit( Node node )
          Called when exiting a parse tree node.
protected Node GetChildAt( Node node, int pos )
          Returns a child at the specified position.
protected ArrayList GetChildValues( Node node )
          Returns all the node values for all child nodes.
protected Node GetChildWithId( Node node, int id )
          Returns the first child with the specified id.
protected int GetIntValue( Node node, int pos )
          Returns the node integer value at the specified position.
protected string GetStringValue( Node node, int pos )
          Returns the node string value at the specified position.
protected object GetValue( Node node, int pos )
          Returns the node value at the specified position.
 

Constructor Detail

Analyzer

public Analyzer();
Creates a new parse tree analyzer.


Method Detail

Analyze

public Node Analyze( Node node );
Analyzes a parse tree node by traversing all it's child nodes. The tree traversal is depth-first, and the appropriate callback methods will be called. If the node is a production node, a new production node will be created and children will be added by recursively processing the children of the specified production node. This method is used to process a parse tree after creation.
Parameters:
node - the parse tree node to process
Returns:
the resulting parse tree node
Throws:
ParserLogException - if the node analysis discovered errors

Child

public virtual void Child( Production node, Node child );
Called when adding a child to a parse tree node. By default this method adds the child to the production node. A subclass can override this method to handle each node separately. Note that the child node may be null if the corresponding exit() method returned null.
Parameters:
node - the parent node
child - the child node, or null
Throws:
ParseException - if the node analysis discovered errors

Enter

public virtual void Enter( Node node );
Called when entering a parse tree node. By default this method does nothing. A subclass can override this method to handle each node separately.
Parameters:
node - the node being entered
Throws:
ParseException - if the node analysis discovered errors

Exit

public virtual Node Exit( Node node );
Called when exiting a parse tree node. By default this method returns the node. A subclass can override this method to handle each node separately. If no parse tree should be created, this method should return null.
Parameters:
node - the node being exited
Returns:
the node to add to the parse tree, or null if no parse tree should be created
Throws:
ParseException - if the node analysis discovered errors

GetChildAt

protected Node GetChildAt( Node node, int pos );
Returns a child at the specified position. If either the node or the child node is null, this method will throw a parse exception with the internal error type.
Parameters:
node - the parent node
pos - the child position
Returns:
the child node
Throws:
ParseException - if either the node or the child node was null

GetChildValues

protected ArrayList GetChildValues( Node node );
Returns all the node values for all child nodes.
Parameters:
node - the parse tree node
Returns:
a list with all the child node values
Since:
1.3

GetChildWithId

protected Node GetChildWithId( Node node, int id );
Returns the first child with the specified id. If the node is null, or no child with the specified id could be found, this method will throw a parse exception with the internal error type.
Parameters:
node - the parent node
id - the child node id
Returns:
the child node
Throws:
ParseException - if the node was null, or a child node couldn't be found

GetIntValue

protected int GetIntValue( Node node, int pos );
Returns the node integer value at the specified position. If either the node is null, or the value is not an instance of the Integer class, this method will throw a parse exception with the internal error type.
Parameters:
node - the parse tree node
pos - the child position
Returns:
the value object
Throws:
ParseException - if either the node was null, or the value wasn't an integer

GetStringValue

protected string GetStringValue( Node node, int pos );
Returns the node string value at the specified position. If either the node is null, or the value is not an instance of the String class, this method will throw a parse exception with the internal error type.
Parameters:
node - the parse tree node
pos - the child position
Returns:
the value object
Throws:
ParseException - if either the node was null, or the value wasn't a string

GetValue

protected object GetValue( Node node, int pos );
Returns the node value at the specified position. If either the node or the value is null, this method will throw a parse exception with the internal error type.
Parameters:
node - the parse tree node
pos - the child position
Returns:
the value object
Throws:
ParseException - if either the node or the value was null

 Overview   Project   Class   Tree   Deprecated   Index 
Grammatica 1.3 Documentation
FRAMES    NO FRAMES
SUMMARY:  INNER | FIELD | CONSTR | METHOD