A Survey On Large Language Models For Code Generation