当前位置: 首页>>代码示例>>C#>>正文


C# IMacroContext.PreProcessChildren方法代码示例

本文整理汇总了C#中IMacroContext.PreProcessChildren方法的典型用法代码示例。如果您正苦于以下问题:C# IMacroContext.PreProcessChildren方法的具体用法?C# IMacroContext.PreProcessChildren怎么用?C# IMacroContext.PreProcessChildren使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在IMacroContext的用法示例。


在下文中一共展示了IMacroContext.PreProcessChildren方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: _set

		public static LNode _set(LNode node, IMacroContext context)
		{
			var lhs = node.Args[0, LNode.Missing];
			var name = lhs.Name;
			bool isSnippet = name == _hash_snippet;
			if ((isSnippet || name == _hash_set) && node.ArgCount == 2 && lhs.IsId)
			{
				node = context.PreProcessChildren();

				Symbol newTarget = isSnippet ? _hash_setScopedPropertyQuote : _hash_setScopedProperty;
				var stmts = node.Args.Slice(1).Select(key =>
					{
						LNode value = [email protected];
						if (key.Calls(S.Assign, 2))
						{
							value = key.Args[1];
							key = key.Args[0];
							if (isSnippet && value.Calls(S.Braces))
								value = value.Args.AsLNode(S.Splice);
						}
						if (!key.IsId)
							context.Write(Severity.Error, key, "Invalid key; expected an identifier.");
						return node.With(newTarget, LNode.Literal(key.Name, key), value);
					});
				return F.Call(S.Splice, stmts);
			}
			return null;
		}
开发者ID:jonathanvdc,项目名称:Loyc,代码行数:28,代码来源:BuiltinMacros.cs

示例2: treeEquals

		public static LNode treeEquals(LNode node, IMacroContext context)
		{
			if (node.ArgCount < 2) return null;
			node = context.PreProcessChildren();
			var args = node.Args;

			LNode left = args[0];
			for (int i = 1; i < args.Count; i++)
				if (!left.Equals(args[i], LNode.CompareMode.IgnoreTrivia))
					return F.Literal(G.BoxedFalse);
			return F.Literal(G.BoxedTrue);
		}
开发者ID:qwertie,项目名称:ecsharp,代码行数:12,代码来源:StandardMacros.cs


注:本文中的IMacroContext.PreProcessChildren方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。