a * Expressões Regulares (ER) AF e ER Equivalências entre AFD, AFND, AF-, ER

Documentos relacionados
a * Expressões Regulares (ER) Conversão de AF para ER no JFLAP Equivalências entre AFD, AFND, AF-, ER, GR

Expressões Regulares (ER) Uma ER sobre um alfabeto Σ é definida como: a) é uma ER e denota a linguagem vazia b) λ é uma ER e denota a linguagem conten

a * Expressões Regulares (ER)

Operações Fechadas sobre LR s Aplicações

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

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

AF Não-determinísticos Equivalência entre AFDN e AFD Equivalência entre AF e GR (H&U, 1969 e 1979), (H;M;U, 2001) e (Menezes, 2002) 1

AF Não-determinísticos Equivalência entre AFDN e AFD Equivalência entre AF e GR (H&U, 1969 e 1979), (H;M;U, 2001) e (Menezes, 2002) 1

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

a n Sistemas de Estados Finitos AF Determinísticos (H&U, 1979) e (H;M;U, 2001)

1 Expressões Regulares e Linguagens

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

Sistemas de Estados Finitos AF Determinísticos. (H&U, 1979) e (H;M;U, 2001)

Programa fonte token padrões lexema Tokens

Como construir um compilador utilizando ferramentas Java

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

Expressões Regulares e Gramáticas Regulares

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

Prof. Adriano Maranhão COMPILADORES

EXPRESSÃO REGULAR PARA UMA FUNÇÃO EQUIVALENTE EM PASCAL, UTILIZANDO DOIS ALGORITMOS BASEADOS NO TEOREMA DE KLEENE RONALD GLATZ

Identificadores Nome de variáveis, constantes, métodos, etc...

Lema do Bombeamento Operações Fechadas sobre LR s Aplicações

O que é Linguagem Regular. Um teorema sobre linguagens regulares. Uma aplicação do Lema do Bombeamento. Exemplo de uso do lema do bombeamento

IV.2 Aspectos Léxicos Convencionais

Análise Léxica. Fundamentos Teóricos. Autômatos Finitos e Conjuntos Regulares (cap. III da apostila de Linguagens Formais e Compiladores)

Linguagens regulares e expressões regulares

Lema do Bombeamento Operações Fechadas sobre LR s Aplicações

Folha 3 - Análise léxica

Análise Léxica. O papel do analisador léxico

Compiladores. Prof. Bruno Moreno Aula 8 02/05/2011

Histórico e motivação

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

Autômatos e computabilidade

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

Compiladores - Análise Léxica

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Análise léxica. Parte 01. Geovane Griesang

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

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

Exemplo preliminar. Considere a linguagem dos Palíndromos Lpal:

AF Não-determinísticos Equivalência entre AFND e AFD

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

a n Sistemas de Estados Finitos AF Determinísticos

Compiladores - Análise Léxica

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

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

Gramáticas Regulares

Expressões Regulares. Tiago Alves de Oliveira

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO II Campus Rio Pomba

Apostila 02. Objetivos: Estudar os autômatos finitos Estudar as expressões regulares Estudar as gramáticas regulares Estudar as linguagens regulares

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

Expressões regulares

Construção de Compiladores

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos

Algoritmo de Minimização de AFD

Compiladores. Conceitos Básicos

AFNs, Operações Regulares e Expressões Regulares

TRANSFORMAÇÃO DE GRAMÁTICAS LIVRES DO CONTEXTO PARA EXPRESSÕES REGULARES ESTENDIDAS

AF Não-determinísticos Equivalência entre AFND e AFD AFs e GRs Implementação de AFs

Exemplo preliminar. Considere a linguagem dos Palíndromos Lpal:

Compiladores. Análise Léxica

Compiladores 04 Analise léxica Jflex. Prof José Rui

Analisador Léxico parte II

Linguagens Formais e Autômatos P. Blauth Menezes

