本文整理汇总了C++中pANTLR3_BASE_TREE_ADAPTOR类的典型用法代码示例。如果您正苦于以下问题:C++ pANTLR3_BASE_TREE_ADAPTOR类的具体用法?C++ pANTLR3_BASE_TREE_ADAPTOR怎么用?C++ pANTLR3_BASE_TREE_ADAPTOR使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了pANTLR3_BASE_TREE_ADAPTOR类的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: defineDotEdges
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;
}
开发者ID:aslakhellesoy,项目名称:antlr-3,代码行数:60,代码来源:antlr3basetreeadaptor.c
示例2:
/** Use the adaptor implementation to add a child node with the supplied token
*/
static void
addChildToken (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t, pANTLR3_COMMON_TOKEN child)
{
if (t != NULL && child != NULL)
{
adaptor->addChild(adaptor, t, adaptor->create(adaptor, child));
}
}
开发者ID:Daniel1892,项目名称:tora,代码行数:10,代码来源:antlr3basetreeadaptor.c
示例3: simulateTreeConstruction
/// Sends the required debugging events for duplicating a tree
/// to the debugger.
///
static void
simulateTreeConstruction(pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE tree)
{
ANTLR3_UINT32 n;
ANTLR3_UINT32 i;
pANTLR3_BASE_TREE child;
// Send the create node event
//
adaptor->debugger->createNode(adaptor->debugger, tree);
n = adaptor->getChildCount(adaptor, tree);
for (i = 0; i < n; i++)
{
child = (pANTLR3_BASE_TREE)adaptor->getChild(adaptor, tree, i);
simulateTreeConstruction(adaptor, child);
adaptor->debugger->addChild(adaptor->debugger, tree, child);
}
}
开发者ID:Daniel1892,项目名称:tora,代码行数:22,代码来源:antlr3basetreeadaptor.c
示例4:
static pANTLR3_BASE_TREE
createTypeTokenText (pANTLR3_BASE_TREE_ADAPTOR adaptor, ANTLR3_UINT32 tokenType, pANTLR3_COMMON_TOKEN fromToken, pANTLR3_UINT8 text)
{
/* Create the new token
*/
fromToken = adaptor->createTokenFromToken(adaptor, fromToken);
/* Set the type of the new token to that supplied
*/
fromToken->type = tokenType;
/* Set the text of the token accordingly
*/
fromToken->setText8(fromToken, text);
/* Return a new node based upon this token
*/
return adaptor->create(adaptor, fromToken);
}
开发者ID:cctbx,项目名称:cctbx-playground,代码行数:19,代码来源:antlr3basetreeadaptor.c
示例5:
static pANTLR3_BASE_TREE
errorNode (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_TOKEN_STREAM ctnstream, pANTLR3_COMMON_TOKEN startToken, pANTLR3_COMMON_TOKEN stopToken, pANTLR3_EXCEPTION e)
{
// Use the supplied common tree node stream to get another tree from the factory
// TODO: Look at creating the erronode as in Java, but this is complicated by the
// need to track and free the memory allocated to it, so for now, we just
// want something in the tree that isn't a NULL pointer.
//
return adaptor->createTypeText(adaptor, ANTLR3_TOKEN_INVALID, (pANTLR3_UINT8)"Tree Error Node");
}
开发者ID:jariba,项目名称:europa-pso,代码行数:11,代码来源:antlr3commontreeadaptor.c
示例6: defineDotNodes
static void
defineDotNodes(pANTLR3_BASE_TREE_ADAPTOR adaptor, void * t, pANTLR3_STRING dotSpec )
{
// How many nodes are we talking about?
//
int nCount;
int i;
pANTLR3_BASE_TREE child;
char buff[64];
pANTLR3_STRING text;
int j;
// 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 of the current tree, define a node using the
// memory address of the node to name it
//
for (i = 0; i<nCount; i++)
{
// Pick up a pointer for the child
//
child = (pANTLR3_BASE_TREE)adaptor->getChild(adaptor, t, i);
// Name the node
//
sprintf(buff, "\tn%p[label=\"", child);
dotSpec->append8(dotSpec, buff);
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:
dotSpec->addc(dotSpec, text->charAt(text, j));
break;
}
}
dotSpec->append8(dotSpec, "\"]\n");
// And now define the children of this child (if any)
//
defineDotNodes(adaptor, child, dotSpec);
}
// Done
//
return;
}
开发者ID:Daniel1892,项目名称:tora,代码行数:79,代码来源:antlr3basetreeadaptor.c
示例7: defineDotEdges
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:
//.........这里部分代码省略.........
开发者ID:Daniel1892,项目名称:tora,代码行数:101,代码来源:antlr3basetreeadaptor.c
示例8: sprintf
/// Produce a DOT specification for graphviz
//
static pANTLR3_STRING
makeDot (pANTLR3_BASE_TREE_ADAPTOR adaptor, void * theTree)
{
// The string we are building up
//
pANTLR3_STRING dotSpec;
char buff[64];
pANTLR3_STRING text;
int j;
dotSpec = adaptor->strFactory->newStr8
(
adaptor->strFactory,
// Default look and feel
//
(pANTLR3_UINT8)
"digraph {\n\n"
"\tordering=out;\n"
"\tranksep=.4;\n"
"\tbgcolor=\"lightgrey\"; node [shape=box, fixedsize=false, fontsize=12, fontname=\"Helvetica-bold\", fontcolor=\"blue\"\n"
"\twidth=.25, height=.25, color=\"black\", fillcolor=\"white\", style=\"filled, solid, bold\"];\n\n"
"\tedge [arrowsize=.5, color=\"black\", style=\"bold\"]\n\n"
);
if (theTree == NULL)
{
// No tree, so create a blank spec
//
dotSpec->append8(dotSpec, "n0[label=\"EMPTY TREE\"]\n");
return dotSpec;
}
sprintf(buff, "\tn%p[label=\"", theTree);
dotSpec->append8(dotSpec, buff);
text = adaptor->getText(adaptor, theTree);
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, "\"]\n");
// First produce the node defintions
//
defineDotNodes(adaptor, theTree, dotSpec);
dotSpec->append8(dotSpec, "\n");
defineDotEdges(adaptor, theTree, dotSpec);
// Terminate the spec
//
dotSpec->append8(dotSpec, "\n}");
// Result
//
return dotSpec;
}
开发者ID:Daniel1892,项目名称:tora,代码行数:80,代码来源:antlr3basetreeadaptor.c
示例9: dupTree
/** Return a duplicate of the entire tree (implementation provided by the
* BASE_TREE interface.)
*/
static pANTLR3_BASE_TREE
dupTree (pANTLR3_BASE_TREE_ADAPTOR adaptor, pANTLR3_BASE_TREE t)
{
return (pANTLR3_BASE_TREE)adaptor->dupTreeTT(adaptor, t, NULL);
}
开发者ID:Daniel1892,项目名称:tora,代码行数:8,代码来源:antlr3basetreeadaptor.c
注:本文中的pANTLR3_BASE_TREE_ADAPTOR类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论