/// <summary>
 /// 从最近的作用域寻找变量并赋值;若变量不存在则在栈顶作用域声明之
 /// </summary>
 /// <param name="varName"></param>
 /// <param name="value"></param>
 internal void SetValue(string varName, RightValue value)
 {
     Scope scope = searchVar(varName);
     if (scope != null)
     {
         scope.SetValue(varName, value);
     }
     else
     {
         scope = scopeStack.First.Value;
         scope.SetValue(varName, value);
     }
 }
 private DataType readAlgoOperand(RightValue v1, RightValue v2, Location loc)
 {
     if (v1 is BoolConst || v2 is BoolConst
         || v1 is StringConst || v2 is StringConst)
     {
         throw new RuntimeException(new Error(ErrorType.OprandTypeError, loc));
     }
     else if (v1 is FloatConst || v2 is FloatConst)
     {
         return DataType.Float;
     }
     else if (v1 is IntConst && v2 is IntConst)
     {
         return DataType.Int;
     }
     else
     {
         throw new RuntimeException(new Error(ErrorType.OprandTypeError, loc));
     }
 }