- Anlise Lxica - Anlise Sinttica - Anlise Semntica - Gerao de Cdigo Intermedirio - Otimizao de Cdigo Intermedirio - Gerao de Cdigo Objeto - Otimizao de Cdigo Objeto Viso Geral Anlise lxica Programa fonte Programa destino Anlise sinttica Anlise semntica Gerador de cdigo intermed. Otimizador de cdigo Gerador de cdigo Tratamento de erros Gerenciador da tabela de smbolos Compilao: Anlise e Sntese Anlise: quebra o cdigo fonte em suas partes constituintes e cria uma representao intermediria do programa. Sntese: Constroi o programa-destino a partir da representao intermediria. Anlise Anlise lxica l a seqencia de caracteres e a organiza em tokens seqencias de caracteres com algum significado Anlise sinttica agrupa os tokens em uma estrutura hierrquica com algum significado Anlise semntica verifica se os componentes de um programa se encaixam de forma a ter um significado adequado. Tabela de Smbolos Estrutura de dados usada para guardar tokens e informaes sobre eles: alocao de memria, tipo do identificador, escopo (onde vlido no programa) (se procedimento ou funo) nmero e tipo dos argumentos, forma de passagem dos parmetros e tipo do resultado. Passos Um passo uma travessia do programa fonte, ou de uma representao interna dele. Um compilador de um passo atravessa o programa uma nica vez. Um compilador de mltiplos passos faz vrias travessias O projeto de um compilador diretamente relacionado ao nmero de passos Compilao em mltiplos passos Mdulo principal (driver) chama cada um dos passos, responsveis pela anlise sinttica, anlise contextual e gerao de cdigo. Driver do Compilador Analisador Sinttico Analisador Contextual Gerador de Cdigo Compilao em passo nico Analisador sinttico vai realizando/chamando as atividades de anlise semntica e gerao de cdigo, medida que l e reconhece o programa Anlise Lxica Primeira fase de um compilador Objetivo: ler o programa fonte, caracter por caracter, e produzir como sada uma seqncia de smbolos lxicos (tokens) que o parser vai usar para anlise sinttica. Pode ser implementada usando o formalismo: autmato finito Tambm denominado de scanner, porque varre o arquivo de entrada eliminando comentrios e caracteres indesejveis ao agrupar caracteres em grupos com um papel bem definido Anlise Lxica A validade dos tokens verificada Os tokens so classificados Anlise Sinttica Receber tokens do analisador lxico e verificar se a posio dos mesmos vlida, de acordo com a gramtica da LP. A LP normalmente especificada por uma gramtica livre de contexto. Relatar e recuperar erros de sintaxe de forma clara e precisa, prosseguindo a anlise sinttica at o final, se possvel. Tipos de analisadores sintticos: universais, top- down e bottom-up Anlise Semntica Tem o objetivo de verificar se o programa est de acordo com as restries contextuais da linguagem fonte. Geralmente verifica-se: - regras de escopo; - regras de tipos; Gerao de Cdigo Fase final do compilador Transforma o cdigo da representao intermediria no cdigo final Independente de otimizaes Cdigo deve estar correto e ser de alta qualidade, fazendo uso eficiente dos recursos da mquina- destino. Gerao de Cdigo Intermedirio Vantagens do uso de uma notao intermediria: - possibilita otimizao do cdigo intermedirio - simplifica a implementao do compilador - pode-se traduzir o cdigo intermedirio para vrias mquinas Otimizao de cdigo Realiza transformaes no cdigo visando melhorar sua performance em aspectos de tempo de execuo e tamanho do cdigo.