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