【七】循环语句for,while

前言

for,while没有大的区别,本质来说是一样的。

正文

在SKL中,我只实现了for语法
for语句的实现

statement_control_t *execute_for_statement(for_statement_t *fors, hash_t *variable_table) {
    execute_expression(fors->before, variable_table);
    zvalue_t *condition_res = execute_expression(fors->condition, variable_table);
    statement_control_t *control_exe;
    int is_break, is_continue;
    while (zvalue_convert_bool(condition_res)) {
        is_break = is_continue = 0;
        condition_res = execute_expression(fors->condition, variable_table);
        control_exe = execute_statement(fors->statement_list, variable_table);
        execute_expression(fors->after, variable_table);
        switch (control_exe->type) {
            case statement_control_type_return:
                return control_exe;
                break;
            case statement_control_type_break:
                is_break = 1;
                break;
            case statement_control_type_continue:
                is_continue = 1;
                break;
            case statement_control_type_default:
            default:
                break;
        }
        memory_free(control_exe->result);
        memory_free(control_exe);
        if (is_break) {
            break;
        }
        if (is_continue) {
            continue;
        }
    }
    return create_default_statement_control();
}

while的实现也是类似的,for语法可以用while语法来书写,两者是一样的

结束语

所谓一通百通,如是也,都是控制阀,到最后都是执行语句而已。

你可能感兴趣的:(【七】循环语句for,while)