本文整理汇总了C++中pANTLR3_BASE_TREE_ADAPTOR::getText方法的典型用法代码示例。如果您正苦于以下问题:C++ pANTLR3_BASE_TREE_ADAPTOR::getText方法的具体用法?C++ pANTLR3_BASE_TREE_ADAPTOR::getText怎么用?C++ pANTLR3_BASE_TREE_ADAPTOR::getText使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pANTLR3_BASE_TREE_ADAPTOR
的用法示例。
在下文中一共展示了pANTLR3_BASE_TREE_ADAPTOR::getText方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
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;
}
示例2: 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;
}
示例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:
//.........这里部分代码省略.........