todos
This commit is contained in:
parent
814c04c1d0
commit
34c2a6c8e3
1 changed files with 10 additions and 1 deletions
|
@ -122,7 +122,8 @@ let free_variables =
|
||||||
in
|
in
|
||||||
(* Une variable libre est une variable qui peut être substitué *)
|
(* Une variable libre est une variable qui peut être substitué *)
|
||||||
|
|
||||||
(* TODO : rajouter des explications pour While Define et Fun *)
|
(* 1.2
|
||||||
|
TODO : rajouter des explications pour While Define et Fun *)
|
||||||
let rec fvs = function
|
let rec fvs = function
|
||||||
| S.Literal _ -> M.empty
|
| S.Literal _ -> M.empty
|
||||||
| S.Variable x -> M.singleton x
|
| S.Variable x -> M.singleton x
|
||||||
|
@ -205,6 +206,8 @@ let translate (p : S.t) env =
|
||||||
let fs, defs = define_recursive_functions fdefs in
|
let fs, defs = define_recursive_functions fdefs in
|
||||||
fs @ List.map (fun (x, e) -> T.DefineValue (x, e)) defs
|
fs @ List.map (fun (x, e) -> T.DefineValue (x, e)) defs
|
||||||
and define_recursive_functions rdefs =
|
and define_recursive_functions rdefs =
|
||||||
|
(* 1.5
|
||||||
|
TODO *)
|
||||||
failwith "Students! This is your job (define_recursive_functions)!"
|
failwith "Students! This is your job (define_recursive_functions)!"
|
||||||
and expression env = function
|
and expression env = function
|
||||||
| S.Literal l -> [], T.Literal (literal l)
|
| S.Literal l -> [], T.Literal (literal l)
|
||||||
|
@ -220,6 +223,7 @@ let translate (p : S.t) env =
|
||||||
in
|
in
|
||||||
[], xc
|
[], xc
|
||||||
| S.Define (vdef, a) ->
|
| S.Define (vdef, a) ->
|
||||||
|
(* 1.3 (2) *)
|
||||||
let afs, a = expression env a in
|
let afs, a = expression env a in
|
||||||
(match vdef with
|
(match vdef with
|
||||||
| S.SimpleValue (id, b) ->
|
| S.SimpleValue (id, b) ->
|
||||||
|
@ -227,8 +231,11 @@ let translate (p : S.t) env =
|
||||||
afs @ bfs, T.Define (identifier id, a, b)
|
afs @ bfs, T.Define (identifier id, a, b)
|
||||||
| S.RecFunctions _ -> failwith "Students! This is your job (S.RecFunctions)!")
|
| S.RecFunctions _ -> failwith "Students! This is your job (S.RecFunctions)!")
|
||||||
| S.Apply (a, bs) ->
|
| S.Apply (a, bs) ->
|
||||||
|
(* 1.3 (4) *)
|
||||||
let afs, a = expression env a in
|
let afs, a = expression env a in
|
||||||
let bsfs, bs = expressions env bs in
|
let bsfs, bs = expressions env bs in
|
||||||
|
(* 1.4
|
||||||
|
TODO *)
|
||||||
afs @ bsfs, T.UnknownFunCall (a, bs)
|
afs @ bsfs, T.UnknownFunCall (a, bs)
|
||||||
| S.IfThenElse (a, b, c) ->
|
| S.IfThenElse (a, b, c) ->
|
||||||
let afs, a = expression env a in
|
let afs, a = expression env a in
|
||||||
|
@ -236,6 +243,8 @@ let translate (p : S.t) env =
|
||||||
let cfs, c = expression env c in
|
let cfs, c = expression env c in
|
||||||
afs @ bfs @ cfs, T.IfThenElse (a, b, c)
|
afs @ bfs @ cfs, T.IfThenElse (a, b, c)
|
||||||
| S.Fun (x, e) as f ->
|
| S.Fun (x, e) as f ->
|
||||||
|
(* 1.3 (3)
|
||||||
|
TODO: J'ai une boucle infini ici je comprends rien *)
|
||||||
let fname = make_fresh_function_identifier () in
|
let fname = make_fresh_function_identifier () in
|
||||||
let x = List.map identifier x in
|
let x = List.map identifier x in
|
||||||
let efs, e = expression env e in
|
let efs, e = expression env e in
|
||||||
|
|
Reference in a new issue