add type check and type cast
change codegen: locals(llvm::value* variable)   constvals(const_value) typdeefs(typedef with name ) vartypes(variable's type)