antlr3basetreeadaptor.c

Langue: en

Version: 375814 (fedora - 01/12/10)

Section: 3 (Bibliothèques de fonctions)

Sommaire

NAME

src/antlr3basetreeadaptor.c -

Contains the base functions that all tree adaptors start with.

SYNOPSIS


#include <antlr3basetreeadaptor.h>

Functions


static void addChild (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t, pANTLR3_BASE_TREE child)
Add a child to the tree t.
static void addChildToken (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t, pANTLR3_COMMON_TOKEN child)
Use the adaptor implementation to add a child node with the supplied token.
ANTLR3_API void antlr3BaseTreeAdaptorInit (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_DEBUG_EVENT_LISTENER debugger)
Given a pointer to a base tree adaptor structure (which is usually embedded in the super class the implements the tree adaptor used in the parse), initialize its function pointers and so on.
static pANTLR3_BASE_TREE becomeRoot (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE newRootTree, pANTLR3_BASE_TREE oldRootTree)
If oldRoot is a nil root, just copy or move the children to newRoot.
static pANTLR3_BASE_TREE becomeRootToken (pANTLR3_BASE_TREE_ADAPTOR adaptor, void *newRoot, pANTLR3_BASE_TREE oldRoot)
Use the adaptor interface to set a new tree node with the supplied token to the root of the tree.
static pANTLR3_BASE_TREE createTypeText (pANTLR3_BASE_TREE_ADAPTOR adaptor, ANTLR3_UINT32 tokenType, pANTLR3_UINT8 text)

static pANTLR3_BASE_TREE createTypeToken (pANTLR3_BASE_TREE_ADAPTOR adaptor, ANTLR3_UINT32 tokenType, pANTLR3_COMMON_TOKEN fromToken)
Use the super class supplied create() method to create a new node from the supplied token.
static pANTLR3_BASE_TREE createTypeTokenText (pANTLR3_BASE_TREE_ADAPTOR adaptor, ANTLR3_UINT32 tokenType, pANTLR3_COMMON_TOKEN fromToken, pANTLR3_UINT8 text)

static void dbgAddChild (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t, pANTLR3_BASE_TREE child)

static void dbgAddChildToken (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t, pANTLR3_COMMON_TOKEN child)

static pANTLR3_BASE_TREE dbgBecomeRoot (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE newRoot, pANTLR3_BASE_TREE oldRoot)

static pANTLR3_BASE_TREE dbgBecomeRootToken (pANTLR3_BASE_TREE_ADAPTOR adaptor, void *newRoot, pANTLR3_BASE_TREE oldRoot)

static pANTLR3_BASE_TREE dbgCreateTypeText (pANTLR3_BASE_TREE_ADAPTOR adaptor, ANTLR3_UINT32 tokenType, pANTLR3_UINT8 text)

static pANTLR3_BASE_TREE dbgCreateTypeToken (pANTLR3_BASE_TREE_ADAPTOR adaptor, ANTLR3_UINT32 tokenType, pANTLR3_COMMON_TOKEN fromToken)

static pANTLR3_BASE_TREE dbgCreateTypeTokenText (pANTLR3_BASE_TREE_ADAPTOR adaptor, ANTLR3_UINT32 tokenType, pANTLR3_COMMON_TOKEN fromToken, pANTLR3_UINT8 text)

static pANTLR3_BASE_TREE dbgDupTree (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t)

static pANTLR3_BASE_TREE dbgNil (pANTLR3_BASE_TREE_ADAPTOR adaptor)

static void defineDotEdges (pANTLR3_BASE_TREE_ADAPTOR adaptor, void *t, pANTLR3_STRING dotSpec)

static void defineDotNodes (pANTLR3_BASE_TREE_ADAPTOR adaptor, void *t, pANTLR3_STRING dotSpec)

