Programação de compiladores: Quais são os ingredientes mais fundamentais?

stou interessado em escrever um compilador muito minimalist

Quero escrever um pequeno pedaço de software (em C / C ++) que atenda aos seguintes critérios:

saída no formato ELF (* nix)input é um único arquivo de textoramática e sintaxe tipono linkerno pré-processadormuito pequeno (máx. 1-2 KLOC)

Características da linguagem

tipos de dados nativos: char, int e floatsarrays (para todos os tipos de dados nativos) variáveisstruturas de controle (if-elsfunçõe loops (seria bom)lgebra simples (div, add, sub, mul, expressões booleanas, deslocamento de bits, etcinline asm (para chamadas do sistema)

Alguém pode me dizer como começar? Não sei em que partes um compilador consiste (pelo menos não no sentido em que eu poderia começar da prateleira) e como programá-las. Obrigado por suas idéias

questionAnswers(8)

yourAnswerToTheQuestion