前言
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语法来书写,两者是一样的
结束语
所谓一通百通,如是也,都是控制阀,到最后都是执行语句而已。