Linguagens Formais e Autômatos 02/2015. LFA Aula 02. introdução 28/09/2015. Celso Olivete Júnior.

Documentos relacionados
Conceitos Básicos. Vocabulário Cadeias Linguagens Problema

Conceitos Básicos. Vocabulário Cadeias Linguagens Expressões Regulares Problema X Linguagem

Linguagens Formais. Aula 01 - Conceitos Básicos. Prof. Othon Batista Mestre em Informática

Alfabeto, Cadeias, Operações e Linguagens

Linguagens Formais e Autômatos 02/2016. LFA Aula 01 24/10/2016. Celso Olivete Júnior.

Teoria da Computação Aula 02 Introdução

Definições Hierarquia de Chomsky Exemplos de gramáticas. Gramáticas. Objetivo de ensinar o inglês pelo computador e conseguir um tradutor de línguas

Definições Exemplos de gramáticas

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos P. Blauth Menezes

Introdução Definição Conceitos Básicos de Linguagem

1 Expressões Regulares e Linguagens

Modelos de Computação

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Linguagens Formais e Problemas de Decisão

Linguagens Formais e Autômatos 02/2016. LFA Aula 04 16/11/2016. Celso Olivete Júnior.

Linguagens Regulares. Prof. Daniel Oliveira

Linguagens Formais - Preliminares

Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000)

Linguagem (formal) de alfabeto Σ

LINGUAGENS FORMAIS Definições. Desenvolveram-se na História em função da necessidade dos grupos humanos que as empregavam

Apostila 01 Fundamentação da Teoria da Computação e Linguagens Formais

LFA Aula 09. Gramáticas e Linguagens Livres de Contexto 18/01/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior.

Compiladores Aula 4. Celso Olivete Júnior.

LFA. Aula 04. Sintaxe e Semântica. Conceitos Básicos Alfabeto Palavra Linguagem

Compiladores. Análise lexical. Plano da aula. Motivação para análise lexical. Vocabulário básico. Estrutura de um compilador

LFA Aula 07. Equivalência entre AFD e AFND. Equivalência entre ER s e AF s Equivalência entre GR s e AF s. Linguagens Formais e Autômatos

Prof. Dr. Marcos Castilho. Departamento de Informática/UFPR. 27 de Fevereiro de 2018

Histórico e motivação

Lista de exercícios 1

Expressões Regulares. Tiago Alves de Oliveira

Curso: Ciência da Computação Turma: 6ª Série. Teoria da Computação. Aula 3. Autômatos Finitos

IBM1088 Linguagens Formais e Teoria da

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)

Expressões Regulares e Gramáticas Regulares

INE5317 Linguagens Formais e Compiladores. AULA 4: Gramáticas

1 INTRODUÇÃO E CONCEITOS BÁSICOS

Conceitos básicos de Teoria da Computação

Máquinas Universais. Máquina de Turing. Celso Olivete Júnior.

Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Curso de Ciências de Computação

Curso de Engenharia de Computação - UTFPR Teoria da Computação - Prof. Celso Kaestner Lista de exercícios

Prof. Adriano Maranhão COMPILADORES

COMPILADORES. Revisão Linguagens formais Parte 01. Geovane Griesang

Um alfabeto é um conjunto de símbolos indivisíveis de qualquer natureza. Um alfabeto é geralmente denotado pela letra grega Σ.

Prof. Dr. Marcos Castilho. Departamento de Informática/UFPR. 22 de Fevereiro de 2018

LFA Aula 05. AFND: com e sem movimentos 05/12/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior.

Expressões regulares

Revisões de Conjuntos

Linguagens, Reconhecedores e Gramáticas

SCC Capítulo 1 Linguagens Regulares e Autômatos Finitos

Fundamentos da Teoria da Computação

Compiladores - Análise Léxica

Compiladores - Análise Léxica

Gramáticas Livres de Contexto

Como construir um compilador utilizando ferramentas Java

INE5317 Linguagens Formais e Compiladores AULA 3: Introdução a Teoria da Computação

Universidade Federal de Alfenas

Teoria de Linguagens 1 o semestre de 2018 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 17/4/2018 Valor: 10 pontos

Gramáticas ( [HMU00], Cap. 5.1)

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

LINGUAGENS FORMAIS E AUTÔMATOS. Prova 2-10/06/ Prof. Marcus Ramos

Expressões e Gramáticas Regulares e Autómatos Finitos

INE5317 Linguagens Formais e Compiladores AULA 5: Autômatos Finitos

