private ReplacedCapture VisitCapture(PatternCapture capture)
 {
     var contents = GetCaptureRange(capture).Select(VisitNodeOrToken);
     return new ReplacedCapture(capture.Variable, contents);
 }
예제 #2
0
 public Match AddCapture(PatternCapture patternCapture)
 {
     Debug.Assert(IsMatch);
     return new Match(NodeOrToken, IsMatch, Captures.Add(patternCapture));
 }
 private static IEnumerable<SyntaxNodeOrToken> GetCaptureRange(PatternCapture capture)
 {
     var parent = capture.StartNodeOrToken.Parent;
     var children = parent.ChildNodesAndTokens();
     var start = capture.StartNodeOrToken.Span.Start;
     var end = capture.EndNodeOrToken.Span.End;
     var span = TextSpan.FromBounds(start, end);
     return children.Where(c => span.Contains(c.Span));
 }