compiler construction principles and practice exercise solutions