INE5317 Linguagens Formais e Compiladores AULA 6: Propriedades das Linguagens Regulares

Linguagens Regulares. Prof. Daniel Oliveira

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

Compiladores Aula 3. Celso Olivete Júnior.

a n Sistemas de Estados Finitos AF Determinísticos

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

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

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

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 31. Instituto de C

Máquina de Turing. Controle finito

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

Gramáticas Livres de Contexto Parte 1

Propriedades de Fecho de Linguagens Regulares.

LINGUAGENS FORMAIS E AUTÔMATOS

I LINGUAGENS E PROCESSADORES: INTRODUÇÃO 1

Linguagens de Programação Aula 3

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

1 d=

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?

Papel do analisador léxico: ler o arquivo fonte em busca de unidades significativas (os tokens) instanciadas por lexemas ou átomos.

COMPILADORES. Análise léxica. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática

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

Linguagens Livres de Contexto

COMPILADORES. Análise sintática. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática

Folha 2 Autómatos e respectivas linguagens

Conceitos de Linguagens de Programação

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

Linguagens Livres de Contexto

Autômatos com Pilha: Reconhecedores de LLCs

Linguagens Regulares, Operações Regulares

Linguagens Regulares, Operações Regulares

Compiladores 02 Analise léxica

Compiladores. Análise Léxica

Transcrição:

a * Expressões Regulares (ER) AF e ER Equivalências entre AFD, AFND, AF-, ER 1

Expressões Regulares (ER) Uma ER sobre um alfabeto é definida como: a) é uma ER e denota a linguagem vazia b) é uma ER e denota a linguagem contendo a palavra vazia, ie {} c) Qualquer símbolo x é uma ER e denota a linguagem {x} d) Se r e s são ER denotando as linguagens R e S então: (r+s) ou (r s) é ER e denota a linguagem R S (rs) é ER e denota a linguagem RS = {w=uv u R e v S} (r*) é ER e denota a linguagem R* 2

Exemplos 00 é uma ER denotando a linguagem {00} (0+1)* denota a linguagem formada por todas as cadeias de 0 s e 1 s (0+1)* 00 (0+1)* denota todas as cadeias de 0 s e 1 s com ao menos dois 0 s consecutivos a+b*c denota um único a ou zero ou mais vezes b seguido de c 3

(0+1)* 001 denota todas as cadeias de 0 s e 1 s terminadas em 001 0*1*2* denota qualquer número de 0 s seguido por qualquer número de 1 s seguido por qualquer número de 2 s 01* + 10* denota a linguagem consistindo de todas as cadeias que são um único 0 seguido por qualquer número de 1 s OU um único 1 seguido por qualquer número de 0 s. 4

Omissão de parênteses Para omitir parênteses devemos respeitar: O fecho (*) tem prioridade sobre a concatenação (rs), que tem prioridade sobre a união. A concatenação e a união são associadas da esquerda para a direita. Ex: 01* + 1 é agrupado como (0(1*)) + 1 => L = {1, 0, 01, 011,...} Usamos parênteses quando queremos alterar a prioridade: (01)* + 1 => L = {1 U (01) n n >= 0} = {1,, 01, 0101,...} 0(1* + 1) => L = {w {0,1}* w começa com 0 seguido de 1 n n>=0} Lei distributiva à esq = 01* + 01 = {0,01,011,0111,...} 5

Escreva a ER equivalente a: O conjunto de cadeias sobre {0,1} que termine com três 1 s consecutivos. O conjunto de cadeias sobre {0,1} que tenha ao menos um 1. O conjunto de cadeias sobre {0,1} que tenha no máximo um 1. 6

Escreva a ER equivalente a: O conjunto de cadeias sobre {0,1} que termine com três 1 s consecutivos. (0+1)*111 O conjunto de cadeias sobre {0,1} que tenha ao menos um 1. (0+1)*1(0+1)* O conjunto de cadeias sobre {0,1} que tenha no máximo um 1. 0*(1+)0* 7

