Baixe o app para aproveitar ainda mais
Prévia do material em texto
COMPILADORES Prof: Adriano Maranhão APRESENTAÇÃO Graduação em Ciências da computação UVA Pós-graduação em Engenharia de Software INTA Técnico em tecnologia da Informação UFC Professor Colaborador UVA, UFC virtual e Ieducare POR QUE ESTUDAR COMPILADORES ? Peça-chave na implementação de sistemas : SO, arquitetura Tecnologia de Compilação é largamente utilizada: Shells, JVM, tradutores automáticos, arq. Configuração, descrições de alto nível (UML), Consultas SQL Teoria densa, mas aplicada Sintetiza linguagens formais Interface com diversas disciplinas: SO, arquitetura, ling. Formais, T. Computação, programação (depuração, profiling) POR QUE ESTUDAR COMPILADORES ? Entender melhor os erros de desenvolvimento em linguagens de programação Aspectos de programação: semântica, otimização Experiência prática no desenvolvimento de uma LP Criatividade, inovação, novas abstrações de SW DEFINIÇÃO Compilador é um programa de computador (ou um grupo de programas) que, a partir de um código fonte escrito em uma linguagem compilada, cria um programa semanticamente equivalente, porém escrito em outra linguagem, código objeto. Fonte: Wikipédia ESTRUTURA DE UM COMPILADOR ANALISADOR LÉXICO Identifica se os símbolos que aparecem no código fonte são válidos. Ex: public voids setNome(){} ANALISADOR SINTÁTICO verifica se a seqüência em que os símbolos aparecem são válidas. Ex: void public setNome(){} ANALISADOR SEMÂNTICO verifica: variáveis não declaradas ou re- declaração de variáveis; chamadas de funções ou métodos inexistentes ou com parâmetros incorretos; tipos de operando incompatíveis com operadores. Ex: public voi setNome(){ return nome} GERADOR DE CÓDIGOS Gera o código fonte em linguagem de máquina. Ex: Nome=this.nome MOV NOX, 01001 COMPILAÇÃO DE UM PROGRAMA JAVA o código fonte (extensão .java) é compilado e armazenado em um arquivo de extensão .class JVMs devem ser programas feitos e compilados para máquinas específicas, de forma que serão as JVMs as responsáveis pela tradução de bytecodes Java para as linguagens nativas das máquinas.
Compartilhar