Informática Teórica Engenharia da Computação

Slides:



Advertisements
Apresentações semelhantes
Decidibilidade e Indecidibilidade
Advertisements

FAPE - Curso de Ciência da Computação
Capítulo 1 A linguagem da Lógica Proposicional
I - Noções dum compilador
Linguagens Formais e Autômatos
Deyvisson, Rafael M.P., Renato, Robson C.F., Rodolfo
Análise Léxica (Parte 2)
Elsa Carvalho 49 Universidade da Madeira Departamento de Matemática e Engenharias Programação em Lógica e Funcional (2000/01) (Actualizado em 2005/06)
TEORIA DOS AUTÓMATOS FINITOS E DAS SUAS LINGUAGENS
Software Básico Silvio Fernandes
Conteúdo: - Operadores.
Linguagens Livres de Contexto
Disciplina: AAM Profa. Ana Watanabe vol.3
01(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
Construção de Compiladores
Introdução ao -calculus
Alfabetos, Palavras e Linguagens
Unidades de Armazenamento
Programação Baseada em Objectos Desenho de TAD
Minimização de Circuitos Lógicos
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
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Aula 5 - Operadores, Expressões e Funções Matemáticas
Compiladores, Aula Nº 5 João M. P. Cardoso
Aula 13 Derivação Implícita, derivadas das funções trigonométricas inversas e derivadas de funções logarítmicas.
Gramáticas Livres de Contexto
Informática Teórica Engenharia da Computação
Introdução a Lógica Prof. Luiz Carlos Gabi.
Introdução a Programação
Informática Teórica Engenharia da Computação
Ling. Formais e Autômatos AFN-ε
Sintaxe e Semântica Prof.: Gláucya Carreiro Boechat
Expressões e Instrução de Atribuição
Análise Léxica Primeira fase de um compilador
Teoria da Computação Aula 1 Prof. Fabiano Sabha.
Expressões Regulares e Gramáticas
MER – MODELO DE ENTIDADE E RELACIONAMENTO
Faculdade Talentos Humanos - FACTHUS - Algoritmo I - Rogério Rodrigues
Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento de Sistemas e Computação – DSC Teoria da.
Algumas notas sobre a linguagem de programação C
Métodos Formais.
Lambda Cálculo & Programação Funcional
CONJUNTO DOS NÚMEROS INTEIROS
Estado Final Único para NFAs e DFAs
Faculdade Pernambucana - FAPE Setembro/2007
Prof. André Luis Roland Tancredo Engenheiro da Computação e Pesquisador em Desenvolvimento Tecnológico para Semicondutores pelo CNPq Especialista em Microeletrônica.
Linguagem C.
Linguagens Formais - aula 02
Complexidade de Computação Katia Guimarães. Avaliando a Qualidade de um Algoritmo É preciso ter bem definido –O que é dado de entrada e –O que é esperado.
Computabilidade e Linguagens Formais
Computabilidade e Linguagens Formais
Tipos de Dados Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem.
tópicostópicos itens 01. Terminologia 02. Operações básicas 03. Representação de linguagens 04. Formalização de gramáticas 05. Processo de derivação 06.
Linguagem de Programação I PARTE i
Aula 6 1 Análise Lexical Compiladores, Aula Nº 6 João M. P. Cardoso.
Compiladores Análise Léxica
PARADIGMAS DE LINGUAGENS EXPRESSÕES E INSTRUÇÕES DE ATRIBUIÇÃO
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.
COMPILADORES 03 Prof. Marcos.
Álgebra Booleana e Circuitos Lógicos Em 1854, George Boole introduziu o formalismo que até hoje se usa para o tratamento sistemático da lógica, que é.
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:

Informática Teórica Engenharia da Computação

Expressões Regulares Na aritmética, podemos usar as operações + e  para montar expressões tais como (5 + 3)  4. Similarmente, podemos usar as operações regulares para montar expressões descrevendo linguagens, que são chamadas expressões regulares. Por exemplo: (0  1)0* O valor de uma expressão aritmética é um número. No exemplo é 32. O valor de uma expressão regular é uma linguagem. No exemplo: a linguagem das cadeias binárias que começam com 1 ou 0 seguido por um número qualquer de 0s.

Expressões Regulares Como obtemos o valor de (0  1)0* ? Primeiro, os símbolos 0 e 1 são abreviações para os conjuntos {0} e {1}. Dessa forma, (0  1) significa ({0}  {1}). O valor dessa parte é a linguagem {0,1}. Segundo, como o símbolo em álgebra, o símbolo da concatenação frequentemente está implicito nas expressões regulares. Por conseguinte, (0  1)0* é, na realidade, uma abreviação de (0  1)0*. A concatenação junta as cadeias das duas partes para obter o valor da expressão inteira.

Expressões Regulares Outro exemplo: (0  1)* Ela começa com a linguagem (0  1) e aplica a operação *. O valor dessa expressão é a linguagem consistindo de todas as possíveis cadeias de 0s e 1s. Se  = {0,1}, podemos escrever  como abreviação para a expressão regular (0  1).

Expressões Regulares Genericamente, se  for um alfabeto qualquer, a expressão regular  descreve a linguagem consistindo de todas as cadeias de comprimento 1 sobre esse alfabeto. * descreve a linguagem consistindo de todas as cadeias sobre esse alfabeto.

Expressões Regulares Qual é a linguagem *1 ? É a linguagem que contem todas as cadeias que terminam em 1. E a linguagem (0 *)  (* 1) ? Consiste de todas as cadeias que começam com 0 ou terminam com 1.

Expressões Regulares Precedência dos operadores A operação estrela é feita primeiro, seguida por concatenação, e finalmente união, a menos que parênteses sejam usados para mudar a ordem usual.

Expressões Regulares Definição Formal Dizemos que R é uma expressão regular se R for a para algum a no alfabeto , , , (R1  R2), onde R1 e R2 são expressões regulares, (R1  R2), onde R1 e R2 são expressões regulares, ou (R1*), onde R1 é uma expressão regular. Nos itens 1 e 2, as expressões regulares a e  representam as linguagens {a} e {}, respectivamente.

Expressões Regulares Notação R+ = RR* R* = R+  { } RK : concatenação de k’s Rs. Quando queremos distinguir entre uma expressão regular R e a linguagem que ela descreve, escrevemos L(R) como sendo a linguagem de R.

Expressões Regulares Exemplos onde ={0,1} 0*10* {w | w contem um único 1}. *1* {w | w tem pelo menos um símbolo 1}. 1*(01+)* {w | todo 0 em w é seguido por pelo menos um 1}. ()* {w | w é uma cadeia de comprimento par}. 01  10 {01, 10}

Expressões Regulares Exemplos onde ={0,1} 0*0  1*1  0  1 {w | w começa e termina com o mesmo símbolo}. (0  )1* 01*  1* (0  )(1  ) {,0,1,01}. 1*  * {}

Expressões Regulares Identidades pode ser diferente de R R   É sempre 

Expressões Regulares Expressões regulares são ferramentas úteis no desenho de compiladores para linguagens de programação. tokens, tais como os nomes de variáveis e constantes podem ser descritos com expressões regulares.

Expressões Regulares Exemplo Uma constante numérica que pode incluir uma parte fracionária e/ou um sinal pode ser descrita como um membro da linguagem: ( + -  ) (D+  D+.D*  D*.D+) Onde D={0,1,2,3,4,5,6,7,8,9} Cadeias geradas: 72, 3.14159, +7. e -.01 .