Upload
phungque
View
218
Download
0
Embed Size (px)
Citation preview
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
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}
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.