Kyukyk

Disponível somente no TrabalhosFeitos
  • Páginas : 18 (4339 palavras )
  • Download(s) : 0
  • Publicado : 26 de fevereiro de 2013
Ler documento completo
Amostra do texto
Compiladores
Capítulo 1: Introdução
1. A estrutura global do compilador
Este capítulo pretende apresentar a estrutura geral de um compilador, sem
entretanto entrar em detalhes que só podem ser apresentados após uma discussão mais
longa, após a apresentação de importantes conceitos e resultados adicionais. Vamos
apenas descrever aqui as partes componentes principais de um compilador"típico", e o
seu funcionamento simplificado.
O nome compilador, criado nos anos 50, faz referência ao processo de
composição de um programa pela reunião de várias rotinas de biblioteca; o processo de
tradução (de uma linguagem fonte para uma linguagem objeto), considerado hoje a
função central de um compilador, era então conhecido como programação automática.
Nesse processo de tradução, há duastarefas básicas a serem executadas por um
compilador:
• análise, em que o texto de entrada (na linguagem fonte) é examinado,

verificado e compreendido
• síntese, ou geração de código, em que o texto de saída (na linguagem objeto)

é gerado, de forma a corresponder ao texto de entrada.
Normalmente, pensamos nessas tarefas como fases do processo de compilação,
mas não é absolutamentenecessário que a análise de todo o programa seja completada
antes que o primeiro trecho de código objeto seja gerado: essas duas fases podem ser
intercaladas. Como exemplos, um compilador pode analisar cada comando do programa
de entrada, e gerar imediatamente o código de saída correspondente a esse comando;
alternativamente, o compilador pode esperar o fim da análise de cada unidade de
programa(rotina, procedimento, função, ...) para então gerar o código correspondente à
unidade. Para melhor aproveitamento de memória durante sua execução, compiladores
mais antigos costumavam ser divididos em vários passos, executados em seqüência,
freqüentemente de forma aparente para o usuário. Cada passo executa parte do processo
de tradução, transformando o código fonte em alguma formaintermediária adequada,
cada vez mais próxima do código objeto final.
Naturalmente, a tarefa de análise deve ter como resultado uma representação do
programa fonte que contenha informação suficiente para a geração do programa objeto
correspondente. Normalmente, essa representação (conhecida como representação
intermediária) é complementada por tabelas que contêm informação adicional sobre o
programafonte. Em alguns casos, a representação intermediária pode tomar a forma de
um programa em uma linguagem intermediária, a partir da qual seja fácil a tradução
para a linguagem objeto desejada.
Independentemente da forma que possa tomar a representação intermediária, ela
deve conter toda a informação necessária para a geração do código objeto. Uma das
características da representaçãointermediária é que as estruturas de dados empregadas
devem garantir acesso eficiente a todas as informações, podendo, para isso, ser
conveniente algum grau de redundância. Normalmente esse acesso é consideravelmente
J.L.Rangel - Compiladores - 1-1

mais rápido que o acesso ao programa fonte em formato de texto, ou a código
executável em alguma máquina real.

Uma das formas mais comuns de tabelautilizada nessa representação
intermediária é a tabela de símbolos, em que se guarda para cada identificador (símbolo)
usado no programa as informações correspondentes, tais como natureza (variável,
constante, procedimento, ...), tipo, endereço, espaço ocupado, etc.
Um dos modelos possíveis para a construção de compiladores faz a separação
total entre o front-end, encarregado da fase deanálise, e o back-end, encarregado da
geração de código, de forma que
• front-end e back-end se comunicam apenas através da representação

intermediária;
• o front-end depende exclusivamente da linguagem fonte (e, portanto,

independe da linguagem ou da máquina objeto);
• o back-end depende exclusivamente da linguagem objeto (e, portanto,

independe da linguagem fonte).
Essa idéia visa...
tracking img