Teoria de Linguagens 2 o semestre de 2015 Professor: Newton José Vieira Primeira Lista de Exercícios Entrega: até 16:40h de 15/9.

LINGUAGENS FORMAIS E AUTÔMATOS

Fundamentos da Teoria da Computação

Linguagens Formais e Autômatos. Conceitos Básicos Prof. Anderson Belgamo

BCC244. Alfabeto, String, Linguagem, Gramática. Registro aqui o agradecimento à Profa. Lucília por ceder slides que fazem parte deste materal.

Linguagens de Programação Aula 4

Teoria da Computação. Unidade 1 Conceitos Básicos. Referência Teoria da Computação (Divério, 2000)

a n Sistemas de Estados Finitos AF Determinísticos

I.2 Introdução a Teoria da Computação

Aula 7: Autômatos com Pilha

Expressões Regulares. Linguagens Formais e Autômatos. Andrei Rimsa Álvares

Linguagens Formais e Autômatos (LFA)

Gramática. Prof. Yandre Maldonado e Gomes da Costa. Prof. Yandre Maldonado - 1

Gramática. Gramática. Gramática

Exercicios. 7.2 Quais das seguintes afirmações são verdadeiras? Justifica. (d) abcd L((a(cd) b) )

Matemática Discreta para Ciência da Computação

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

Linguagens Regulares, Operações Regulares

Linguagens de Programação Aula 3

Teoria da Computação

1 introdução. capítulo. O que é uma solução computável? Quais são os limites do que pode ser computado? Existem problemas sem solução computacional?

Teoria de Linguagens 2 o semestre de 2017 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 19/9/2017 Valor: 10 pontos

Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros. Prof. Thiago A. S.

Editor de Autômatos Finitos. Acadêmica: Josiane Patrícia Morastoni Orientadora: Joyce Martins

Problema A Codificação Símbolos Dado um inteiro n, n é N representação de inteiros 0,1,...,b - 1 numa base b Dado um grafo G, G é conexo?

Linguagens Livres de Contexto

Linguagens Formais e Autômatos P. Blauth Menezes

Segunda Lista de Exercícios 2004/2...

Hierarquia de Chomsky e sua relação com os autômatos

Construção de Compiladores Aula 16 - Análise Sintática

LINGUAGENS FORMAIS E AUTÔMATOS

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Linguagens e Autômatos

Transcrição:

LFA Aula 02 Linguagens regulares - introdução 28/09/2015 Celso Olivete Júnior olivete@fct.unesp.br 1

Na aula passada... Visão geral Linguagens regulares expressões regulares autômatos finitos gramáticas regulares Celso Olivete Júnior 2

Classificação das Linguagens segundo Hierarquia de Chomsky e seus reconhecedores Máquina de Turing Máquina de Turing com fita limitada Autômato à pilha Gramáticas livre de contexto Maior complexidade Menor complexidade Autômatos finitos Expressões regulares Gramáticas regulares Celso Olivete Júnior 3

Na aula de hoje... Linguagens regulares: Expressões regulares Referência bibliográfica HOPCROFT, J. E.; ULLMAN, J. D.; MOTWANI, R. Introdução à Teoria de Autômatos, Linguagens e Computação. Editora Campus, 2002 Capítulos 1 e 3 Celso Olivete Júnior 4

Roteiro Definições prévias: alfabeto, strings e linguagem Expressões regulares Celso Olivete Júnior 5

Roteiro Definições prévias: alfabeto, strings e linguagem Expressões regulares Celso Olivete Júnior 6

Definições prévias Alfabeto ou Vocabulário: Conjunto finito não vazio de símbolos. Símbolo é um elemento qualquer de um alfabeto. Representado por Σ Ex: Σ = {a,b} alfabeto formado pelas letras a e b Σ = {0,1,2,3,4,5,6,7,8,9} alfabeto formado pelos dígitos de 0 a 9 Cadeia, String ou Palavra: Concatenação finita de símbolos de um alfabeto. Define-se como cadeia vazia ou nula uma cadeia que não contém nenhum símbolo. Ex: aab string sobre o alfabeto Σ = {a,b} 123094 string sobre o alfabeto Σ = {0,1,2...,9} ε ou λ representam uma cadeia vazia Celso Olivete Júnior 7

Definições prévias Comprimento de uma string: Número de símbolos de uma cadeia. Ex: Σ = aab = 3 Σ = 123094 =6 Σ = ε =0 Concatenação de string: Define-se a concatenação z de uma cadeia x com uma cadeia y, como sendo a concatenação dos símbolos de ambas as cadeias, formando a cadeia xy. z = x + y Ex: x = abaa; y = ba z = abaaba x = ba; y = ε z = ba Celso Olivete Júnior 8

