本文介绍了ANTLR:获取令牌名称吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个语法规则,
OR
: '|';
但是当我使用来打印AST时,
But when I print the AST using,
public static void Preorder(ITree tree, int depth)
{
if (tree == null)
{
return;
}
for (int i = 0; i < depth; i++)
{
Console.Write(" ");
}
Console.WriteLine(tree);
for(int i=0; i<tree.ChildCount; ++i)
Preorder(tree.GetChild(i), depth + 1);
}
(感谢 Bart ),它显示了实际的|
字符.有没有办法让我说或"呢?
(Thanks Bart) it displays the actual |
character. Is there a way I can get it to say "OR" instead?
推荐答案
robert 启发了这个答案.
if (ExpressionParser.tokenNames[tree.Type] == tree.Text)
Console.WriteLine(tree.Text);
else
Console.WriteLine("{0} '{1}'", ExpressionParser.tokenNames[tree.Type], tree.Text);
这篇关于ANTLR:获取令牌名称吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!