PLANO DE ENSINO
Objetivo geral
Conhecer o processo de especificao e implementao de linguagens de programao, a partir do estudo dos conceitos, modelos, tcnicas e ferramentas que compem a Teoria das Linguagens Formais e a Teoria de Compiladores.
Objetivos especficos
Adquirir uma viso geral sobre o Processo de Compilao sob o ponto de vista de implementao. Adquirir noes bsicas sobre a Teoria das Linguagens Formais.
Saber especificar aspectos lxicos e sintticos de linguagens atravs de autmatos e gramticas. Conhecer critrios e caractersticas usados no projeto/avaliao de Linguagens de Programao. Conhecer as principais tcnicas e ferramentas de apoio usadas na construo de compiladores, sabendo us-las na especificao e implementao de linguagens de programao.
Obter Subsdios que permitam um melhor entendimento, utilizao e avaliao das Linguagens de Programao.
MOTIVAO
1
um programa que traduz um programa fonte escrito em uma linguagem qualquer (denominada linguagem fonte) para um programa objeto equivalente escrito em outra linguagem (denominada linguagem objeto)
Pf / Lf Tradutor Po / Lo
Compilador
um Tradutor em que a linguagem fonte uma linguagem de alto nvel e a linguagem objeto uma linguagem de baixo nvel (assembly ou mquina)
Po / La Pf / Lan Compilador Po / Lm
Interpretador
um programa que interpreta diretamente as instrues do programa fonte, gerando o resultado.
Pf / Lq Interpretador Resultados
Tradutor / Interpretador
Esquema hbrido para implementao de linguagens de programao
Pf / Lan
Tradutor
Po / Lint
Interpretador
Resultados
Montador
um Tradutor em que o programa fonte est escrito em linguagem assembly e o programa objeto resultante est em linguagem de mquina
Pf / La Montador Po / Lm
Pr-processador
um Tradutor em que tanto o programa fonte quanto o programa objeto esto escritos em linguagens de alto nvel
Pf/Lan1 Pr-Proc. Po/Lan2
Cross - Compiler
Compilador que gera cdigo para uma mquina diferente da utilizada na compilao.
Sntese
P. Objeto
Exemplos :
Dependendo da quantidade de vezes que o P.F. analisado at que o cdigo objeto seja gerado Diferentes composies (agrupamento de fases)
Referncias futuras
Vantagens X Desvantagens
Caractersticas das Aplicaes Importncia da Otimizao Tamanho / Experincia da Equipe Disponibilidade de Ferramentas de Apoio Prazo para desenvolvimento
*0 *1 *2 *3
Identificadores Palavras Reservadas Constantes (numricas e literais) Smbolos especiais (simples, duplos, ...)
Exemplo: Programa Fonte program exemplo; var A, B : integer; begin (* Inicio do programa *) read ( A ); B := A + 2.5; ... end.
Tokens Reconhecidos
program exemplo ; var A , ... end . 1 - PR 2 - ID 3 - SE 4 - PR 2 - ID 5 - SE ... 37 - PR 38 - SE
Exemplos:
B
:=
A * 2.5
<var>
<expresso>
Funes bsicas:
*9 Verificar se as construes utilizadas no P.F. esto semanticamente corretas *10 Detectar e diagnosticar erros semnticos
8
declarao
uso
de
formais e atuais
Tabela de Smbolos :
Definio - Estrutura onde so guardadas as
informaes (os atributos) essenciais identificador utilizado no programa fonte. sobre cada
nome endereo relativo (nvel e deslocamento) categoria varivel *20 simples - tipo
9
*21 array - dimenses, tipo dos elementos *22 record - campos (quant. e apontadores) *23 ... constante *24 tipo e valor procedimentos *25 procedure ou funo *26 nmero de parmetros *27 ponteiro para parmetros *28 se funo, tipo do resultado parmetro *29 tipo *30 forma de passagem (valor , referncia) campo de record *31 tipo, deslocamento dentro do Record
10
Exemplo
*34 Consiste na gerao de um conjunto de instrues (equivalentes ao programa fonte de entrada) para uma mquina hipottica (virtual) E := ( A + B ) * ( C + D ) Mquina de acumulador
carregue A some B armazene T1 carregue C some D armazene T2 carregue T1 multiplique T2 armazene E
*40 Reduo em fora *41 Transformao/avaliao parcial *42 Alocao tima de registradores
Comercial ou experimental Filosofia de Programao Imperativa (Estruturada/Objetos) Funcional, Lgica Mista (Multi - Paradigma) Potencialidade(s) Bsica(s) Sistema de Tipos Concorrncia (Multi-Thread) Distribuio, Facilidades de B. D. Abstrao Funcional Definio preliminar da ling. objeto Nvel Alto nvel, Intermediria Assembly, Mquina Mquina Alvo Real ou Hipottica (Virtual) Definio do Tipo de Tradutor Compilador Interpretador Tradutor/Interpretador Pr-Processador Montador
13
Estrutura do Tradutor Nmero de fases Nmero de passos Forma de Integrao Linguagens Intermedirias Definio do Ambiente Operacional
Hardware e sistema Operacional Linguagem de Implementao Disponibilidade de Ferramentas
Especificao da Linguagem Fonte Completa e Detalhada Aspectos Lxicos Aspectos Sintticos Aspectos Semnticos Especificao da Linguagem Objeto Completa e Detalhada Arquitetura da Mquina Alvo Repertrio de Instrues Procedimentos de Traduo
14
Exemplos de problemas:
Computabilidade / Decidibilidade Equivalncia entre Programas Garantia de parada de um programa Complexidade de Algoritmos Significado e Correo de Programas
15
Teoria da Computao X Teoria das Linguagens Formais Definio de Teoria da Computao sob a tica da Teoria das Linguagens Formais:
Conjunto de Modelos Formais (autmatos e gramticas, p. ex.), que juntamente com suas propriedades (decidibilidade, equivalncia e complexidade), fundamentam a Cincia da Computao.
16
PROCEDURE X ALGORITMO
Procedure: Sequncia finita de passos, executveis
mecanicamente de forma discreta.
Exemplos:
Determinar se I 1 um nmero primo Determinar se existe um nmero perfeito > I Determinar se um programa est sintaticamente correto Determinar se um programa qualquer entrar em loop para uma entrada qualquer (Halting Problem) Conj. Recursivos e Recursivamente Enumerveis X
Algoritmos e Procedures
Tese de CHURCH Todo processo efetivo pode ser realizado por uma mquina de turing) Tipos 0, 1, 2 e 3
Mtodo para especificao de funes Influenciou programao funcional Formalizao de sistemas de re-escrita Lgica formal e sistemas especialistas
Mtodo para definio de funes a partir de um conjunto de equaes exemplo : XY = 1, se y = 0 Y-1 = X . X , se y > 0 O que LINGUAGEM FORMAL ?
18
Forma de comunicao Conjunto de smbolos + conjunto de regras Exemplos: L. Mquina, PASCAL, Portugus, ...
Conceitos Bsicos
Alfabeto : Sentena:
Conjunto finito e no vazio de smbolos Sequncia de smbolos de um alfabeto Quantidade de smbolos de uma sentena denotada por , uma sentena de tamanho exemplo: a3 = aaa
Formas de Representao:
19
L V
Linguagens Formais
Algoritmos Procedures
Linguagens Recursivas:
20