Aula 6 1 Análise Lexical Compiladores, Aula Nº 6 João M. P. Cardoso.

Slides:



Advertisements
Apresentações semelhantes
FAPE - Curso de Ciência da Computação
Advertisements

FAPE - Curso de Ciência da Computação
Tópicos em Compiladores
Variantes de Máquina de Turing
Compiladores Claudio Benossi
II – Análise léxica DEI Papel do analisador léxico.
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
I - Noções dum compilador
Compiladores I Cristiano Damiani Vasconcellos
Linguagem de Montagem Visão geral.
Prof. Yandre Maldonado e Gomes da Costa
Prof. Yandre Maldonado e Gomes da Costa
Análise Léxica (Parte 2)
3 AUTÓMATOS FINITOS.
Ling. Formais e Autômatos Autômatos finitos
Máquinas de Turing Teoria da Computação.
Teoria da Computação Sandra de Amo
Teoria da Computação BCC 244
Strings, Linguagens, Autômatos
Problemas Algoritmicos
autômatos finitos com transições e
Identificando Linguagens Não Regulares
Linguagem de Prog. e Programas
Autômatos Finitos Determinísticos
Construção de Compiladores
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Conversão de um NFA para um DFA com um exemplo
Compiladores, Aula Nº 5 João M. P. Cardoso
Compiladores, Aula Nº 11 João M. P. Cardoso
Compiladores, Aula Nº 7 João M. P. Cardoso
Compiladores, Aula Nº 9 João M. P. Cardoso
Aula 17 1 Análise Sintáctica Compiladores, Aula Nº 17 João M. P. Cardoso.
Compiladores, Aula Nº 10 João M. P. Cardoso
Ling. Formais e Autômatos AFN-ε
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?
Inteligência Artificial
Capítulo II Gramáticas e Linguagens
Máquina de Turing Universal
Analise sintática aula-07-analise-sintática.pdf.
1 Professor Claudio Benossi Aula 03 Engenharia de Software II.
Minimização de DFAs.
Analise Semântica aula-10-analise-semântica.pdf.
Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento de Sistemas e Computação – DSC Teoria da.
Aula 12 1 Análise Sintáctica Compiladores, Aula Nº 12 João M. P. Cardoso.
Máquinas de Turing.
Aula 18 1 Análise Sintáctica Compiladores, Aula Nº 18 João M. P. Cardoso.
Estado Final Único para NFAs e DFAs
Redução.
CES-41 COMPILADORES Aulas Práticas
Prof. André Luis Roland Tancredo Engenheiro da Computação e Pesquisador em Desenvolvimento Tecnológico para Semicondutores pelo CNPq Especialista em Microeletrônica.
Geradores de analisadores léxicos
Linguagens Formais - aula 02
Computabilidade e Linguagens Formais
Computabilidade e Linguagens Formais
Computabilidade e Linguagens Formais
SISTEMAS DE INFORMAÇÃO
Compilador Software que traduz o texto (linguagem fonte) que representa um programa para código máquina(linguagem alvo) capaz de ser executado pelo.
Reverso de uma Linguagem Regular
1 Decidibilidade continuação…. 2 Teorema: Para qualquer linguagem recursivamente enumerável é indecidível determinar se é finita Prova: Vamos reduzir.
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.
Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE
Informática Teórica Engenharia da Computação. Autômatos Com Pilha São como autômatos finitos não-determinísticos mas com uma pilha. São como autômatos.
Transcrição da apresentação:

Aula 6 1 Análise Lexical Compiladores, Aula Nº 6 João M. P. Cardoso

Aula 6 2 Especificação Formal de Linguagens Expressões regulares (método generativo) Existem casos que não se podem descrever por expressões regulares Autómatos finitos (método por reconhecimento) Não deterministas (NFAs) Deterministas (DFAs) Implementam qualquer expressão regular

Aula 6 3 Autómatos Finitos Conjunto de estados 1 estado de Entrada 1 ou mais estados terminais (ou estados de aceitação) Alfabeto de símbolos:  (inclui o símbolo de string de tamanho zero:  ) Transições entre estados despoletadas pela ocorrência de um determinado símbolo do alfabeto Transições rotuladas com símbolos

Aula 6 4 Autómatos Finitos Exemplo Estado de início Estado de aceitação (0 | 1)*”.”(0 | 1)*

Aula 6 5 Aceitação de string pelo autómato Reconhecimento através da execução do autómato Começar com o estado de início e com o primeiro símbolo da string Guardar estado corrente e o símbolo corrente da string Em cada passo, fazer corresponder símbolo corrente com a transição rotulada com esse símbolo Continuar até ao fim da string ou até que a correspondência falhe Se o estado final é estado de aceitação, então o autómato aceita a string Linguagem do autómato é constituída pelo conjunto de strings que ele aceita

Aula 6 6 Exemplo 11.0 Símbolo corrente Estado de início Estado de aceitação

Aula 6 7 Exemplo 11.0 Símbolo corrente Estado de início Estado de aceitação

Aula 6 8 Exemplo 11.0 Símbolo corrente Estado de início Estado de aceitação

Aula 6 9 Exemplo 11.0 Símbolo corrente Estado de início Estado de aceitação

Aula 6 10 Exemplo 11.0 Símbolo corrente Estado de início Estado de aceitação

Aula 6 11 Exemplo 11.0 Símbolo corrente String aceite! Estado de início Estado de aceitação

Aula 6 12 Autómatos Finitos NFA: Autómato Finito não Determinista De um determinado estado, a mesma ocorrência pode conduzir a estados distintos DFA O mesmo que NFA com a seguinte ressalva: De um determinado estado, a ocorrência de um símbolo não pode ter mais do que um laço, e por isso não pode levar a estados diferentes.

Aula 6 13 NFA vs DFA DFA Sem transições  No máximo uma transição de cada estado para cada símbolo NFA – nenhuma destas restrições a a a b OK NOT OK

Aula 6 14 Autómatos Finitos Autómatos Finitos Deterministas (DFAs) Implementações mais rápidas do que para os NFAs, mas Maior complexidade do autómato

Aula 6 15 Generativo vs Reconhecimento Expressões regulares são um mecanismo para gerar as Strings da linguagem Autómatos são um mecanismo para reconhecer se uma String específica pertence à linguagem Abordagem standard Usar expressões regulares aquando da definição da linguagem Tradução automática para autómatos para a implementação da analisador lexical