Ejemplo n.º 1
0
 def evaluate(self, env: Environment):
     val_iter: RObj = self.iter_item.evaluate(env)
     items: List[RObj] = val_iter.get_items()
     if self.argument.get_type().name != 'symbol':
         raise Exception('unexpected for loop argument type - {}'.format(
             self.argument.get_type().name))
     for item in items:
         self.argument.set_value(item, env)
         try:
             self.body.evaluate(env)
         except BreakLoopCommand:
             return atomics.NULLObj()
         except NextLoopCommand:
             continue
     return atomics.NULLObj()
Ejemplo n.º 2
0
 def evaluate(self, env: Environment):
     while True:
         try:
             self.body.evaluate(env)
         except BreakLoopCommand:
             return atomics.NULLObj()
         except NextLoopCommand:
             continue
Ejemplo n.º 3
0
    def evaluate(self, env: Environment):
        while True:
            val_arg: RObj = self.argument.evaluate()
            if val_arg.get_type().name not in ['double', 'numeric', 'logical']:
                raise errors.ArgNotInterpretableAsLogical()
            else:
                if isinstance(val_arg, atomics.VectorObj):
                    if len(val_arg.items) == 0:
                        raise RError(self, 'argument is of length zero')

                r = as_boolean(val_arg)
                if r:
                    try:
                        self.body.evaluate(env)
                    except BreakLoopCommand:
                        return atomics.NULLObj()
                    except NextLoopCommand:
                        continue
                else:
                    return atomics.NULLObj()
Ejemplo n.º 4
0
    def evaluate(self, env: Environment):
        val_arg: RObj = self.argument.evaluate(env)
        if val_arg.get_type().name not in ['double', 'numeric', 'logical']:
            raise errors.ArgNotInterpretableAsLogical()
        else:
            if isinstance(val_arg, atomics.VectorObj):
                if len(val_arg.items) == 0:
                    raise RError.create_simple(self,
                                               'argument is of length zero')

            r = as_boolean(val_arg)
            if r:
                ret = execute_item(self.body, env)
                return ret
            else:
                if self.alterbody is not None:
                    ret = execute_item(self.alterbody, env)
                    return ret
                else:
                    return atomics.NULLObj()
Ejemplo n.º 5
0
 def evaluate(self):
     return atomics.NULLObj()
Ejemplo n.º 6
0
from R.Environment import Environment
import R.RObj
import R.BuiltIn as builtin
from R.Function import FunctionObj, CallObj, Atomic, Arg
import R.AtomicObjs as objs
import R.Types as types
import R.LanguageObjs as language

this_env: Environment = Environment(builtin.built_in_env)
this_env.set_global(this_env)
print('123')

items1 = [
    language.AssignObj.create(objs.SymbolObj('h'),
                              Atomic.create(1, types.IntegerType())),
    Atomic.create(2, types.IntegerType()),
    Atomic.create(5, types.IntegerType())
]

items2 = [
    Atomic.create(False, types.LogicalType()),
    language.AssignObj.create(objs.SymbolObj('f'),
                              Atomic.create(1, types.IntegerType())),
    Atomic.create(5, types.IntegerType()),
    language.AssignObj.create(objs.SymbolObj('h'),
                              Atomic.create(1, types.IntegerType()))
]

symbol_c = objs.SymbolObj('c')

c_call1 = CallObj(symbol_c, items1)
Ejemplo n.º 7
0
 def evaluate(self, env: Environment):
     last = atomics.NULLObj()
     for item in self.items:
         last = execute_item(item, env)
     return last
Ejemplo n.º 8
0
 def evaluate(self, env: Environment):
     last = atomics.NULLObj()
     for item in self.items:
         last = item.evaluate(env)
     return last