AF e ER AF e ER representam exatamente o mesmo conjunto de linguagens, as Linguagens Regulares. Para mostrar isso, deve-se mostrar que: toda linguagem definida por um AFD ou AFND é definida por uma ER. (por expressões dos caminhos ou por redução de estados) toda linguagem definida por uma ER é definida por um AFD ou AFND. (na verdade, mostra-se que existe um -AFND que aceita a mesma linguagem) 8

Equivalências entre AFD, AFND, -AF, ER Teo 2.14 (Menezes 2002) ER Teo 2.13 (Menezes 2002) Teo 2.1 (H&U 79) AFD AFND -AF Teo 2.11 (Menezes 2002) 9

Teorema: Toda linguagem definida por uma ER também é definida por um AF Prova: Suponha que L=L(R) para uma ER R. Mostraremos que L=L(E) para algum - AFND E com: exatamente um estado de aceitação nenhum arco chega no estado inicial nenhum arco sai do estado de aceitação. A prova é por indução estrutural sobre R, seguindo a definição de ER: BASE: AF para as partes a, b, c da definição de ER. 10

(a) (b) a (c) INDUÇÃO: AF para a parte (d) da definição de ER. Se R e S são AF para as respectivas ER R e S, então: R L(R) U L(S) S 11

R S L(R)L(S) R L(R*) 12

Exemplo Seja a ER: (0+1)*1(0+1) cadeias sobre {0,1} cujo penúltimo símbolo é 1. 0 0+1 1 (0+1)* 0 1 13

0 1 1 0 (0+1)*1(0+1) 1 14

Propriedades algébricas das ER L + M = M + L (união é comutativa) (L + M) + N = L + (M + N) (união é associativa) (LM)N = L(MN) (concatenação é associativa) A concatenação é comutativa??? + L = L + = L ( é o elemento nulo para união) L = L = L ( é o elemento nulo para concatenação) L = L = 15

L(M + N) = LM + LN (lei distributiva à esq) (M + N)L = ML + NL (lei distributiva à dir) L + L = L (L*)* = L* * = * = Algumas extensões de ER usadas em utilitários do UNIX L + = LL* L? = (L + ) (usado no Lex para indicar opcional) 16

Exercícios Escreva ERs para as linguagens dos: identificadores números reais inteiros cadeias de caracteres e comentários do Pascal. 17

Pascal, com L = {a..z,a..z}; D = {0..9} ID: (L _)(L D _)* Reais: (+ - ) (D +. D + (E (+ - ) D + ) D + (. D + ) E (+ - ) D + ) Observem que acima exigimos que o real tenha uma parte com ponto fixo ou com ponto flutuante, mas a linguagem pode não exigir e o seu real mínimo seria um inteiro: [+ -] D + [.D + ] [E [+ -] D + ] [x] = (x ) Inteiros: (+ - ) D + = [+ -] D + Cadeias: C* onde C é ASCII menos (com essa limitação não tratamos os acentos para não perder expressividade) 18

Comentários em Pascal { C* } onde C é ASCII menos } 19

Aplicações: Analisadores Léxicos Analisadores léxicos (AL) de compiladores. O AL é a interface entre o programa fonte e o resto do compilador. Ele é responsável principalmente por: empacotar os caracteres do programa e lhes dar um rótulo que será usado pelo analisador sintático montar a árvore sintática. Os rótulos são: identificadores, os nomes dos símbolos simples (<, =, [, ), etc.), os nomes dos símbolos compostos (:=, <>, <=,.., etc.), constantes inteiras, constantes reais, constantes literais (cadeias e caracteres) constantes lógicas (true/false), o nome das palavras-chaves. 20

AL são modelados por AF para depois serem programados em uma linguagem de programação. Outra opção é utilizar um gerador de analisadores léxicos como o Lex, Flex. A entrada para esses geradores é uma expressão regular e a saída é um programa que gerencia uma enorme tabela de transição de estados. 21