Академический Документы
Профессиональный Документы
Культура Документы
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
Linguagens Formais e Autmatos
1
Tradutor
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.
Anlise
Sntese
P. Objeto
Caractersticas das Aplicaes Importncia da Otimizao Tamanho / Experincia da Equipe Disponibilidade de Ferramentas de Apoio Prazo para desenvolvimento
Vantagens X Desvantagens
Funes bsicas: o Ler o programa fonte o Agrupar caracteres em itens lxicos (tokens)
* * *
*
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
* Verificar se a sintaxe da linguagem na qual o programa foi escrito est sendo respeitada * Detectar/Diagnosticar erros sintticos
Exemplos:
B := A * 2.5
<var>
<expresso>
<lista-var>
<tipo>
Funes bsicas:
8
* Verificar se as construes utilizadas no P.F. esto semanticamente corretas * Detectar e diagnosticar erros semnticos * Extrair informaes do programa fonte que permitam a gerao de cdigo
de
Tabela de Smbolos :
Definio - Estrutura onde so guardadas as
informaes (os atributos) essenciais identificador utilizado no programa fonte. sobre cada
categoria varivel * simples - tipo * array - dimenses, tipo dos elementos * record - campos (quant. e apontadores) * ... constante * tipo e valor procedimentos * procedure ou funo * nmero de parmetros * ponteiro para parmetros * se funo, tipo do resultado parmetro * tipo * forma de passagem (valor , referncia) campo de record * tipo, deslocamento dentro do Record
10
Exemplo
E := ( A + B ) * ( C + D ) Quadrupla ( + , A , B , T1) ( + , C , D , T2) ( + , T1 , T2 , E) Mquina de acumulador
carregue A some B armazene T1 carregue C some D armazene T2 carregue T1 multiplique T2 armazene E
* * * * * *
ex. c := (a + b ) * ( a + b ) Eliminao de desvios para a prxima instruo Retirada de comandos invariantes ao LOOP Eliminao de cdigo inalcanvel Reduo em fora Transformao/avaliao parcial Alocao tima de registradores
Definio Preliminar da Ling. fonte Objetivos Propsito geral ou especfico 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
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
14
15
Exemplos de problemas:
Computabilidade / Decidibilidade Equivalncia entre Programas Garantia de parada de um programa Complexidade de Algoritmos Significado e Correo de Programas
16
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.
17
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)
Algoritmos e Procedures
X Problemas Decidveis e Problemas Indecidveis
18
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 ? O que LINGUAGEM ? 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 0 exemplo: a = aaa
* 3
Fechamento de um alfabeto:
Reflexivo : V + Transitivo (ou Positivo) : V
20
Formas de Representao:
Enumerao Sistemas Geradores Sistemas Reconhecedores
LV
Linguagens Formais
Algoritmos Procedures
Linguagens Recursivas: