Loyc.Syntax.LNodeExt.ToLNodeCore C# (CSharp) Method

ToLNodeCore() static private method

static private ToLNodeCore ( ILNode node ) : LNode
node ILNode
return LNode
		static LNode ToLNodeCore(ILNode node)
		{
			var attrs = VList<LNode>.Empty;
			for (int i = node.Min; i < -1; i++)
				attrs.Add(ToLNodeCore(node[i]));

			switch (node.Kind) {
				case LNodeKind.Id:
					return LNode.Id(attrs, node.Name, node.Range, node.Style);
				case LNodeKind.Literal:
					return LNode.Literal(attrs, node.Value, node.Range, node.Style);
				default:
					var args = VList<LNode>.Empty;
					for (int i = 0, max = node.Max; i <= max; i++)
						args.Add(ToLNodeCore(node[i]));
					var target = ToLNodeCore(node.Target);
					return LNode.Call(attrs, target, args, node.Range, node.Style);
			}
		}