Definições prévias Produto de alfabetos: É o produto cartesiano de alfabetos. Ex: V1 = {a,b} V2 = {1, 2, 3} V1.V2 = V1xV2 = {a1, a2, a3, b1, b2, b3} Observe que V1.V2 V2.V1 Exponenciação de alfabetos: São todas as cadeias de comprimento n sobre V (V n ). V 0 ={ε}, V 1 =V, V n =V n-1.v Ex: V = {0, 1} V 3 = V 2.V = (V.V).V = {00, 01, 10, 11}.{0, 1} = {000, 001, 010, 011, 100, 101, 110, 111} Celso Olivete Júnior 9

Definições prévias Fechamento (Clausura) de um Alfabeto: Seja A um alfabeto, então o fechamento de A é definido como A* = A 0 A 1 A 2... A n... Portanto A* = conjunto das cadeias de qualquer comprimento sobre o alfabeto a (inclusive nenhum). Ex: A = {1} A* = {ε, 1, 11, 111,...} Fechamento Positivo de A: A+ = A* - {ε} Celso Olivete Júnior 10

Definições prévias Prefixo de uma palavra é qualquer sequência inicial de símbolos de uma palavra Sufixo é qualquer sequência final de símbolos de uma palavra Relativamente à palavra abcb, tem-se que: ε, a, ab, abc, abcb são os prefixos ε, b, cb, bcb, abcb são os respectivos sufixos Celso Olivete Júnior 11

Definições prévias Subpalavra de uma palavra é qualquer sequência de símbolos contígua da palavra Qualquer prefixo ou sufixo de uma palavra é uma subpalavra Celso Olivete Júnior 12

Definições prévias: relembrando... Linguagem formal: é uma coleção de cadeias de símbolos, de comprimento finito. Estas cadeias são denominadas sentenças da linguagem, e são formadas pela justaposição de elementos individuais, os símbolos ou átomos da linguagem. Celso Olivete Júnior 13

Linguagem formal Ex: {ab, bc} linguagem formada pelas cadeias ab ou bc) {ab n,a n b; n>=0} linguagem formada por todas as cadeias que começam com "a" seguido de um número qualquer de "b"'s ou começam com um número qualquer de "a"'s seguidos de um "b", por exemplo ab, abb, aab, aaab,...) Celso Olivete Júnior 14

Problemas Na teoria de LFA, um problema é a questão de decidir se determinado string é um elemento de uma linguagem Se Σ é um alfabeto e L é uma linguagem sobre Σ, então o problema é: dado um string w em Σ*, definir se w está ou não em L. Celso Olivete Júnior 15

Problemas Exemplo: dado um string w em Σ*, definir se w está ou não em L. Linguagem L: consiste em um número igual de 0 s e 1 s string w = 01110 w não é elemento de L string w = 0110 w é elemento de L Celso Olivete Júnior 16

Formas de definir uma linguagem 1. Por meio da descrição do conjunto finito ou infinito de cadeias (Formalismo Descritivo) Ex: Linguagem dos números pares; L={ 0 n 1 n n >=1} 2. por meio de uma Gramática/Expressão Regular que a gere (Formalismo Gerativo) Celso Olivete Júnior 17

Formas de definir uma linguagem 1. Por meio da descrição do conjunto finito ou infinito de cadeias (Formalismo Descritivo) Ex: Linguagem com quantidade par de elementos; L={ 0 n 1 n n >=1} 2. por meio de uma Gramática/Expressão Regular que a gere (Formalismo Gerativo) Celso Olivete Júnior 18

Definindo uma linguagem É definida usando um formador de conjuntos ou Formalismo Descritivo: { w algo sobre w } Essa expressão é lida como o conjunto de palavras w tais que (seja o que for dito sobre w à direita da barra vertical). Exemplos: {w w consiste em um número igual de 0 s e 1 s} {w w é um número inteiro binário primo} {w w é um programa em C sintaticamente correto} Celso Olivete Júnior 19

Definindo uma linguagem Também é comum substituir w por alguma expressão com parâmetros e descrever os strings na linguagem declarando condições sobre os parâmetros. Exemplo: {0 n 1 n n 1}. o conjunto de 0 elevado a n 1 elevado a n tal que n maior ou igual a 1 ; essa linguagem consiste nos strings {01, 0011, 000111,...}. Celso Olivete Júnior 20

