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

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

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

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

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

Como construir um compilador utilizando ferramentas Java

a n Sistemas de Estados Finitos AF Determinísticos

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

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

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos

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

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

Linguagens Formais e Autômatos P. Blauth Menezes

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

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

Linguagens Formais e Autômatos P. Blauth Menezes

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

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

Algoritmo de Minimização de AFD

Gramáticas Sensíveis ao Contexto (GSC) Linguagens Sensíveis ao Contexto (LSC) Autômatos Linearmente Limitados (ALL)

IV.2 Aspectos Léxicos Convencionais

1 Expressões Regulares e Linguagens

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

Compiladores. Análise Léxica

Compiladores - Análise Léxica

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

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

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

Python e sua sintaxe LNCC UFRJ

Compiladores Aula 3. Celso Olivete Júnior.

Compiladores - Análise Léxica

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

a n Autômatos com Pilha: Definição Informal e Definição Formal Linguagem Aceita por um ACP ACPDet X ACPND Notação gráfica para ACP

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

Linguagens Regulares. Prof. Daniel Oliveira

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

Análise Léxica. Função de um Analisador Léxico (AL) Erros Léxicos. Métodos para a Especificação e Reconhecimento dos tokens: ER e AF

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

Alfabeto, Cadeias, Operações e Linguagens

LR's: Lema do Bombeamento e Propriedades de Fechamento

INE5317 Linguagens Formais e Compiladores AULA 9: Propriedades e Reconhecimento das Linguagens Livres do Contexto

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

Tokens, Padroes e Lexemas

Programa fonte token padrões lexema Tokens

Prof. Adriano Maranhão COMPILADORES

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

Gramáticas Livres de Contexto

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

Compiladores. Introdução

Lema do Bombeamento para Linguagens Livres do Contexto

Compiladores - Análise Ascendente

Compiladores - Análise Ascendente

LINGUAGENS FORMAIS E AUTÔMATOS

Linguagens Livres de Contexto

Propriedades das Linguagens Livres do Contexto

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

Histórico e motivação

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados.

Conceitos de Linguagens de Programação

Compiladores - Autômatos

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

Propriedades de Linguagens Livres de Contexto. Propriedades de Linguagens Livres de Contexto. Propriedades de Linguagens Livres de Contexto

Construção de Compiladores

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

a * Lema do Bombeamento Linguagens regulares e não-regulares

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

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

Compiladores 02 Analise léxica

Função de um Analisador Léxico (Scanner)

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

Análise Léxica II. Eduardo Ferreira dos Santos. Setembro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 30

LLC's: Lema do Bombeamento e Propriedades de Fechamento

Transformações úteis para GLC: (1) eliminação de produções nulas; (2) eliminação de produções unitárias; (3) Eliminação de símbolos estéreis e

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

Linguagens Formais e Problemas de Decisão

Linguagens Não-Regulares

Analisador Léxico parte II

Estrutura geral de um compilador programa-fonte

Draft-v0.1. Máquinas de Turing Máquinas de Turing

Transcrição:

a n Operações Fechadas sobre LR s Aplicações (H&U, 969),(H&U, 979), (H;M;U, 200) e (Menezes, 2002) (Sipser,997)

Operações que preservam a propriedade de ser uma LR Existem muitas operações que, quando aplicadas a LR resultam em uma LR (dizemos que são fechadas). Entre elas temos: união, complemento e intersecção (operações booleanas), concatenação, fechamento, diferença e reverso (aa2...an an...a2a). Veremos a prova para as 6 primeiras propriedades acima. Elas são úteis também como ferramentas de construção de autômatos. Por exemplo, a propriedade da união ajuda a construir o autômato para: L(M) = { x {0,}* o nro de s em x é múltiplo de 3 OU de 4} e também o AF para o Analisador Léxico de um compilador 2

Propriedade de Fechamento das Linguagens da Hierarquia de Chomsky Fechamento sobre LR LLC LSC LEF união S concatenação S fechamento S complemento S intersecção S diferença S reverso S 3

Lema 3. (H&U, 69) União A classe das LR é fechada sobre a união. Se L é LR e L2 é LR então L L2 também é. PROVA: Sejam L e L2 reconhecidas por AF M = (Q,,,q0,F) e M2 = (Q2, 2, 2,r0,F2). Suponha Q Q2 = e s0 Q; s0 Q2. M3 = (Q Q2 {s0}, 2, 3, s0, F) é um AFND onde: 4

Se L ou L2 então F = F F2 {s0} cc. F = F F2 ) (s0,a) = { (q0,a), (r0,a)} para todo a 2 3 2) (q,a) = (q,a) para todo q Q e a 3) (q,a) = 2(q,a) para todo q Q2 e a 2 L(M3) = L(M) L(M2) Continuam os mesmos s0 5

Exemplo Use o Lema 3. para fazer um AFND que reconheça L(M) = { x {0,}* o nro de s em x é múltiplo de 3 OU de 4} 6

0 q0 0 q 0 q2 0 s0 0 0 0 r 0 r2 0 r0 r3 M3 =? 7

