Я пытаюсь создать небольшой компилятор C в OCaml, и в моем файле интерпретатора я создал функцию для оценки операторов (Loops, Conditionals и т. Д. c). Я не могу понять, как реализовать для l oop в интерпретаторе.
это то, что у меня есть до сих пор:
| For (id, expr_s, expr_e, t1) ->
(match (eval_expr env expr_s, eval_expr env expr_e) with
| (Int_Val t2, Int_Val t3) ->
let a = (eval_stmt env (Assign (id, Int t2))) in
let b = eval_expr env (LessEqual (Add (Int t2, Int 1), Int t3)) in
(eval_stmt env (While (b, t1)))
| (_,_) -> raise(TypeError ""))
также,
l oop будет иметь следующий формат: для (i от 1 до 10) или аналогичный
Вот пример:
int main(){int a; int b; b=10;
for(a from 1 to 50){
a = a + 1;
b = b + 1;
}
}