Type Checking In Compilers