示例#1
0
文件: NumberNode.cs 项目: tomoki/Umi
 public Node div(Node node)
 {
     Node n = node.eval();
     if(!(node is NumberNode)){
         throw new Exception("Right is not Number");
     }
     return new NumberNode(Value/(((NumberNode)n).Value));
 }
示例#2
0
文件: StringNode.cs 项目: tomoki/Umi
 public Node plus(Node node)
 {
     Node n = node.eval();
     if(!(node is StringNode)){
         throw new UmiException("Right is not String");
     }
     return new StringNode(Value+(((StringNode)n).Value));
 }
示例#3
0
文件: NumberNode.cs 项目: tomoki/Umi
 public Node greater(Node node)
 {
     Node n = node.eval();
     if(!(node is NumberNode)){
         throw new Exception("Right is not Number");
     }
     if(((NumberNode)n).Value < this.Value){
         return new TrueNode();
     }else{
         return new FalseNode();
     }
 }
示例#4
0
文件: SystemNode.cs 项目: tomoki/Umi
 public Node print(Node node)
 {
     if(node is ArgumentsNode){
         Node s = null;
         for(int i=0;i<((ArgumentsNode)node).Length;i++){
             s = send_message((((ArgumentsNode)node)[i]).eval(),null,"to_s");
             Console.WriteLine(((StringNode)s).Value);
         }
         return s;
     }else{
         Node s = send_message(node.eval(),null,"to_s");
         Console.WriteLine(((StringNode)s).Value);
         return s;
     }
     return null;
 }
示例#5
0
文件: SymbolNode.cs 项目: tomoki/Umi
 public Node assign(Node node)
 {
     Node n = node.eval();
     Block.Set(name,n);
     return n;
 }