本文整理汇总了C++中pANTLR3_BASE_TREE_ADAPTOR::getChild方法的典型用法代码示例。如果您正苦于以下问题:C++ pANTLR3_BASE_TREE_ADAPTOR::getChild方法的具体用法?C++ pANTLR3_BASE_TREE_ADAPTOR::getChild怎么用?C++ pANTLR3_BASE_TREE_ADAPTOR::getChild使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pANTLR3_BASE_TREE_ADAPTOR
的用法示例。
在下文中一共展示了pANTLR3_BASE_TREE_ADAPTOR::getChild方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
pANTLR3_BASE_TREE
dupTreeTT (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t, pANTLR3_BASE_TREE parent)
{
pANTLR3_BASE_TREE newTree;
pANTLR3_BASE_TREE child;
pANTLR3_BASE_TREE newSubTree;
ANTLR3_UINT32 n;
ANTLR3_UINT32 i;
if (t == NULL)
{
return NULL;
}
newTree = (pANTLR3_BASE_TREE)t->dupNode(t);
// Ensure new subtree root has parent/child index set
//
adaptor->setChildIndex (adaptor, newTree, t->getChildIndex(t));
adaptor->setParent (adaptor, newTree, parent);
n = adaptor->getChildCount (adaptor, t);
for (i=0; i < n; i++)
{
child = (pANTLR3_BASE_TREE)adaptor->getChild (adaptor, t, i);
newSubTree = (pANTLR3_BASE_TREE)adaptor->dupTreeTT (adaptor, child, t);
adaptor->addChild (adaptor, newTree, newSubTree);
}
return newTree;
}
示例2:
static void
defineDotEdges(pANTLR3_BASE_TREE_ADAPTOR adaptor, void * t, pANTLR3_STRING dotSpec)
{
// How many nodes are we talking about?
//
int nCount;
int i;
if (t == NULL)
{
// No tree, so do nothing
//
return;
}
// Count the nodes
//
nCount = adaptor->getChildCount(adaptor, t);
if (nCount == 0)
{
// This will already have been included as a child of another node
// so there is nothing to add.
//
return;
}
// For each child, define an edge from this parent, then process
// and children of this child in the same way
//
for (i=0; i<nCount; i++)
{
pANTLR3_BASE_TREE child;
char buff[128];
// Next child
//
child = adaptor->getChild(adaptor, t, i);
// Create the edge relation
//
sprintf(buff, "\t\tn%p -> n%p\t\t// ", t, child);
dotSpec->append8(dotSpec, buff);
// Document the relationship
//
dotSpec->appendS(dotSpec, adaptor->getText(adaptor, t));
dotSpec->append8(dotSpec, " -> ");
dotSpec->appendS(dotSpec, adaptor->getText(adaptor, child));
dotSpec->append8(dotSpec, "\n");
// Define edges for this child
//
defineDotEdges(adaptor, child, dotSpec);
}
// Done
//
return;
}
示例3: switch
static void
defineDotEdges(pANTLR3_BASE_TREE_ADAPTOR adaptor, void * t, pANTLR3_STRING dotSpec)
{
// How many nodes are we talking about?
//
int nCount;
int i;
if (t == NULL)
{
// No tree, so do nothing
//
return;
}
// Count the nodes
//
nCount = adaptor->getChildCount(adaptor, t);
if (nCount == 0)
{
// This will already have been included as a child of another node
// so there is nothing to add.
//
return;
}
// For each child, define an edge from this parent, then process
// and children of this child in the same way
//
for (i=0; i<nCount; i++)
{
pANTLR3_BASE_TREE child;
char buff[128];
pANTLR3_STRING text;
int j;
// Next child
//
child = (pANTLR3_BASE_TREE)adaptor->getChild(adaptor, t, i);
// Create the edge relation
//
sprintf(buff, "\t\tn%p -> n%p\t\t// ", t, child);
dotSpec->append8(dotSpec, buff);
// Document the relationship
//
text = adaptor->getText(adaptor, t);
for (j = 0; j < (ANTLR3_INT32)(text->len); j++)
{
switch(text->charAt(text, j))
{
case '"':
dotSpec->append8(dotSpec, "\\\"");
break;
case '\n':
dotSpec->append8(dotSpec, "\\n");
break;
case '\r':
dotSpec->append8(dotSpec, "\\r");
break;
default:
dotSpec->addc(dotSpec, text->charAt(text, j));
break;
}
}
dotSpec->append8(dotSpec, " -> ");
text = adaptor->getText(adaptor, child);
for (j = 0; j < (ANTLR3_INT32)(text->len); j++)
{
switch(text->charAt(text, j))
{
case '"':
dotSpec->append8(dotSpec, "\\\"");
break;
case '\n':
dotSpec->append8(dotSpec, "\\n");
break;
case '\r':
dotSpec->append8(dotSpec, "\\r");
break;
default:
//.........这里部分代码省略.........