Tutorial de design do compilador
Um compilador traduz o código escrito em um idioma para outro idioma sem alterar o significado do programa. Também se espera que um compilador torne o código de destino eficiente e otimizado em termos de tempo e espaço.
Os princípios de design do compilador fornecem uma visão detalhada do processo de tradução e otimização. O design do compilador cobre o mecanismo básico de tradução e detecção e recuperação de erros. Inclui análise lexical, de sintaxe e semântica como front-end e geração e otimização de código como back-end.
Por que aprender design de compiladores?
Os computadores são uma mistura equilibrada de software e hardware. O hardware é apenas um dispositivo mecânico e suas funções são controladas por um software compatível. O hardware entende as instruções na forma de cobrança eletrônica, que é a contrapartida da linguagem binária na programação de software. A linguagem binária tem apenas dois alfabetos, 0 e 1. Para instruir, os códigos de hardware devem ser escritos em formato binário, que é simplesmente uma série de 1s e 0s. Seria uma tarefa difícil e enfadonha para os programadores de computador escrever esses códigos, razão pela qual temos compiladores para escrever esses códigos.
Sistema de processamento de linguagem
Aprendemos que qualquer sistema de computador é feito de hardware e software. O hardware entende uma linguagem que os humanos não conseguem entender. Então, escrevemos programas em linguagem de alto nível, o que é mais fácil de entender e lembrar. Esses programas são então alimentados em uma série de ferramentas e componentes do sistema operacional para obter o código desejado que pode ser usado pela máquina. Isso é conhecido como Sistema de Processamento de Linguagem.
Público
Este tutorial foi criado para alunos interessados em aprender os princípios básicos dos compiladores. Os leitores entusiasmados que desejam saber mais sobre compiladores e aqueles que desejam projetar um compilador podem começar por aqui.
Pré-requisitos
Este tutorial não requer conhecimento prévio de design de compilador, mas requer conhecimento básico de pelo menos uma linguagem de programação, como C, Java etc. Seria uma vantagem adicional se você já teve contato anterior com Programação em Assembly.