I - Noções dum compilador

Slides:



Advertisements
Apresentações semelhantes
Linguagens Livre-de-contexto
Advertisements

FAPE - Curso de Ciência da Computação
FAPE - Curso de Ciência da Computação
Software Básico Silvio Fernandes
Teoria da Computação MÁQUINA DE TURING (Continuação) Fabrício Dias
II – Análise léxica DEI Papel do analisador léxico.
II – Análise léxica DEI Conversão de expressões regulares em autómatos finitos determinísticos mínimos Bibliografia aconselhada: Aho, Sethi e Ullman –
III – Análise sintáctica
III – Análise sintáctica
II – Análise léxica DEI lex: linguagem de especificação para analisadores léxicos Implementação de simuladores de autómatos finitos Bibliografia aconselhada:
I - Noções dum compilador
III – Análise sintáctica
III – Análise sintáctica Parsers ascendentes Instruções shift-reduce Bibliografia aconselhada: –Aho, Sethi e Ullman – secção 4.5 LFA 1999/ Jorge.
III – Análise sintáctica
IV – Análise semântica DEI Associação de regras semânticas a produções
V – Geração de código Chamada de funções Organização de memória Passagem de parâmetros Representação de código intermédio Bibliografia aconselhada: –Aho,
I - Noções dum compilador
Prof. Yandre Maldonado e Gomes da Costa
Prof. Yandre Maldonado e Gomes da Costa
LFA - Ambiguidade - Equivalência de gramáticas - Hierarquia de Chomsky
Linguagens Formais e Autômatos
Prof. Yandre Maldonado e Gomes da Costa
TEORIA DA COMPUTAÇÃO Parte II  Linguagens Livres de Contexto
Teoria da Computação FIC– Ciência da Computação
Deyvisson, Rafael M.P., Renato, Robson C.F., Rodolfo
Análise Léxica (Parte 2)
Computabilidade e Linguagens Formais
Software Básico Silvio Fernandes
Forma Normal de Chomsky
Lema do Bombeamento – Gramáticas Livres do Contexto
Jorge Muniz Barreto UFSC-INE 2000
Linguagens Livres de Contexto
Q={s,q1,…,q10,t,r} ={a,b,c} ={├,■,} Função de transição:
Linguagens Livre de Contexto
esquerda p/ direita,read only
Linguagens e Máquinas WILSON ROSA DE OLIVEIRA DEPARTAMENTO DE INFORMÁTICA UFPE
Identificando Linguagens Não Regulares
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Análise Sintática Ascendente
Linguagem de Prog. e Programas
Construção de Compiladores
Exercícios Linguagens Formais.
Prof. Bruno Moreno Aula 4 – 11/03/2011
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Compiladores, Aula Nº 5 João M. P. Cardoso
Compiladores, Aula Nº 9 João M. P. Cardoso
Lema do Bombeamento Linguagens Livres de Contexto
Lemas (Sudkamp)  .
Gramáticas Livres de Contexto
Aula 17 1 Análise Sintáctica Compiladores, Aula Nº 17 João M. P. Cardoso.
Teoria da Computação Aula 1 Prof. Fabiano Sabha.
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Expressões Regulares e Gramáticas
Autómatos de Pilha. UM NOVO MODELO PARA OS AUTÓMATOS FINITOS As linguagens regulares são aceites por autómatos finitos. E as linguagens não regulares?
1 Aplicações do Fecho Regular. 2 A interseção de uma linguagem livre de contexto e uma linguagem regular é uma linguagem livre de contexto livre de contexto.
Aulão de Linguagens Formais e Compiladores
Capítulo II Gramáticas e Linguagens
Analise sintática aula-07-analise-sintática.pdf.
Nome alunos 1 Título UC. Título – slide 2 Conteúdo Conteúdo 2.
Análises léxica e sintática
Máquinas de Turing.
Linguagens Livres de Contexto
Linguagens Formais - aula 02
Engenharia/Ciência da Computação
Sintaxe de uma Linguagem
Aula 6 1 Análise Lexical Compiladores, Aula Nº 6 João M. P. Cardoso.
Faculdade Pernambuca - FAPE Compiladores Abril/2007 Compiladores Abril/2007.
Informática Teórica Engenharia da Computação. Teoria da Computação Contexto do que vamos começar a estudar As linguagens também podem ser definidas formalmente.
Transcrição da apresentação:

I - Noções dum compilador DEI Gramáticas Árvores de derivação Hierarquia de Chomsky Autómatos de pilha Bibliografia aconselhada: Apontamentos Jorge Morais LFA 1999/2000 - 1

Gramática DEI Uma gramática é um vector G = (V, , P, S) onde: V conjunto finito - variáveis (símbolos não terminais)   conjunto finito - alfabeto P  (V  )+ x (V  )* - conjunto de produções S  V - símbolo inicial Jorge Morais LFA 1999/2000 - 2

Produções duma gramática DEI Uma produção representa-se habitualmente na forma  Escrevemos que u  v, se u=xy e v=xy, com x,y  (V  )* e   P Escrevemos que u * v (v deriva de u), se u = v ou se u  w1  w2  ...  wn-1  v, onde w1, w2, ..., wn-1  (V  )+ Jorge Morais LFA 1999/2000 - 3

