【七】循环语句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语法来书写,两者是一样的

结束语

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容