Click or drag to resize

TreeWizard Class

Build and navigate trees with this object. Must know about the names of tokens so you have to pass in a map or array of token names (from which this class can build the map). I.e., Token DECL means nothing unless the class can translate it to a token type.
Inheritance Hierarchy
SystemObject
  Stimulsoft.Data.Expressions.Antlr.Runtime.TreeTreeWizard

Namespace:  Stimulsoft.Data.Expressions.Antlr.Runtime.Tree
Assembly:  Stimulsoft.Data (in Stimulsoft.Data.dll) Version: 2019.3.1.0
Syntax
public class TreeWizard

The TreeWizard type exposes the following members.

Constructors
Methods
  NameDescription
Public methodComputeTokenTypes
Compute a Map<String, Integer> that is an inverted index of tokenNames (which maps int token types to names).
Public methodCreate
Create a tree or node from the indicated tree pattern that closely follows ANTLR tree grammar tree element syntax: (root child1 ... child2).
Public methodEquals(Object)
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Public methodEquals(Object, Object)
Compare type, structure, and text of two trees, assuming adaptor in this instance of a TreeWizard.
Public methodStatic memberEquals(Object, Object, ITreeAdaptor)
Compare t1 and t2; return true if token types/text, structure match exactly. The trees are examined in their entirety so that (A B) does not match (A B C) nor (A (B C)).
Protected methodStatic memberEqualsCore
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodFind(Object, Int32)
Return a List of tree nodes with token type ttype
Public methodFind(Object, String)
Return a List of subtrees matching pattern.
Public methodFindFirst(Object, Int32)
Public methodFindFirst(Object, String)
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetTokenType
Using the map of token names to token types, return the type.
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodIndex
Walk the entire tree and make a node name to nodes mapping. For now, use recursion but later nonrecursive version may be more efficient. Returns Map<Integer, List> where the List is of your AST node type. The Integer is the token type of the node.
Protected methodIndexCore
Do the work for index
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodParse(Object, String)
Public methodParse(Object, String, IDictionaryString, Object)
Given a pattern like (ASSIGN %lhs:ID %rhs:.) with optional labels on the various nodes and '.' (dot) as the node/subtree wildcard, return true if the pattern matches and fill the labels Map with the labels pointing at the appropriate nodes. Return false if the pattern is malformed or the tree does not match.
Protected methodParseCore
Do the work for parse. Check to see if the t2 pattern fits the structure and token types in t1. Check text if the pattern has text arguments on nodes. Fill labels map with pointers to nodes in tree matched against nodes in pattern with labels.
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Public methodVisit(Object, Int32, TreeWizardIContextVisitor)
Visit every ttype node in t, invoking the visitor. This is a quicker version of the general visit(t, pattern) method. The labels arg of the visitor action method is never set (it's null) since using a token type rather than a pattern doesn't let us set a label.
Public methodVisit(Object, Int32, ActionObject)
Public methodVisit(Object, String, TreeWizardIContextVisitor)
For all subtrees that match the pattern, execute the visit action. The implementation uses the root node of the pattern in combination with visit(t, ttype, visitor) so nil-rooted patterns are not allowed. Patterns with wildcard roots are also not allowed.
Protected methodVisitCore
Do the recursive work for visit
Top
Fields
  NameDescription
Protected fieldadaptor
Protected fieldtokenNameToTypeMap
Top
Remarks
In order to create nodes and navigate, this class needs a TreeAdaptor. This class can build a token type -> node index for repeated use or for iterating over the various nodes with a particular type. This class works in conjunction with the TreeAdaptor rather than moving all this functionality into the adaptor. An adaptor helps build and navigate trees using methods. This class helps you do it with string patterns like "(A B C)". You can create a tree from that pattern or match subtrees against it.
See Also