Definindo uma linguagem: outro exemplo {0 i 1 j 0 i j}. Essa linguagem consiste em strings com alguns 0 s (possivelmente nenhum) seguidos por um número igual ou superior de 1 s. Celso Olivete Júnior 21

Formas de definir uma linguagem 1. Por meio da descrição do conjunto finito ou infinito de cadeias (Formalismo Descritivo) Ex: Linguagem dos números pares; L={ 0 n 1 n n >=1} 2. por meio de uma Gramática/Expressão Regular que a gere (Formalismo Gerativo) Celso Olivete Júnior 22

Roteiro Definições prévias: alfabeto, strings e linguagem Expressões regulares e linguagens Celso Olivete Júnior 23

Expressões regulares é uma das formas de definir uma linguagem regular podem ser consideradas uma linguagem de programação aplicação de pesquisas em textos descrever componentes de software estão relacionadas com as gramáticas regulares (definição/geração de sentenças) e com os autômatos finitos (aceitação de sentenças). Celso Olivete Júnior 24

Expressões regulares servem como uma linguagem de entrada para muitos sistemas de processamento de strings. Exemplos: Celso Olivete Júnior 25

Expressões regulares comando de pesquisa grep do unix O comando grep vai procurar um arquivo, texto ou qualquer outra entrada e retornar quaisquer linhas que contenham a string especificada. Digamos que você precisa procurar dentro de um arquivo de log por todos os erros que tenham a ver com o mysql. grep mysql arquivo-de-log.log Celso Olivete Júnior 26

Expressões regulares como parte de um componente do compilador especificar: forma de um identificador [a-z A-Z _][a-z A-Z _ 0-9]* de um número inteiro com ou sem sinal... Celso Olivete Júnior 27

Os operadores de expressões regulares (ER s) Como já foi dito, as ER s denotam linguagens regulares. Exemplo: 01* + 10*: linguagem (L) que consiste em todas as strings que começam com um 0 seguido por qualquer quantidade de número 1 (inclusive nenhum) OU começam com um 1 seguido por qualquer quantidade de 0 Celso Olivete Júnior 28

Os operadores de expressões regulares Os tipos de operadores sobre as ER s são: União Concatenação Fechamento Celso Olivete Júnior 29

Os operadores de expressões regulares Operador união Denotado por +, ou L + M (Linguagem L união com a Linguagem M). Corresponde a: Conjunto de strings que estão em L ou M, ou em AMBAS. Exemplo: L={001, 10, 111} e M={ɛ, 001}. L + M = {ɛ, 001, 10, 111} Celso Olivete Júnior 30

Os operadores de expressões regulares Operador concatenação Denotado por. (ponto) ou sem nenhum operador L.M ou LM (Linguagem L concatenada com Linguagem M). Corresponde a: Conjunto de strings que podem ser formados tomando-se qualquer string em L e concatenando-se com qualquer string em M. Celso Olivete Júnior 31

Os operadores de expressões regulares Operador concatenação Conjunto de strings que podem ser formados tomando-se qualquer string em L e concatenando-se com qualquer string em M. Exemplo: L={001, 10, 111} e M={ɛ, 001}. LM = {001ɛ, 10ɛ, 111ɛ, 001001, 10001, 111001}. Os 3 primeiros símbolos de LM é o resultado da concatenação de cada sequência de L com ɛ. Celso Olivete Júnior 32

Os operadores de expressões regulares Operador fechamento (ou estrela, ou fechamento de Kleene) Denotado por * (asterisco) L* (Fechamento sobre a Linguagem L). Corresponde a: Conjunto de todos strings que podem ser formados tomando-se qualquer número de strings de L (inclusive nenhum), possivelmente com repetições. Celso Olivete Júnior 33

Os operadores de expressões regulares Operador fechamento (ou estrela, ou fechamento de Kleene) Exemplo: L={0,11} L* = {011, 11110,... ɛ} Observe que L é infinito Celso Olivete Júnior 34

Construindo expressões regulares É necessário algum método para agrupar os operadores com seus operandos, tais como parênteses. Por exemplo, a álgebra aritmética começa com constantes como inteiros e números reais, além de variáveis, e elabora expressões mais complexas com operadores aritméticos como + e * Celso Olivete Júnior 35

Construindo expressões regulares A álgebra de ER s segue esse padrão usa constantes e variáveis que denotam linguagens e operadores para as 3 operações (+ união,. concatenação e * fechamento) A base para esta definição consiste em: 1. as constantes ɛ e (vazio) são ER s, denotando as linguagens L(ɛ) = {ɛ} e L( ) = { } 2. se a é qualquer símbolo, então a é uma ER, denotando a linguagem L(a) = {a} 3. L (letra maiúscula e itálico) representa qualquer linguagem Celso Olivete Júnior 36

