Beispiel #1
0
def do_loop(condition, loop_fn):
    # store initial condition to stack
    pushint(condition if isinstance(condition,regint) else regint(condition))
    def wrapped_loop():
        # save condition to stack
        new_cond = regint.pop()
        # run the loop
        condition = loop_fn(new_cond)
        pushint(condition)
        return condition
    do_while(wrapped_loop)
    regint.pop()
Beispiel #2
0
def while_loop(loop_body, condition, arg):
    if not callable(condition):
        raise CompilerError('Condition must be callable')
    # store arg in stack
    pre_condition = condition(arg)
    if not isinstance(pre_condition, (bool,int)) or pre_condition:
        pushint(arg if isinstance(arg,regint) else regint(arg))
        def loop_fn():
            result = loop_body(regint.pop())
            pushint(result)
            return condition(result)
        if_statement(pre_condition, lambda: do_while(loop_fn))
        regint.pop()
Beispiel #3
0
def do_loop(condition, loop_fn):
    # store initial condition to stack
    pushint(condition if isinstance(condition, regint) else regint(condition))

    def wrapped_loop():
        # save condition to stack
        new_cond = regint.pop()
        # run the loop
        condition = loop_fn(new_cond)
        pushint(condition)
        return condition

    do_while(wrapped_loop)
    regint.pop()
Beispiel #4
0
def while_loop(loop_body, condition, arg):
    if not callable(condition):
        raise CompilerError('Condition must be callable')
    # store arg in stack
    pre_condition = condition(arg)
    if not isinstance(pre_condition, (bool, int)) or pre_condition:
        pushint(arg if isinstance(arg, regint) else regint(arg))

        def loop_fn():
            result = loop_body(regint.pop())
            pushint(result)
            return condition(result)

        if_statement(pre_condition, lambda: do_while(loop_fn))
        regint.pop()
Beispiel #5
0
 def wrapped_loop():
     # save condition to stack
     new_cond = regint.pop()
     # run the loop
     condition = loop_fn(new_cond)
     pushint(condition)
     return condition
Beispiel #6
0
 def wrapped_loop():
     # save condition to stack
     new_cond = regint.pop()
     # run the loop
     condition = loop_fn(new_cond)
     pushint(condition)
     return condition
Beispiel #7
0
 def loop_fn():
     result = loop_body(regint.pop())
     pushint(result)
     return condition(result)
Beispiel #8
0
 def loop_fn():
     result = loop_body(regint.pop())
     pushint(result)
     return condition(result)