Академический Документы
Профессиональный Документы
Культура Документы
Expresses 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 smbolo x uma ER e denota a linguagem {x} d) Se r e s so ER denotando as linguagens R e S ento:
(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*
Exemplos
(0+1)* 001 denota todas as cadeias de 0s e 1s terminadas em 001 0*1*2* denota qualquer nmero de 0s seguido por qualquer nmero de 1s seguido por qualquer nmero de 2s 01* + 10* denota a linguagem consistindo de todas as cadeias que so um nico 0 seguido por qualquer nmero de 1s OU um nico 1 seguido por qualquer nmero de 0s.
4
Omisso de parnteses
Para omitir parnteses devemos respeitar: O fecho (*) tem prioridade sobre a concatenao (rs), que tem prioridade sobre a unio. A concatenao e a unio so associadas da esquerda para a direita. Ex: 01* + 1 agrupado como (0(1*)) + 1 => L = {1, 0, 01, 011,...} Usamos parnteses 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 comea com 0 seguido de 1n | 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 trs 1s consecutivos. O conjunto de cadeias sobre {0,1} que tenha ao menos um 1. O conjunto de cadeias sobre {0,1} que tenha no mximo um 1.
6
Escreva a ER equivalente a:
O conjunto de cadeias sobre {0,1} que termine com trs 1s 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 mximo 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 expresses dos caminhos ou por reduo 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
ER
Teo 2.14 (Menezes 2002)
Teo 2.1 (H&U 79)
AFD
AFND
Teo 2.11 (Menezes 2002)
-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 aceitao nenhum arco chega no estado inicial nenhum arco sai do estado de aceitao. A prova por induo estrutural sobre R, seguindo a definio de ER: BASE: AF para as partes a, b, c da definio de ER.
10
(a)
a
(b) (c)
L(R) U L(S)
S L(R)L(S)
L(R*)
12
Exemplo
Seja a ER: (0+1)*1(0+1) cadeias sobre {0,1} cujo penltimo smbolo 1.
0+1
13
(0+1)*
1 (0+1)*1(0+1)
14
Propriedades algbricas das ER L + M = M + L (unio comutativa) (L + M) + N = L + (M + N) (unio associativa) (LM)N = L(MN) (concatenao associativa) A concatenao comutativa???
Exerccios
Escreva ERs para as linguagens dos: identificadores nmeros reais inteiros cadeias de caracteres e comentrios 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 no exigir e o seu real mnimo seria um inteiro: [+|-] D+ [.D+] [E [+|-] D+] [x] = (x| ) Inteiros: (+|-|) D+ = [+|-] D+ Cadeias: C* onde C ASCII menos (com essa limitao no tratamos os acentos para no perder expressividade)
18
Comentrios em Pascal
19
AL so modelados por AF para depois serem programados em uma linguagem de programao. Outra opo utilizar um gerador de analisadores lxicos como o Lex, Flex. A entrada para esses geradores uma expresso regular e a sada um programa que gerencia uma enorme tabela de transio de estados.
21