Outro Teorema para União de AF s No livro do Sipser, pag 59 a união é feita através de um AF com movimentos nulos. 8

Lema 3.2 (H&U, 69) - Complemento A classe dos conjuntos aceitos por um AF é fechada sobre o complemento (Se L é uma LR então L também é. Prova: M = (Q,,, q0,f) é um AF que aceita um conjunto S. Seja 2 um alfabeto contendo (pode ser o mesmo) e d um estado Q. M2 aceita 2* - S. M2 = (Q {d}, 2, 2, q0, (Q F) {d}) 9

2(q,a) = (q,a) para cada q Q e a (continua o anterior) 2(q,a) = d para cada q Q e a ( 2 - ) do particular estado 2(d,a) = d para cada a 2 Exemplo: Use o Lema 3.2 para reconhecer o complemento de L(M) = (x {}* x possui um nro impar de s}. Faça para 2 = = {} e para 2, isto é, 2 = {0...9} 0

q q2 Reconhece um nro par de s d D é um estado inacessível que pode ser eliminado. Portanto M pode ser reduzido M =?

q O,2,3,...9 O,,2,3,...9 q2 O,2,3,...9 Só não reconhece nro impar de s d M =? 2

Teo 3.6 (H&U, 69) - Intersecção A classe dos conjuntos aceitos por um AF forma uma Álgebra de Boole. Isto é, é uma coleção de conjuntos fechados sobre a união, complemento e intersecção. Prova: dos Lemas 3. e 3.2 e da Lei de Morgan, desde que a própria intersecção usa operações de união e complemento. L L2 = L L2 3

Teo 3.8 (H&U, 69) - Concatenação A classe dos conjuntos aceitos por um AF é fechada sobre o produto (ou concatenação). Prova: Seja M = (Q,,, q,f) aceitando L e M2 = (Q2, 2, 2, q2,f2) aceitando L2. Assumimos Q e Q2 disjuntos e = = 2. M3 = (Q Q2,, 3, q,f) é um AFND onde: 4

3(q,a) = { (q,a)} para cada q (Q F). M3 age como M para o começo da cadeia (possivelmente vazia) 3(q,a) = { (q,a), 2(q2,a)} para cada q F. M3 continua em M ou vai para M2 3(q,a) = { 2(q,a)} para cada q Q2. M3 age como M2 depois que a cadeia de entrada pertence a L2. Se L2 então F = F2 (vai aceitar em M2) Se L2 então F = F F2 (pode ser que não tenha nada em M2). 5

Exemplo Use o Lema 3.2 (complemento) e o Teo 3.8 (produto) para construir um AF M que a partir de M e M2 reconheça L = L. L2 M q0 0 q 0 q2 0 e0 M2 0 e2 0 e 6

7

8

Teo 3.9 (H&U, 69) - Fechamento A classe dos conjuntos aceitos por um AF é fechada sobre o fechamento. Prova: Seja M = (K,,, qo,f) um AF que aceita L. M = (K {qo },,, qo, F {qo }) aceita L*. qo é também final pois ao fecho (q,a) = { (q,a), qo)} se (q,a) F { (q,a)} c.c. para q K (todas as transições que estavam chegando no final, ganham uma cópia para voltar ao início) (qo,a) = { (qo,a),qo} se (qo,a) F { (qo,a)} cc 9

Exemplo Use o Teo 3.9 para construir um AF que reconheça o fecho de L = {0,} L* = {, 0,,00,0,0,, 000,...} 20

2

Teo 4.0 (H,M,U,200) Diferença Se L e M são linguagens regulares então L M também são. Prova: L M = L M. Como o complemento e a intersecção de linguagens regulares também são regulares, L M também é. 22

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. 23

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. 24

Já fizemos um AF para identificadores, inteiros do Pascal, e operadores relacionais Como exercício façam para os outros elementos do Vt. Atentem que os números reais, por exemplo, não são iguais em todas as linguagens. Algol e Fortran permitem 5. e.5 quando Pascal, por exemplo, não!! Para a modelagem de um AL podemos unir todos os AF s em um único que reconhecerá todo o Vt da linguagem escolhida. Nele também representamos o tratamento dado aos símbolos br/cr/lf/tab e comentários porém NÃO podemos reconhecer/aceitar esses elementos. 25

Observem, entretanto que a modelagem com AF mostra o que o Analisador Léxico deve reconhecer MAS não mostra como. Por exemplo, nada diz sobre o que fazer quando uma cadeia pode ter 2 análises como é o caso de: 2.3 (real ou inteiro seguido de ponto seguido de real) Ou <= (menor seguido de igual ou menor igual) OU Program (identificador ou palavra reservada program) 26

Regras de Desambiguação Assim, precisamos de regras para desambiguar esses casos. Usamos as regras: escolha a maior cadeia Dê preferência para a formação de: palavras-reservadas em detrimento de identificadores Estas regras estão embutidas em geradores de Analisadores Léxico, como o LEX. 27