Linguagem duma gramática DEI Definimos a linguagem gerada pela gramática L(G) = {u  *: S * u} BNF (Backus Naur Form): Variáveis são iniciados com letra maíuscula Símbolos do alfabeto com letra minúscula  para representar produções 1 | 2 | ... | n (produções alternativas)  Jorge Morais LFA 1999/2000 - 4

Gramáticas sensíveis ao contexto DEI Dizemos que uma gramática é sensível ao contexto se todas as produções são da forma: S, ou; , onde: ||  ||; S  cont() Jorge Morais LFA 1999/2000 - 5

Gramáticas independentes de contexto DEI Dizemos que uma gramática é independente de contexto se todas as produções são da forma: A, onde: A  V;   (V  )* Jorge Morais LFA 1999/2000 - 6

Árvore de derivação DEI Seja G = (V, , P, S) uma gramática independente de contexto e seja S * u uma derivação em G. Numa árvore de derivação tem-se: o nó principal é o símbolo inicial S; as variáveis são nós interiores; os símbolos do alfabeto são folhas. Jorge Morais LFA 1999/2000 - 7

Gramáticas regulares DEI Dizemos que uma gramática é regular se for linear à esquerda ou à direita: Gramática linear à direita A  A  A  B onde: A, B  V;    Gramática linear à esquerda A B Jorge Morais LFA 1999/2000 - 8

Hierarquia de Chomsky DEI Tipo Linguagem Gramática Recursivamente Enumeráveis Sem restrições 1 Sensíveis ao contexto 2 Independentes de contexto 3 Regulares Jorge Morais LFA 1999/2000 - 9

Exemplo 1 DEI L(G) = {u  *: u = anbncn, n  1}, G= (V, , P, S), V = {S, A, B},  = {a,b,c} Produções: S  aSBA | abA AB  BA bB  bb bA  bc cA  cc aB  ab Jorge Morais LFA 1999/2000 - 10

Exemplo 1 (cont.) DEI Derivação de a2b2c2 = aabbcc: S  aSBA  aabABA  aabBAA aabbAA  aabbcA  aabbcc Jorge Morais LFA 1999/2000 - 11

Exemplo 2 DEI L(G) = {u  *: u = an(a+b+c)bn, n  1}, G= (V, , P, S), V = {S, T},  = {a, b, c} Produções: S  aSb | T T  a | b | c Jorge Morais LFA 1999/2000 - 12

Exemplo 2 (cont.) DEI Derivação de a3cb3 = aaacbbb: S  aSb  aaSbb  aaaSbbb aaaTbbb  aaacbbb Jorge Morais LFA 1999/2000 - 13

Autómato de Pilha DEI Um autómato de pilha é um vector A = (S, , , , i, z, F), onde: S conjunto finito de estados   conjunto finito - alfabeto de entrada   conjunto finito - alfabeto da pilha : S x {} x   S x * i  S estado inicial z   símbolo inicialmente no topo da pilha F  S conjunto de estados finais Jorge Morais LFA 1999/2000 - 14

Linguagem do Autómato de Pilha DEI Num autómato de pilha a linguagem pode ser reconhecida de forma equivalente por estados finais ou por pilha vazia LF(A) = {u  *: u é o rótulo de um caminho bem sucedido} LV(A) = {u  *: u é o rótulo de um caminho que termina com a pilha vazia} Jorge Morais LFA 1999/2000 - 15

Exemplo DEI L(A) = {u  *: u = x 3 xi, x é uma sequência de 1’s e 2’s e xi é a mesma sequência invertida } A = (S, , , , i, z, F) S={i,m,f},  = {1, 2, 3},  = {a, b, z} F ={f} Jorge Morais LFA 1999/2000 - 16

Exemplo (cont.) DEI  ={ (i,1,z,i,az), (i,1,a,i,aa), (i,1,b,i,ab), (i,2,z,i,bz), (i,2,a,i,ba), (i,2,b,i,bb), (i,3,z,m,z), (i,3,a,m,a), (i,3,b,m,b), (m,1,a,m, ), (m,2,b,m,), (m,,z,f,)} Jorge Morais LFA 1999/2000 - 17

Equivalência entre linguagens DEI As linguagens reconhecidas por autómatos finitos, expressões regulares e gramáticas regulares são todas do tipo 3, isto é, regulares. As linguagens reconhecidas por gramáticas independentes de contexto e autómatos de pilha são do tipo 2, isto é, independentes de contexto. Jorge Morais LFA 1999/2000 - 18

Prova construtiva DEI Para determinar que uma linguagem é do tipo 3 ou do tipo 2, basta usar uma das formas anteriores. Para provar que não é do tipo 3 ou 2, é preciso provar que não é possível encontrar nenhuma dessas formas. Jorge Morais LFA 1999/2000 - 19

Lema de repetição para LR’s DEI Se L é uma linguagem regular, existe um inteiro n tal que todo o x  L com |x|  n pode ser escrito na forma x = uvw com: |uv|  n |v|  1  m  0 a palavra uvmw pertence a L A constante n não excede o número de estados do menor autómato finito que reconhece L. Jorge Morais LFA 1999/2000 - 20

Lema de repetição para LIC’s DEI Se L é uma linguagem independente de contexto, existe um inteiro n apenas dependente de L tal que, se z  L e |z|  n, z pode ser escrito da forma z = uvwxy onde: |vx|  1 |vwx|  n  i  0 a palavra uviwxiy pertence a L Jorge Morais LFA 1999/2000 - 21