12
COMPILADORES Prof: Adriano Maranhão

Prof: Adriano Maranhão COMPILADORES · Peça-chave na implementação de sistemas : SO, ... POR QUE ESTUDAR COMPILADORES ? Entender melhor os erros de desenvolvimento em linguagens

Embed Size (px)

Citation preview

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.