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

Documentos relacionados
a * Expressões Regulares (ER)

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

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

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

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

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

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

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

UNIDADE CURRICULAR: Liguagens e Computação CÓDIGO: DOCENTE: Prof. Jorge Morais. A preencher pelo estudante. NOME: Marc Paulo Martins

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

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

Referências. Linguagem C. Tipos de variáveis em XC8. Tipos de variáveis. Tipos de variáveis em XC 8 Exemplo. Radicais numéricos em C

Folha 3 - Análise léxica

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

Compilação da linguagem Panda

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos

Como construir um compilador utilizando ferramentas Java

Expressões regulares

Programa fonte token padrões lexema Tokens

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

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

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

a n Sistemas de Estados Finitos AF Determinísticos

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

1 d=

Compiladores - Análise Léxica

Representação de Dados e Sistemas de Numeração

Compiladores - Análise Léxica

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

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

Gramáticas Regulares

Linguagens regulares e expressões regulares

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

Expressões Regulares e Gramáticas Regulares

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

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

Operadores e separadores Identificadores Palavras chave Constantes

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

1 Expressões Regulares e Linguagens

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

Hello World. Linguagem C. Tipos de Dados. Palavras Reservadas. Operadores Aritméticos. Pré e pós incremento e pré e pós decremento

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

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

Programação de Computadores

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

Prova 1 de INF1626 Linguagens Formais e Autômatos

Introdução à Computação: Sistemas de Numeração

Prof. Adriano Maranhão COMPILADORES

Algoritmo de Minimização de AFD

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

Autómatos Finitos Determinísticos (AFD)

Objectivos. Observar os tipos fornecidos pelo C++ Explicar as regras sintácticas para nomes de identificadores Estudar variáveis e constantes

a n Sistemas de Estados Finitos AF Determinísticos

REPRESENTAÇÃO BINÁRIA. Sistemas de Numeração e Álgebra de Boole SNA0001

1 Expressões, valores e tipos 1. 2 Variáveis e atribuições 5. cálculo de expressões segue a estrutura de parênteses e as prioridades dos operadores

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

Linguagens de Programação Aula 4

O que faz/o que é Como usar Como funciona Formato geral do Arquivo Submetido ao Lex ER estendidas Exemplos The Lex & YACC page:

Utiliza Expressões Regulares (ER) Estendidas para definir a especificação da análise léxica desejada

Aula de hoje. Tipos de Dados e Variáveis. Constantes literais. Dados. Variáveis. Tipagem dinâmica. SCC Introdução à Programação para Engenharias

MCG114 Programação de Computadores I. Strings. Strings. Strings. Strings. Strings 3/26/18. Profa. Janaína Gomide

Fundamentos de Programação. Linguagem C++ aula II - Variáveis e constantes. Prof.: Bruno Gomes

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

Elementos Básicos. C# - Elementos básicos. Primeiro programa Tipos de dados Variáveis Constantes Expressões e operadores Controlo de fluxo Tabelas

Alfabeto, Cadeias, Operações e Linguagens

Fundamentos da Teoria da Computação

Curso de Formação LPIC-1 Exame 101

Utilizando cin: primeiros passos

Propriedades de Fecho de Linguagens Regulares.

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

Compiladores LEIC Alameda 2 o Semestre 2009/2010 Linguagem Pipoca Manual de Referência 5 de Abril de 2010

Histórico e motivação

Nomes de variáveis Todo nome de variável deve iniciar com uma letra ou sublinha _.

Autômatos e computabilidade

a * Minimização de AFD AFD equivalente, com o menor número de estados possível

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

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

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

Tratamento de Caracteres

Programação de Computadores

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

Programação com Acesso a BD. Programação com OO Acesso em Java

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

Notação EBNF BNF estendida Notação usada com o YACC (gerador de parsers Bottom-up)

DIBELS TM. Portuguese Translations of Administration Directions

Linguagem C. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná

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

Notação EBNF BNF estendida Notação usada com o YACC (gerador de parsers Bottom-up)

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

GBC015: INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO Execução de Algoritmos: Sistema Binário e Hexadecimal

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

Linguagens Formais e Problemas de Decisão

Caracteres e Cadeias de Caracteres

Programação de Computadores II. Cap. 7 Cadeias de Caracteres 1/2

LINGUAGEM DE PROGRAMAÇÃO C AULA 2. Professor: Rodrigo Rocha

LINGUAGENS FORMAIS E AUTÔMATOS

Transcrição:

a * Expressões Regulares (ER) Conversão de AF para ER no JFLAP Equivalências entre AFD, AFND, AF-λ (AF com movimentos nulos), ER, GR 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 u R e v S} (r*) é ER e denota a linguagem R* 2

