本文整理汇总了C#中Antlr4.Tool.Ast.GrammarAST.DeleteChild方法的典型用法代码示例。如果您正苦于以下问题:C# GrammarAST.DeleteChild方法的具体用法?C# GrammarAST.DeleteChild怎么用?C# GrammarAST.DeleteChild使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Antlr4.Tool.Ast.GrammarAST
的用法示例。
在下文中一共展示了GrammarAST.DeleteChild方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: StripLeftRecursion
// TODO: this strips the tree properly, but since text()
// uses the start of stop token index and gets text from that
// ineffectively ignores this routine.
public virtual GrammarAST StripLeftRecursion(GrammarAST altAST)
{
GrammarAST lrlabel = null;
GrammarAST first = (GrammarAST)altAST.GetChild(0);
int leftRecurRuleIndex = 0;
if (first.Type == ELEMENT_OPTIONS)
{
first = (GrammarAST)altAST.GetChild(1);
leftRecurRuleIndex = 1;
}
ITree rref = first.GetChild(1); // if label=rule
if ((first.Type == RULE_REF && first.Text.Equals(ruleName)) ||
(rref != null && rref.Type == RULE_REF && rref.Text.Equals(ruleName)))
{
if (first.Type == ASSIGN || first.Type == PLUS_ASSIGN)
lrlabel = (GrammarAST)first.GetChild(0);
// remove rule ref (first child unless options present)
altAST.DeleteChild(leftRecurRuleIndex);
// reset index so it prints properly (sets token range of
// ALT to start to right of left recur rule we deleted)
GrammarAST newFirstChild = (GrammarAST)altAST.GetChild(leftRecurRuleIndex);
altAST.TokenStartIndex = newFirstChild.TokenStartIndex;
}
return lrlabel;
}