0 évaluation0% ont trouvé ce document utile (0 vote)
62 vues14 pages
O documento introduz os conceitos básicos de compiladores, incluindo as etapas de análise léxica, sintática e semântica realizadas pelo compilador no processo de tradução de um programa fonte para um programa equivalente em outra linguagem. Também descreve as etapas de compilação e linkagem necessárias para gerar um arquivo executável a partir do código objeto produzido pelo compilador.
O documento introduz os conceitos básicos de compiladores, incluindo as etapas de análise léxica, sintática e semântica realizadas pelo compilador no processo de tradução de um programa fonte para um programa equivalente em outra linguagem. Também descreve as etapas de compilação e linkagem necessárias para gerar um arquivo executável a partir do código objeto produzido pelo compilador.
Droits d'auteur :
Attribution Non-Commercial (BY-NC)
Formats disponibles
Téléchargez comme PDF, TXT ou lisez en ligne sur Scribd
O documento introduz os conceitos básicos de compiladores, incluindo as etapas de análise léxica, sintática e semântica realizadas pelo compilador no processo de tradução de um programa fonte para um programa equivalente em outra linguagem. Também descreve as etapas de compilação e linkagem necessárias para gerar um arquivo executável a partir do código objeto produzido pelo compilador.
Droits d'auteur :
Attribution Non-Commercial (BY-NC)
Formats disponibles
Téléchargez comme PDF, TXT ou lisez en ligne sur Scribd
programa escrito numa linguagem – a linguagem fonte – e o traduz num programa equivalente numa outra linguagem – a linguagem alvo. Durante o processo de tradução, o compilador relata ao usuário a presença de erros no programa fonte; Análise sobre o programa fonte
esquadrinhamento (scanning); Remove do código fonte comentários e espaços em branco; Relaciona as mensagens de erro do compilador com o programa fonte. Ex: Informa o número da linha em que um erro ocorreu; Detecta os Tokens (reconhece identificadores, palavras reservadas, valores literais, etc); Ex: int a, b, c = 0; Análise Sintática
Também pode ser chamada de análise
gramatical; Tem como principal função traduzir os Tokens e descobrir a relação de uns com os outros; Agrupa os tokens em frases gramaticais; As frases gramatical são representadas por uma árvore gramatical; Análise sintática II
Árvore gramatical para a expressão:
montante := deposito_inicial + taxa_de_juros * 60 Análise sintática III
A expressão: printf variavel_com_texto;
Esta expressão passaria pela análise léxica,
pois printf e identificador existem. A análise sintática reportaria um erro, pois há a necessidade de um abre parenteses logo após printf; Análise Semântica
Captura as informações de tipos para a fase
subseqüente da geração de código. Utiliza a estrutura hierárquica determinada pela fase de análise sintática; Checa se determinado operador recebe os operandos que são permitidos pela especificação da linguagem; Estrutura condicional switch em C; Etapas de uma compilação
O compilador analisa o código-fonte e caso não
encontre erros, transforma o código-fonte em linguagem de máquina, gerando um arquivo intermediário chamado de arquivo objeto .o ou .obj; Este arquivo objeto tem o programa em linguagem de máquina, porém ele não pode ser executado; Para transformar o arquivo objeto em executável, é necessário a utilização de um Linkeditor. O linkeditor combina um ou mais arquivos compilador com bibliotecas específicas. A linkedição obedece a padrões que no caso do windows 32 bits é o formato de arquivos Portable Executable. Portable Executable
O formato PE é basicamente uma estrutura
de dados que encapsula a informação necessária para que o carregador do sistema Windows possa manipular o código executável que está empacotado. Isso inclui biblioteca dinâmica de referências para linking e exportação e importação de API; Portable Executable Header Compilado X Interpretado
Alguns compiladores geram códigos
intermediários que não são executados diretamente; Um exemplo é o compilador Java, que gera um código intermediário chamado de bytecode. Esse código intermediário é interpretado pela máquina virtual Java e então é executado. Referências Bibliográficas
AHO, Alfred V.; SETHI, Ravi; ULLMAN,
Jeffrey D. Compiladores – Princípios, Técnicas e Ferramentas. LTC Editora: Rio de Janeiro, 1995;