예제 #1
0
 private void PrintLiteral(LiteralNode p_node)
 {
     Console.Write("[LITERAL ");
     if (p_node.Value == null)
     {
         Console.Write("\"" + ("Null") + "\"");
     }
     else if (p_node.ValueType == typeof(string))
     {
         Console.Write("\"" + (p_node.Value) + "\"");
     }
     else
     {
         Console.Write(p_node.Value.ToString());
     }
     Console.Write("]");
 }
예제 #2
0
 private void ChunkLiteral(LiteralNode p_node)
 {
     if (p_node.ValueType == typeof(bool))
     {
         if ((bool)p_node.Value == true)
         {
             Add(OpCode.LOAD_TRUE, p_node.PositionData);
         }
         else if ((bool)p_node.Value == false)
         {
             Add(OpCode.LOAD_FALSE, p_node.PositionData);
         }
     }
     else if (p_node.ValueType == typeof(Float))
     {
         int address = AddData((Float)p_node.Value);
         Add(OpCode.LOAD_DATA, (Operand)address, p_node.PositionData);
     }
     else if (p_node.ValueType == typeof(Integer))
     {
         int address = AddData((Integer)p_node.Value);
         Add(OpCode.LOAD_DATA, (Operand)address, p_node.PositionData);
     }
     else if (p_node.ValueType == typeof(string))
     {
         int address = AddData((string)p_node.Value);
         Add(OpCode.LOAD_DATA, (Operand)address, p_node.PositionData);
     }
     else if (p_node.ValueType == typeof(char))
     {
         int address = AddData((char)p_node.Value);
         Add(OpCode.LOAD_DATA, (Operand)address, p_node.PositionData);
     }
     else if ((string)p_node.Value == null)
     {
         Add(OpCode.LOAD_NIL, p_node.PositionData);
     }
 }