コード例 #1
0
ファイル: LoycBinaryWriter.cs プロジェクト: jonathanvdc/Loyc
 /// <summary>
 /// Gets a node encoder for the given node.
 /// </summary>
 /// <param name="Node"></param>
 /// <returns></returns>
 public BinaryNodeEncoder GetEncoder(LNode Node)
 {
     if (Node.HasAttrs)
     {
         return(BinaryNodeEncoder.AttributeEncoder);
     }
     else if (Node.IsCall)
     {
         if (Node.Target.IsId && !Node.Target.HasAttrs)
         {
             return(BinaryNodeEncoder.CallIdEncoder);
         }
         else
         {
             return(BinaryNodeEncoder.CallEncoder);
         }
     }
     else if (Node.IsId)
     {
         return(BinaryNodeEncoder.IdEncoder);
     }
     else
     {
         object nodeVal = Node.Value;
         if (nodeVal == null)
         {
             return(BinaryNodeEncoder.NullEncoder);
         }
         else
         {
             BinaryNodeEncoder result;
             if (LiteralEncoders.TryGetValue(nodeVal.GetType(), out result))
             {
                 return(result);
             }
             else
             {
                 throw new NotSupportedException("Node '" + Node.Print() + "' could not be encoded by any of the writer's known encoders.");
             }
         }
     }
 }
コード例 #2
0
ファイル: Program.cs プロジェクト: grimmyfunz/BinaryTree
        public void Print(int level = 0)
        {
            string text = "--";

            for (int i = 0; i < level; i++)
            {
                text += "--";
            }

            text += " " + num;

            Console.WriteLine(text);

            level++;

            if (LNode != null)
            {
                LNode.Print(level);
            }
            if (RNode != null)
            {
                RNode.Print(level);
            }
        }
コード例 #3
0
 Symbol NamespaceToSymbol(LNode node)
 {
     return(GSymbol.Get(node.Print(NodeStyle.Expression)));            // quick & dirty
 }
コード例 #4
0
 Symbol NamespaceToSymbol(LNode node)
 {
     // quick & dirty, probably not cheap
     return(GSymbol.Get(node.Print(NodeStyle.Expression)));
 }