Construindo expressões regulares 1. Se E e F são ER s, então E + F é uma ER denotando a união de L(E) e L(F) L(E+F) = L(E) + L(F) 2. Se E e F são ER s, então EF é uma ER denotando a concatenação de L(E) e L(F) L(EF) = L(E)L(F) Celso Olivete Júnior 37

Construindo expressões regulares 3. Se E é uma ER, então E* é uma ER denotando o fechamento de L(E) L(E*) = (L(E))* 4. Se E é uma ER, então (E) é uma ER denotando a mesma linguagem que E L((E)) = L(E) Celso Olivete Júnior 38

Exemplos de expressões regulares Exemplos ER formada por 01 ER = 01 ER para strings que são formadas por zero ou mais ocorrências de 01 ER = (01)* é diferente de 01* ER formada por 0 s e 1 s alternados (01)* + (10)* + 0(10)* + 1(01)* resultando, por exemplo, na sequência 010101 + 101010+01010+10101 Obs: cuidado com o uso dos parênteses!! Celso Olivete Júnior 39

Exemplos de expressões regulares Exemplos ER para strings que são formadas por zero seguido por qualquer ocorrência de 1 (inclusive nenhuma) ER formada por todas as palavras sobre (a,b) contendo aa como subpalavra ER = 01* ER = (a+b)*aa(a+b)* Celso Olivete Júnior 40

Expressões regulares: precedência de operadores essencial na omissão de parênteses Ordem de precedência em ER s 1 O operador fechamento (*) é o de precedência mais alta 2 Em seguida, o operador de concatenação (.) 3 Por último, todas as operações de união (+) Celso Olivete Júnior 41

Expressões regulares: precedência de operadores Exemplo: ER = 01* + 1 é agrupada como (0 (1*)) + 1. Agrupando... 1 O operador fechamento é realizado primeiro 2 Em seguida, o operador de concatenação 0 e (1*) 0(1*) 3 Por último, o operador de união (+) Linguagem gerada todos os strings formados por 0 seguido por qualquer número de 1 s (inclusive nenhum) OU 1 L = {1, 0, 01, 011,...} Celso Olivete Júnior 42

Expressões regulares: exemplo de aplicação como componente léxico Identificadores da linguagem Pascal que são compostos por letras (a.-za-z) ou underline(_) seguido por qualquer combinação de letras, underline ou dígitos (0...9) Supondo que: letras são representadas por L underline por _ e os dígitos por D ER = L _ (L _ D)* Celso Olivete Júnior 43

REGEXP simulador de expressões regulares http://tools.lymas.com.br/regexp_br.php# Considerações ER deve ser escrita iniciando com ^ ER deve ser finalizada com $ Manual http://www.gnu.org/s/libtool/manual/emacs/regexps.html Celso Olivete Júnior 44

REGEXP simulador de expressões regulares ER=(a+b)*c deve ser escrita da seguinte forma ^[a+b]*c$ Celso Olivete Júnior 45

REGEXP simulador de expressões regulares ER que reconhece identificadores de uma linguagem de programação deve ser escrita da seguinte forma ^[a-z_][0-9a-z_]*$ Celso Olivete Júnior 46

Exercícios 1. Descreva as linguagens denotadas pelas ER s abaixo sobre o alfabeto Σ = {0,1}. a- 0 + 10* b- (0 + 1)0* c- (0011)* d- (0 + 1)* 1(0 + 1)* e- 0*11*0 f- 0(0 + 1)*0 g- (ε + 0) (ε + 1) h- (000* + 1)* i- ( 0* + 0*11 (1 + 00*11)*) (ε + 00* ) Celso Olivete Júnior 47

Exercícios 2. Sobre o Σ={a,b}, defina expressões regulares que representam as linguagens cujas sentenças estão descritas a seguir: Possuem comprimento maior ou igual a 3; Possuem comprimento menor ou igual a 3; Possuem comprimento diferente de 3; Possuem comprimento par; Possuem comprimento ímpar; Possuem comprimento múltiplo de 4. 3. Fazer o conjunto de exercícios da seção 3.1 do livro do HOPCROFT, páginas 96 e 97. 4. Ler a descrição do Projeto que está no site, definir a dupla e começar a implementação. Obs: as resoluções dos exercícios 1, 2 e 3 deverão ser entregues até o dia 01/12. Celso Olivete Júnior 48