static pANTLR3_BASE_TREE dupTree (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t)
Return a duplicate of the entire tree (implementation provided by the BASE_TREE interface.
static pANTLR3_BASE_TREE dupTreeTT (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t, pANTLR3_BASE_TREE parent)

static pANTLR3_BASE_TREE getChild (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t, ANTLR3_UINT32 i)

static ANTLR3_UINT32 getChildCount (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t)

static pANTLR3_STRING getText (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t)
Dummy implementation - will be supplied by super class.
static ANTLR3_UINT32 getType (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t)
Dummy implementation - will be supplied by super class.
static ANTLR3_UINT32 getUniqueID (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE node)
Returns a uniqueID for the node.
static ANTLR3_BOOLEAN isNilNode (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t)

static pANTLR3_STRING makeDot (pANTLR3_BASE_TREE_ADAPTOR adaptor, void *theTree)
Produce a DOT specification for graphviz.
static pANTLR3_BASE_TREE nilNode (pANTLR3_BASE_TREE_ADAPTOR adaptor)
Create and return a nil tree node (no token payload).
static pANTLR3_BASE_TREE rulePostProcessing (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE root)
Transform ^(nil x) to x.
static void setText (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_STRING t)
Dummy implementation - will be supplied by super class.
static void setText8 (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_UINT8 t)
Dummy implementation - will be supplied by super class.
static void setType (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t, ANTLR3_UINT32 type)
Dummy implementation - will be supplied by super class.
static void simulateTreeConstruction (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE tree)
Sends the required debugging events for duplicating a tree to the debugger.

Detailed Description

Contains the base functions that all tree adaptors start with.

this implementation can then be overridden by any higher implementation.

Function Documentation

static void addChild (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t, pANTLR3_BASE_TREE child) [static]

Add a child to the tree t. If child is a flat tree (a list), make all in list children of t. Warning: if t has no children, but child does and child isNilNode then it is ok to move children to t via t.children = child.children; i.e., without copying the array. This is for construction and I'm not sure it's completely general for a tree's addChild method to work this way. Make sure you differentiate between your tree's addChild and this parser tree construction addChild if it's not ok to move children to t with a simple assignment.

References ANTLR3_BASE_TREE_struct::addChild.

static void addChildToken (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t, pANTLR3_COMMON_TOKEN child) [static]

Use the adaptor implementation to add a child node with the supplied token.

References ANTLR3_BASE_TREE_ADAPTOR_struct::addChild, and ANTLR3_BASE_TREE_ADAPTOR_struct::create.

ANTLR3_API void antlr3BaseTreeAdaptorInit (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_DEBUG_EVENT_LISTENER debugger)

Given a pointer to a base tree adaptor structure (which is usually embedded in the super class the implements the tree adaptor used in the parse), initialize its function pointers and so on.

References ANTLR3_DEBUG_EVENT_LISTENER_struct::adaptor, ANTLR3_BASE_TREE_ADAPTOR_struct::addChild, ANTLR3_BASE_TREE_ADAPTOR_struct::addChildToken, ANTLR3_BASE_TREE_ADAPTOR_struct::becomeRoot, ANTLR3_BASE_TREE_ADAPTOR_struct::becomeRootToken, ANTLR3_BASE_TREE_ADAPTOR_struct::createTypeText, ANTLR3_BASE_TREE_ADAPTOR_struct::createTypeToken, ANTLR3_BASE_TREE_ADAPTOR_struct::createTypeTokenText, ANTLR3_BASE_TREE_ADAPTOR_struct::dupTree, ANTLR3_BASE_TREE_ADAPTOR_struct::dupTreeTT, ANTLR3_BASE_TREE_ADAPTOR_struct::getChild, ANTLR3_BASE_TREE_ADAPTOR_struct::getChildCount, ANTLR3_BASE_TREE_ADAPTOR_struct::getText, ANTLR3_BASE_TREE_ADAPTOR_struct::getType, ANTLR3_BASE_TREE_ADAPTOR_struct::getUniqueID, ANTLR3_BASE_TREE_ADAPTOR_struct::isNilNode, ANTLR3_BASE_TREE_ADAPTOR_struct::makeDot, ANTLR3_BASE_TREE_ADAPTOR_struct::nilNode, ANTLR3_BASE_TREE_ADAPTOR_struct::rulePostProcessing, ANTLR3_BASE_TREE_ADAPTOR_struct::setText, ANTLR3_BASE_TREE_ADAPTOR_struct::setText8, and ANTLR3_BASE_TREE_ADAPTOR_struct::setType.

Referenced by ANTLR3_TREE_ADAPTORDebugNew(), ANTLR3_TREE_ADAPTORNew(), and setDebugEventListener().

static pANTLR3_BASE_TREE becomeRoot (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE newRootTree, pANTLR3_BASE_TREE oldRootTree) [static]

If oldRoot is a nil root, just copy or move the children to newRoot. If not a nil root, make oldRoot a child of newRoot.

     old=^(nil a b c), new=r yields ^(r a b c)
     old=^(a b c), new=r yields ^(r ^(a b c))
 

If newRoot is a nil-rooted single child tree, use the single child as the new root node.

     old=^(nil a b c), new=^(nil r) yields ^(r a b c)
     old=^(a b c), new=^(nil r) yields ^(r ^(a b c))
 

If oldRoot was null, it's ok, just return newRoot (even if isNilNode).

     old=null, new=r yields r
     old=null, new=^(nil r) yields ^(nil r)
 

Return newRoot. Throw an exception if newRoot is not a simple node or nil root with a single child node--it must be a root node. If newRoot is ^(nil x)</endcode> return x as newRoot.

Be advised that it's ok for newRoot to point at oldRoot's children; i.e., you don't have to copy the list. We are constructing these nodes so we should have this control for efficiency.

References ANTLR3_BASE_TREE_struct::addChild, ANTLR3_FPRINTF, ANTLR3_BASE_TREE_struct::getChild, ANTLR3_BASE_TREE_struct::getChildCount, ANTLR3_BASE_TREE_struct::isNilNode, and ANTLR3_BASE_TREE_struct::reuse.

Referenced by dbgBecomeRoot().

static pANTLR3_BASE_TREE becomeRootToken (pANTLR3_BASE_TREE_ADAPTOR adaptor, void * newRoot, pANTLR3_BASE_TREE oldRoot) [static]

Use the adaptor interface to set a new tree node with the supplied token to the root of the tree.

References ANTLR3_BASE_TREE_ADAPTOR_struct::becomeRoot, and ANTLR3_BASE_TREE_ADAPTOR_struct::create.

static pANTLR3_BASE_TREE createTypeText (pANTLR3_BASE_TREE_ADAPTOR adaptor, ANTLR3_UINT32 tokenType, pANTLR3_UINT8 text) [static]

References ANTLR3_BASE_TREE_ADAPTOR_struct::create, and ANTLR3_BASE_TREE_ADAPTOR_struct::createToken.

Referenced by dbgCreateTypeText().

static pANTLR3_BASE_TREE createTypeToken (pANTLR3_BASE_TREE_ADAPTOR adaptor, ANTLR3_UINT32 tokenType, pANTLR3_COMMON_TOKEN fromToken) [static]

Use the super class supplied create() method to create a new node from the supplied token.

References ANTLR3_BASE_TREE_ADAPTOR_struct::create, ANTLR3_BASE_TREE_ADAPTOR_struct::createTokenFromToken, and ANTLR3_COMMON_TOKEN_struct::setType.

Referenced by dbgCreateTypeToken().

static pANTLR3_BASE_TREE createTypeTokenText (pANTLR3_BASE_TREE_ADAPTOR adaptor, ANTLR3_UINT32 tokenType, pANTLR3_COMMON_TOKEN fromToken, pANTLR3_UINT8 text) [static]

References ANTLR3_BASE_TREE_ADAPTOR_struct::create, ANTLR3_BASE_TREE_ADAPTOR_struct::createTokenFromToken, ANTLR3_COMMON_TOKEN_struct::setText8, and ANTLR3_COMMON_TOKEN_struct::setType.

Referenced by dbgCreateTypeTokenText().

static void dbgAddChild (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t, pANTLR3_BASE_TREE child) [static]

References ANTLR3_DEBUG_EVENT_LISTENER_struct::addChild, ANTLR3_BASE_TREE_struct::addChild, and ANTLR3_BASE_TREE_ADAPTOR_struct::debugger.

static void dbgAddChildToken (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t, pANTLR3_COMMON_TOKEN child) [static]

References ANTLR3_DEBUG_EVENT_LISTENER_struct::addChild, ANTLR3_BASE_TREE_ADAPTOR_struct::addChild, ANTLR3_BASE_TREE_ADAPTOR_struct::create, and ANTLR3_BASE_TREE_ADAPTOR_struct::debugger.

static pANTLR3_BASE_TREE dbgBecomeRoot (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE newRoot, pANTLR3_BASE_TREE oldRoot) [static]

References ANTLR3_DEBUG_EVENT_LISTENER_struct::becomeRoot, becomeRoot(), and ANTLR3_BASE_TREE_ADAPTOR_struct::debugger.

static pANTLR3_BASE_TREE dbgBecomeRootToken (pANTLR3_BASE_TREE_ADAPTOR adaptor, void * newRoot, pANTLR3_BASE_TREE oldRoot) [static]

References ANTLR3_DEBUG_EVENT_LISTENER_struct::becomeRoot, ANTLR3_BASE_TREE_ADAPTOR_struct::becomeRoot, ANTLR3_BASE_TREE_ADAPTOR_struct::create, and ANTLR3_BASE_TREE_ADAPTOR_struct::debugger.

static pANTLR3_BASE_TREE dbgCreateTypeText (pANTLR3_BASE_TREE_ADAPTOR adaptor, ANTLR3_UINT32 tokenType, pANTLR3_UINT8 text) [static]

References ANTLR3_DEBUG_EVENT_LISTENER_struct::createNode, createTypeText(), and ANTLR3_BASE_TREE_ADAPTOR_struct::debugger.

static pANTLR3_BASE_TREE dbgCreateTypeToken (pANTLR3_BASE_TREE_ADAPTOR adaptor, ANTLR3_UINT32 tokenType, pANTLR3_COMMON_TOKEN fromToken) [static]

References ANTLR3_DEBUG_EVENT_LISTENER_struct::createNode, createTypeToken(), and ANTLR3_BASE_TREE_ADAPTOR_struct::debugger.

static pANTLR3_BASE_TREE dbgCreateTypeTokenText (pANTLR3_BASE_TREE_ADAPTOR adaptor, ANTLR3_UINT32 tokenType, pANTLR3_COMMON_TOKEN fromToken, pANTLR3_UINT8 text) [static]

References ANTLR3_DEBUG_EVENT_LISTENER_struct::createNode, createTypeTokenText(), and ANTLR3_BASE_TREE_ADAPTOR_struct::debugger.

pANTLR3_BASE_TREE dbgDupTree (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t) [static]

References ANTLR3_BASE_TREE_ADAPTOR_struct::dupTreeTT, and simulateTreeConstruction().

static pANTLR3_BASE_TREE dbgNil (pANTLR3_BASE_TREE_ADAPTOR adaptor) [static]

References ANTLR3_BASE_TREE_ADAPTOR_struct::create, ANTLR3_DEBUG_EVENT_LISTENER_struct::createNode, and ANTLR3_BASE_TREE_ADAPTOR_struct::debugger.

static void defineDotEdges (pANTLR3_BASE_TREE_ADAPTOR adaptor, void * t, pANTLR3_STRING dotSpec) [static]

References ANTLR3_STRING_struct::addc, ANTLR3_STRING_struct::append8, ANTLR3_STRING_struct::charAt, ANTLR3_BASE_TREE_ADAPTOR_struct::getChild, ANTLR3_BASE_TREE_ADAPTOR_struct::getChildCount, ANTLR3_BASE_TREE_ADAPTOR_struct::getText, and ANTLR3_STRING_struct::len.

Referenced by makeDot().

static void defineDotNodes (pANTLR3_BASE_TREE_ADAPTOR adaptor, void * t, pANTLR3_STRING dotSpec) [static]

References ANTLR3_STRING_struct::addc, ANTLR3_STRING_struct::append8, ANTLR3_STRING_struct::charAt, ANTLR3_BASE_TREE_ADAPTOR_struct::getChild, ANTLR3_BASE_TREE_ADAPTOR_struct::getChildCount, ANTLR3_BASE_TREE_ADAPTOR_struct::getText, and ANTLR3_STRING_struct::len.

Referenced by makeDot().

static pANTLR3_BASE_TREE dupTree (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t) [static]

Return a duplicate of the entire tree (implementation provided by the BASE_TREE interface. )

References ANTLR3_BASE_TREE_ADAPTOR_struct::dupTreeTT.

pANTLR3_BASE_TREE dupTreeTT (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t, pANTLR3_BASE_TREE parent) [static]

References ANTLR3_BASE_TREE_ADAPTOR_struct::addChild, ANTLR3_BASE_TREE_struct::dupNode, ANTLR3_BASE_TREE_ADAPTOR_struct::dupTreeTT, ANTLR3_BASE_TREE_ADAPTOR_struct::getChild, ANTLR3_BASE_TREE_ADAPTOR_struct::getChildCount, ANTLR3_BASE_TREE_struct::getChildIndex, ANTLR3_BASE_TREE_ADAPTOR_struct::setChildIndex, and ANTLR3_BASE_TREE_ADAPTOR_struct::setParent.

static pANTLR3_BASE_TREE getChild (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t, ANTLR3_UINT32 i) [static]

References ANTLR3_FPRINTF.

static ANTLR3_UINT32 getChildCount (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t) [static]

References ANTLR3_FPRINTF.

static pANTLR3_STRING getText (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t) [static]

Dummy implementation - will be supplied by super class.

References ANTLR3_FPRINTF.

static ANTLR3_UINT32 getType (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t) [static]

Dummy implementation - will be supplied by super class.

static ANTLR3_UINT32 getUniqueID (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE node) [static]

Returns a uniqueID for the node. Because this is the C implementation we can just use its address suitably converted/cast to an integer.

References ANTLR3_UINT32_CAST.

static ANTLR3_BOOLEAN isNilNode (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t) [static]

References ANTLR3_BASE_TREE_struct::isNilNode.

static pANTLR3_STRING makeDot (pANTLR3_BASE_TREE_ADAPTOR adaptor, void * theTree) [static]

Produce a DOT specification for graphviz.

References ANTLR3_STRING_struct::addc, ANTLR3_STRING_struct::append8, ANTLR3_STRING_struct::charAt, defineDotEdges(), defineDotNodes(), ANTLR3_BASE_TREE_ADAPTOR_struct::getText, ANTLR3_STRING_struct::len, ANTLR3_STRING_FACTORY_struct::newStr8, and ANTLR3_BASE_TREE_ADAPTOR_struct::strFactory.

static pANTLR3_BASE_TREE nilNode (pANTLR3_BASE_TREE_ADAPTOR adaptor) [static]

Create and return a nil tree node (no token payload).

References ANTLR3_BASE_TREE_ADAPTOR_struct::create.

static pANTLR3_BASE_TREE rulePostProcessing (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE root) [static]

Transform ^(nil x) to x.

References ANTLR3_BASE_TREE_struct::getChild, ANTLR3_BASE_TREE_struct::getChildCount, ANTLR3_BASE_TREE_struct::isNilNode, ANTLR3_BASE_TREE_struct::reuse, ANTLR3_BASE_TREE_struct::setChildIndex, and ANTLR3_BASE_TREE_struct::setParent.

static void setText (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_STRING t) [static]

Dummy implementation - will be supplied by super class.

References ANTLR3_FPRINTF.

static void setText8 (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_UINT8 t) [static]

Dummy implementation - will be supplied by super class.

References ANTLR3_FPRINTF.

static void setType (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t, ANTLR3_UINT32 type) [static]

Dummy implementation - will be supplied by super class.

References ANTLR3_FPRINTF.

static void simulateTreeConstruction (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE tree) [static]

Sends the required debugging events for duplicating a tree to the debugger.

References ANTLR3_DEBUG_EVENT_LISTENER_struct::addChild, ANTLR3_DEBUG_EVENT_LISTENER_struct::createNode, ANTLR3_BASE_TREE_ADAPTOR_struct::debugger, ANTLR3_BASE_TREE_ADAPTOR_struct::getChild, and ANTLR3_BASE_TREE_ADAPTOR_struct::getChildCount.

Referenced by dbgDupTree().

Author

Generated automatically by Doxygen for ANTLR3C from the source code.