A Survey on Large Language Models for Code Generation