本文整理汇总了C#中LNode.WithValue方法的典型用法代码示例。如果您正苦于以下问题:C# LNode.WithValue方法的具体用法?C# LNode.WithValue怎么用?C# LNode.WithValue使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LNode
的用法示例。
在下文中一共展示了LNode.WithValue方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TryReplaceHere
static LNode TryReplaceHere(LNode node, Pair<LNode, LNode>[] patterns, MMap<Symbol, LNode> temp)
{
for (int i = 0; i < patterns.Length; i++)
{
temp.Clear();
LNode r = TryReplaceHere(node, patterns[i].A, patterns[i].B, temp, patterns);
if (r != null) return r;
}
// Support simple token replacement in TokenTrees
TokenTree tt;
if (node.IsLiteral && (tt = node.Value as TokenTree) != null) {
bool modified = ReplaceInTokenTree(ref tt, _tokenTreeRepls);
if (modified)
return node.WithValue(tt);
}
return null;
}
示例2: Replace
public Maybe<LNode> Replace(LNode node) {
TokenTree tt;
if (node.IsId) {
Symbol name = node.Name;
for (int i = 0; i < Replacements.Count; i++)
if (Replacements[i].A == name) {
Replacements.InternalArray[i].C++;
var repl = Replacements[i].B;
return repl.WithAttrs(node.Attrs.WhereSelect(_replace).AddRange(repl.Attrs));
}
return node;
} else if ((tt = node.Value as TokenTree) != null) {
if (ReplaceInTokenTree(ref tt, Replacements))
return node.WithValue(tt);
}
return node.Select(_replace);
}