Exemplos 1. 00 é uma ER denotando a linguagem {00} 2. (0+1)* denota a linguagem formada por todas as cadeias de 0 s e 1 s = {λ, 0, 1, 00,01,10,11,000,...] Pode ser também (a*b*)* 3. (0+1)* 00 (0+1)* denota todas as cadeias de 0 s e 1 s com ao menos dois 0 s consecutivos 4. a+b*c denota um único a e todas as cadeias consistindo de zero ou mais vezes b seguido de c. A linguagem é formada por {a, c, bc, bbc, bbbc,...} 3

Exemplo 4 - JFLAP 4

(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 e um único 1 seguido por qualquer número de 0 s = {0,01,011,...,1,10,100,...} 5

01* + 10* AFD 6

01* + 10* AF-λ 7

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,...} 8

Exercícios 1. O conjunto de cadeias sobre {0,1} que termine com três 1 s consecutivos. 2. O conjunto de cadeias sobre {0,1} que tenha ao menos um 1. 3. O conjunto de cadeias sobre {0,1} que tenha no máximo um 1. 9

Exemplo 3 O conjunto de cadeias sobre {0,1} que tenha no máximo um 1. 0*(λ+(0+1)0*) podem usar λ para simplificar a ER que seria: 0* (1+0) 0* + 0* 10

11

Conversão de AF para ER no JFLAP Insira um novo estado final como pede o JFLAP L(M1) = (x {1}* x possui um nro par de 1 s}. 12

Clique em Do it! 13

Coloque transições nulas nos estados sem transição Clique em Do it! 14

Completa as 6 transições faltantes Clique em Do it! 15

Grafo terminado (11)* 16

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) Exercício: a concatenação é comutativa??? + L = L + = L ( é o elemento nulo para união) λl = Lλ = L (λ é o elemento nulo para concatenação) L = L = 17

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 LR usadas em utilitários do UNIX L + = LL* L? = (L + λ) (usado no Lex para indicar opcional) 18

Exercícios Faça ER para: identificadores números reais com sinais Inteiros com sinais cadeias de caracteres (imprimíveis) e comentários do Pascal. reais do Fortran (.5 e 5. além dos padrões de reais de Pascal) 19

Sobre Non-Printable Characters (1) http://www.regular-expressions.info/characters.html You can use special character sequences to put non-printable characters in your regular expression. Use \t to match a tab character (ASCII 0x09), \r for carriage return (0x0D) and \n for line feed (0x0A). More exotic non-printables are \a (bell, 0x07), \e (escape, 0x1B), \f (form feed, 0x0C) and \v (vertical tab, 0x0B). Remember that Windows text files use \r\n to terminate lines, while UNIX text files use \n. 20

Sobre Non-Printable Characters (2) You can include any character in your regular expression if you know its hexadecimal ASCII or ANSI code for the character set that you are working with. In the Latin-1 character set, the copyright symbol is character 0xA9. So to search for the copyright symbol, you can use \xa9. Another way to search for a tab is to use \x09. Note that the leading zero is required. 21

Sobre Non-Printable Characters (3) Most regex flavors also support the tokens \ca through \cz to insert ASCII control characters. The letter after the backslash is always a lowercase c. The second letter is an uppercase letter A through Z, to indicate Control+A through Control+Z. These are equivalent to \x01 through \x1a (26 decimal). E.g. \cm matches a carriage return, just like \r and \x0d. In XML Schema regular expressions, \c is a shorthand character class that matches any character allowed in an XML name. If your regular expression engine supports Unicode, use \uffff rather than \xff to insert a Unicode character. The euro currency sign occupies code point 0x20AC. If you cannot type it on your keyboard, you can insert it into a regular expression with \u20ac. 22

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+] Inteiros: (+ - λ) D + = [+ -] D+ Cadeias: C* onde C é ASCII menos (com essa limitação não tratamos os acentos na moda antiga do Pascal para não perder expressividade) 23

Comentários em Pascal { C* } onde C é ASCII menos } /* C* * (* + EC* * )* / onde C é ASCII menos * e E é ASCII menos / e * A solução acima vem do AF para comentários (próximo slide) 24

AF que reconhece comentários da forma /*... */ AFD 25

/* C* * (* + EC* * )* / 26

Reais Fortran (+ - λ) (D +..D + D +. D + ) (E (+ - λ) D + λ) Ou [+ -] (D +..D + D +. D + ) [E [+ -] D+] 27

Equivalências entre AFD, AFND, AF-λ, ER, GR Trivial2: decorre da definição Teo 2.14 (Menezes 2002) ER Teo 2.13 (Menezes 2002) Teo 2.1 (H&U 79) AFD AFND AF-λ trivial1 GR trivial2 Teo 2.11 (Menezes 2002) Teo 3.5 (H&U, 69) Teo 2.18 (Menezes 2002) Trivial1: colocar { } nos estados 28