From 88361f05796b225f898baa8f3f3899a67dcd7d30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luc=C3=A0s?= Date: Sat, 18 Mar 2023 22:56:04 +0100 Subject: [PATCH] Update typing.ml Add find_var that search var in environment --- src/typing.ml | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/src/typing.ml b/src/typing.ml index af1e312..a47fb87 100644 --- a/src/typing.ml +++ b/src/typing.ml @@ -3,11 +3,36 @@ open Lang (* Environments *) +type environment = { + localvars: (vname * tp) list; + funbind: fundecl list +} -type environment = - {localvars: (vname * tp) list; - funbind: fundecl list - } +let find_var (var: vname) (env: environment) = + let rec aux local_vars = + match local_vars with + | [] -> failwith "Variable inconnue" + | tete::reste -> + let (name, _) = tete in + if name = var + then tete + else aux reste + in aux (env.localvars) +;; +(* let rec tp_expr (expression: expr) (env: environment) = + match expression with + | Const(const) -> + match const with + | BoolV(_) -> BoolT + | FloatV(_) -> FloatT + | IntV(_) -> IntT + | LitV(_) -> LitT + | StringV(_) -> StringT + | VarE(var) -> tp_expr (find_var var env) env + | BinOp(op, expr1, expr2) -> + | CondE(expr1, expr2, expr3) -> + | CallE(functionName, exprList) -> *) +;; let tp_prog (Prog (fundecls, fundefns)) = true \ No newline at end of file