예제 #1
0
 public Rumor(Dictionary <string, List <Node> > nodes, RumorScope scope = null)
 {
     // Make a copy so our version does not change
     Nodes    = new Dictionary <string, List <Node> >(nodes);
     Stack    = new Stack <StackFrame>();
     State    = new RumorState();
     Scope    = scope ?? new RumorScope();
     Bindings = new RumorBindings();
 }
예제 #2
0
        public override Value Evaluate(RumorScope scope)
        {
            var value = scope.Get(name);

            if (value == null)
            {
                throw new UndefinedVariableException(
                          "Variable \"" + name + "\" has not been defined yet!"
                          );
            }

            return(value);
        }
예제 #3
0
        public override Value Evaluate(RumorScope scope)
        {
            var value = scope.Get(name);

            if (value == null)
            {
                throw new UndefinedVariableException(
                          "Variable \"" + name + "\" has not been defined yet!"
                          );
            }
            if (!(value is NumberValue))
            {
                throw new VariableTypeException(
                          "Variable is not a number!"
                          );
            }

            return((NumberValue)value);
        }
예제 #4
0
 public override Value Evaluate(RumorScope scope)
 {
     return(l.Evaluate(scope).AsBoolean() && r.Evaluate(scope).AsBoolean());
 }
 public override Value Evaluate(RumorScope scope)
 {
     return(l.Evaluate(scope).AsNumber() - r.Evaluate(scope).AsNumber());
 }
        public override Value Evaluate(RumorScope scope)
        {
            var result = value.Evaluate(scope).InternalValue;

            return(new StringValue(result.ToString()));
        }
 public override Value Evaluate(RumorScope scope)
 {
     return(new BooleanValue(
                l.Evaluate(scope).AsNumber() < r.Evaluate(scope).AsNumber()
                ));
 }
예제 #8
0
 public override Value Evaluate(RumorScope scope)
 {
     return(new BooleanValue(l.Evaluate(scope) == r.Evaluate(scope)));
 }
예제 #9
0
 public override Value Evaluate(RumorScope scope)
 {
     return(!expression.Evaluate(scope).AsBoolean());
 }
 public override Value Evaluate(RumorScope scope)
 {
     return(new StringValue(value.Evaluate(scope).ToString()));
 }
예제 #11
0
 public override Value Evaluate(RumorScope scope)
 {
     return(l.Evaluate(scope).AsString() + r.Evaluate(scope).AsString());
 }
예제 #12
0
 public override Value Evaluate(RumorScope _)
 {
     return(Value);
 }
예제 #13
0
 public abstract Value Evaluate(RumorScope scope);