本文整理汇总了C#中ParserRuleContext.GetChild方法的典型用法代码示例。如果您正苦于以下问题:C# ParserRuleContext.GetChild方法的具体用法?C# ParserRuleContext.GetChild怎么用?C# ParserRuleContext.GetChild使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ParserRuleContext
的用法示例。
在下文中一共展示了ParserRuleContext.GetChild方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TagRegion
private void TagRegion(ParserRuleContext context, int endChild)
{
var endToken = context.GetChild(endChild);
if (endToken is LanguageService.SyntaxTree.Tree.TerminalNodeImpl)
{
LanguageService.SyntaxTree.IToken sym = ((LanguageService.SyntaxTree.Tree.TerminalNodeImpl)endToken).Symbol;
var tokenSpan = new TextSpan(context.Start.StartIndex, 1);
tags.Add(tokenSpan.ToClassificationSpan(Snapshot, xsharpRegionStartType));
tokenSpan = new TextSpan( sym.StartIndex, sym.StopIndex - sym.StartIndex + 1);
tags.Add(tokenSpan.ToClassificationSpan(Snapshot, xsharpRegionStopType));
}
else if (endToken is LanguageService.CodeAnalysis.XSharp.SyntaxParser.XSharpParser.StatementBlockContext)
{
XSharpParser.StatementBlockContext lastTokenInContext = endToken as LanguageService.CodeAnalysis.XSharp.SyntaxParser.XSharpParser.StatementBlockContext;
var tokenSpan = new TextSpan(context.Start.StartIndex, 1);
tags.Add(tokenSpan.ToClassificationSpan(Snapshot, xsharpRegionStartType));
tokenSpan = new TextSpan(lastTokenInContext.Stop.StartIndex - 1, 1);
tags.Add(tokenSpan.ToClassificationSpan(Snapshot, xsharpRegionStopType));
}
}
示例2: StripChildrenOutOfRange
/// <summary>
/// Replace any subtree siblings of root that are completely to left
/// or right of lookahead range with a CommonToken(Token.INVALID_TYPE,"...")
/// node.
/// </summary>
/// <remarks>
/// Replace any subtree siblings of root that are completely to left
/// or right of lookahead range with a CommonToken(Token.INVALID_TYPE,"...")
/// node. The source interval for t is not altered to suit smaller range!
/// WARNING: destructive to t.
/// </remarks>
/// <since>4.5.1</since>
public static void StripChildrenOutOfRange(ParserRuleContext t, ParserRuleContext root, int startIndex, int stopIndex)
{
if (t == null)
{
return;
}
for (int i = 0; i < t.ChildCount; i++)
{
IParseTree child = t.GetChild(i);
Interval range = child.SourceInterval;
if (child is ParserRuleContext && (range.b < startIndex || range.a > stopIndex))
{
if (IsAncestorOf(child, root))
{
// replace only if subtree doesn't have displayed root
CommonToken abbrev = new CommonToken(TokenConstants.InvalidType, "...");
t.children.Set(i, new TerminalNodeImpl(abbrev));
}
}
}
}