Как мне написать для l oop формы для (a от 10 до 31) в C интерпретаторе в OCaml? - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь создать небольшой компилятор 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;
  }
}
...