本文整理汇总了C#中CstNode.DescendantsAndSelf方法的典型用法代码示例。如果您正苦于以下问题:C# CstNode.DescendantsAndSelf方法的具体用法?C# CstNode.DescendantsAndSelf怎么用?C# CstNode.DescendantsAndSelf使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CstNode
的用法示例。
在下文中一共展示了CstNode.DescendantsAndSelf方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ExtractElements
public IEnumerable<CstNode> ExtractElements(CstNode ast) {
foreach (var nameAndRules in FilterDictionary) {
var elements = ast.DescendantsAndSelf(nameAndRules.Key);
var rules = nameAndRules.Value;
var results = elements.Where(e => rules.All(rule => rule.IsAcceptable(e)));
foreach (var result in results) {
yield return result;
}
}
}
示例2: GetAllElements
protected IEnumerable<CstNode> GetAllElements(CstNode cst, ISet<string> elementNames) {
return cst.DescendantsAndSelf()
.Where(e => elementNames.Contains(e.Name));
}
示例3: GetUppermostNodesByNames
public static IEnumerable<CstNode> GetUppermostNodesByNames(CstNode cst, ISet<string> nodeNames) {
return cst.DescendantsAndSelf()
.Where(node => nodeNames.Contains(node.Name))
.Where(node => node.AncestorsWithSingleChild()
.All(ancestor => !nodeNames.Contains(ancestor.Name)));
}