Gramá3ca Livre de Contexto (GLC)

Documentos relacionados
Aula 8: Gramáticas Livres de Contexto

LLC's: Lema do Bombeamento e Propriedades de Fechamento

Gramática Livre de Contexto

Se o símbolo inicial não fizer parte do conjunto de símbolos férteis, a linguagem gerada pela gramática é vazia.

IV Gramáticas Livres de Contexto

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

COMPILADORES. Revisão Linguagens formais Parte 02. Prof. Geovane Griesang

Gramática Livre de Contexto

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

Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

Transformação de AP para GLC

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

Gramática. Gramática. Gramática

Compiladores Aula 4. Celso Olivete Júnior.

Capítulo Métodos para transformar gramáticas ái Duas formas Normais (Chomsky e Greibach) ADC/TC/Cap.6/ /LEI/DEIFCTUC 268

Gramáticas Livres de Contexto

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

Linguagens Formais - Preliminares

Teoria da Computação Gramáticas, Linguagens Algébricas e Autómatos de Pilha

V Análise Sintática. V.1.1 Gramáticas Livres de Contexto Definições de GLC

Linguagens Formais e Autômatos. Simplificação de Gramáticas Livre do Contexto (GLC)

Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais

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

Automata e Linguagens Formais

Linguagens Livres de Contexto

Gramáticas Livres de Contexto Parte 1

Análise Sintática. Fabiano Baldo

A. (Autómatos finitos determinísticos e não determinísticos AFD e AFND)

SCC Capítulo 2 Linguagens Livres de Contexto e Autômatos de Pilha (versão 2)

Autômatos Finitos Determinís3cos (AFD)

A. (Autómatos finitos determinísticos e não determinísticos AFD e AFND)

Linguagens Formais e Autômatos P. Blauth Menezes

Linguagens Formais e Autômatos P. Blauth Menezes

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

Construção de Compiladores

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

Formas normais. Forma normal de Greibach (FNG) todas as produções são da forma

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

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

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

Exercícios Associados à Aula 28 (27/11/2013) Feitos em sala e em equipes

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

LR's: Lema do Bombeamento e Propriedades de Fechamento

Plano da aula. Compiladores. Os erros típicos são sintáticos. Análise Sintática. Usando Gramáticas. Os erros típicos são sintáticos

Capítulo 3: Gramáticas

Linguagens Formais e Autômatos P. Blauth Menezes

INE5416 Paradigmas de Programação. Ricardo Azambuja Silveira INE CTC UFSC E Mail: URL:

Marcos Castilho. DInf/UFPR. 5 de abril de 2018

As linguagens regulares são I.C Proposição Qualquer linguagem regular é independente de contexto.

Introdução à Programação

Gramática regular. IBM1088 Linguagens Formais e Teoria da Computação. Evandro Eduardo Seron Ruiz Universidade de São Paulo

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

Linguagens Livres de Contexto

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

Sintaxe e Semântica. George Darmiton da Cunha Cavalcanti.

Compiladores Analisador Sintático. Prof. Antonio Felicio Netto Ciência da Computação

Variações de Máquinas de Turing

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

Linguagens Livres de Contexto

Autômatos de Pilha. ( n x 0 +x 1 )+x 2 ) +x n )

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

Hierarquia de Chomsky Exemplos de gramáticas

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

IBM1088 Linguagens Formais e Teoria da

Apostila 05 Assunto: Linguagens dos tipos 0 e 1

Expressões Regulares e Gramáticas Regulares

Faculdade de Computação

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

Linguagens livres de contexto e autômatos de pilha

Gramáticas e Linguagens Independentes de Contexto

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

SCC Capítulo 3 Linguagens Sensíveis ao Contexto e Autômatos Limitados Linearmente

Python e sua sintaxe LNCC UFRJ

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

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

Compiladores. Exemplo. Caraterísticas de Gramáticas. A αβ 1 αβ 2. A αx X β 1 β 2. Lembrando... Gramáticas Livres de Contexto

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

Transcrição:

Linguagens Formais e Autômatos Gramá3ca Livre de Contexto (GLC) Andrei Rimsa Álvares Material extraído do livro e slides do Prof. Newton Vieira (hep://dcc.ufmg.br/~nvieira)

Sumário Gramá4cas livres de contexto (GLC s) Derivações e ambiguidade Manipulação de GLC s

GRAMÁTICAS LIVRES DE CONTEXTO (GLC S) Linguagens Formais e Autômatos

BNF Exemplo de uma gramá4ca livre de contexto em notação BNF (Backus-Naur Form) para definir parte da sintaxe de uma LP programa! declarações ; lista-de-cmds. lista-de-cmds! comando ; lista-de-cmds λ comando! cmd-enquanto cmd-se cmd-atribuição... cmd-enquanto! enquanto exp-lógica faça lista-de-cmds fimenquanto cmd-se! se exp-lógica então lista-de-cmds senaoses senao fimse senaoses! senão se exp-lógica então lista-de-cmds senaoses λ Do lado esquerdo da regra possui apenas uma variável, do lado direito qualquer combinação de variáveis e terminais

Gramá4ca Livre de Contexto Definição: Uma gramá4ca livre de contexto (GLC) é uma gramá4ca (V,Σ,R,P), em que cada regra tem a forma X w, onde X V e w (V Σ) Repare que uma Gramá3ca Regular é um caso especial de Gramá3ca Livre de Contexto Exemplo: a linguagem não regular {0 n 1 n n N} é gerada pela GLC G = ({P}, {0,1}, R, P), onde R consta das duas regras: P 0P1 λ As palavras são geradas por n (n 0) aplicações da regra P 0P1, seguida de uma aplicação de P λ n P 0 n P1 n 0 n 1 n

L = { w {0,1} * w = w R } Mais Exemplos G = ({P}, {0,1}, R, P), onde R consta das 5 regras: P 0P0 1P1 0 1 λ L = { w {0,1} * o número de 0s é igual ao número de 1s em w } G = ({P}, {0,1}, R, P), onde R consta das 3 regras: P 0P1P 1P0P λ

Ainda Outro Exemplo Seja a GLC ({E, T, F}, {t, +, *, (, )}, R, E), para expressões aritmé4cas, onde R consta das regras: E E + T T T T * F F F (E) t Esse exemplo será u4l a frente E E + T T: uma expressão ar4mé4ca (E) é formada por um ou mais termos (T s) somados T T * F F: um termo (T) é formado por um ou mais fatores (F s) mul4plicados F (E) t: um fator é um terminal (t) ou, recursivamente, uma expressão ar4mé4ca entre parênteses

Linguagem Livre de Contexto Definição: Uma linguagem é dita ser uma linguagem livre do contexto se existe uma gramá4ca livre do contexto que a gera Linguagem Livre de Contexto Por que a linguagem é chamada de livre de contexto?

DERIVAÇÕES E AMBIGUIDADE Linguagens Formais e Autômatos

Árvore de Derivações Uma árvore de derivação (AD) captura a essência de uma derivação, a história da obtenção de uma forma sentencial (que não depende da ordem de aplicação das regras) Definição: Seja uma GLC G = (V, Σ, R, P ). Uma árvore de derivação (AD) é construída recursivamente como se segue: a) Uma árvore com apenas o vér4ce de rótulo P é uma AD b) Se X V é rótulo de uma folha f de uma AD, então: i) se X λ R, então a árvore ob4da acrescentando-se mais um vér4ce v com rótulo λ e uma aresta {f, v} é uma AD ii) se X x 1 x 2 x n R, onde x 1, x 2,, x n (V Σ), então a árvore ob4da acrescentando-se mais n vér4ces v 1, v 2,..., v n com rótulos x 1, x 2,..., x n, nessa ordem, e n arestas {f, v 1 }, {f, v 2 },..., {f, v n }, é uma AD

Exemplo Considere a gramá4ca a seguir E E + T T T T F F F (E) t A AD para t * (t + t) pode ser construída passo a passo E T Derivações: E T (regra E T) Qual é a próxima regra aplicável?

Exemplo Considere a gramá4ca a seguir E E + T T T T F F F (E) t A AD para t * (t + t) pode ser construída passo a passo E T Derivações: E T (regra E T) T * F (regra T T * F) T * F Qual regra se deve derivar agora?

Exemplo Considere a gramá4ca a seguir E E + T T T T F F F (E) t A AD para t * (t + t) pode ser construída passo a passo E E T T * F Derivações: E T T * F F * F T T * F Derivações: E T T * F T * ( E ) F ( E )

E T Exemplo Algumas regras podem ser alternadas na derivação e ainda sim gerar a mesma AD T * F F ( E ) t E + T T F t F t A árvore de derivação completa para t * (t + t) Derivações: E T (regra E T) T * F (regra T T * F) F * F (regra F t) t * F (regra F ( E )) t * ( E ) (regra E ( E + T )) t * ( E + T ) (regra E ( T )) t * ( T + T ) (regra E T) t * ( F + T ) (regra T F) t * ( t + T ) (regra F t) t * ( t + F ) (regra T F) t * ( t + t ) (regra F t)

E Exemplo T T * F F ( E ) t E + T T F A árvore de derivação completa para t * (t + t) Observações: Número de passos da derivação: número de vér4ces internos A estrutura da AD é normalmente u4lizada para associar significado Mais de uma AD para w mais de um significado para w F t t Pode exis4r mais de uma derivação para uma palavra w de uma gramá4ca G?

Ambiguidade Definição: Uma GLC é dita ambígua quando existe mais de uma AD para alguma sentença que ela gera Exemplo: uma GLC G = ({E}, {t, +,, (, )}, R, E) de expressões aritmé4cas ambíguas, onde R consta das regras: E E + E E * E (E) t Existe mais de uma derivação para a sentença t+t*t? Cuidado: a ambiguidade é da gramá4ca e não da linguagem que ela gera

Demonstrando a Ambiguidade A ambiguidade pode ser demostrada gerando duas árvores de derivação para uma sentença da linguagem para a gramá4ca Exemplo: sentença t+t*t para a gramá4ca do exemplo anterior E E E + E E * E t E * E E + E t t Significado: t + (t * t) t t Significado: (t + t) * t t

Dois Tipos de Derivações Derivação mais à esquerda: Uma derivação é dita mais à esquerda (DME) se em cada passo é expandida a variável mais à esquerda (pode-se usar o símbolo E ) Derivação mais à direita: Uma derivação é dita mais à direta (DMD) se em cada passo é expandida a variável mais à direita (pode-se usar o símbolo D ) Existe uma única DME e uma única DMD correspondentes a uma AD

Ambiguidades DME/DMD Como existe uma única DME e uma única DMD correspondentes a uma AD, pode-se dizer que: uma GLC é ambígua se, e somente se, existe mais de uma DME para alguma sentença que ela gera uma GLC é ambígua se, e somente se, existe mais de uma DMD para alguma sentença que ela gera

Exemplo Para a mesma gramá4ca de expressões aritmé4cas, pode-se mostrar usando somente DMD que a gramá4ca é ambígua E E E + E E + E t E + E E + E t E D E + E D E + E + E D E + E + t D E + t + t D t + t + t t t t t E D E + E D E + t D E + E + t D E + t + t D t + t + t

Linguagens Inerentemente Ambíguas Existem linguagens livres do contexto (LLC s) para as quais existem apenas gramá4cas ambíguas, essas são chamadas de linguagens inerentemente ambíguas Exemplo: L = { a m b n c k m = n ou n = k } Pode-se mostrar que qualquer GLC que gere tal linguagem terá mais de uma AD para a n b n c n

Conclusão A detecção e remoção de ambiguidade é muito importante Ex.: gramá4ca para geração de um compilador para uma LP Cuidado: o problema de determinar se uma GLC é ambígua é indecidível Uma linguagem pode ser gerada por inúmeras gramá4cas, mas algumas gramá4cas podem ser mais adequadas que outras dependendo do contexto Existem técnicas para manipulação de GLC s que não alteram a linguagem gerada

MANIPULAÇÃO DE GLC S Linguagens Formais e Autômatos

Manipulação de Gramá4cas Uma gramá4ca pode ser manipulada, sem alterar a linguagem que ela gere Eliminando variáveis inúteis Eliminando regras λ Eliminando regras unitárias

Variáveis Inúteis Definição: Seja uma GLC G = (V, Σ, R, P). Uma variável X V é dita ser uma variável ú3l se, e somente se, existem u,v (V Σ) e w Σ tais que: * * P uxv w Exemplo: GLC G = (V, Σ, R, P), com as seguintes regras R P AB a B B b C c Existem variáveis inúteis nessa gramá4ca?

Exemplo Seja a GLC G = (V, Σ, R, P), onde R é formado pelas regras P AB a B B b C c As seguintes variáveis são inúteis: C: não existem u e v tais que P ucv A: não existe w Σ * tal que A w * B: P ubv apenas para u = A e v = λ, e não existe w Σ * tal que AB w * Gramá4ca equivalente sem símbolos inúteis: P a

Eliminação de Variáveis Inúteis Definição: Seja uma GLC G tal que L(G). Existe uma GLC, equivalente a G, sem variáveis inúteis Seja G = (V, Σ, R, P) tal que L(G). Uma GLC G equivalente a G, sem variáveis inúteis, pode ser construída em dois passos: a) Obter G = (V, Σ, R, P), em que: * V = { X V X G w para algum w Σ } R = { r R r não contém símbolos de V V } b) Obter G = (V, Σ, R, P), em que: * V = { X V P G uxv para algum u, v (V Σ) * } R = { r R r não contém símbolos de V V }

Algoritmo: parte (a) Algoritmo para determinar varíaveis que produzem sentenças: * { X V X w para algum w Σ } Entrada: GLC G = (V, Σ, R, P) Saída: I 1 = { X V X w para algum w Σ } I 1 repita N { X I 1 X z R e z (I 1 Σ) * } I 1 I 1 N até N = retorne I 1

Algoritmo: parte (b) Algoritmo para determinar variáveis alcançáveis a par3r de P: * { X V P uxv para algum u, v (V Σ) * } Entrada: GLC G = (V, Σ, R, P) * Saída: I 2 = { X V P uxv para algum u, v (V Σ) * } I 2 N { P } repita I 2 I 2 N N { Y I 2 X uyv para algum X N e u,v (V Σ) * } até N = retorne I 2

Exemplo Seja a gramá4ca G = ({A, B, C, D, E, F}, {0, 1}, R, A}), onde R contém as regras: Aplicando o algoritmo (a): A ABC AEF BD B B0 0 C 0C EB D 1D 1 E BE F 1F1 1 Aplicando o algoritmo (b): V = { B, D, F,A } V = { A, B, D } A BD B B0 0 D 1D 1 F 1F1 1 A BD B B0 0 D 1D 1

Eliminação de uma Regra Uma regra da forma X w, onde X não é a variável de par4da, pode ser eliminada simulando sua aplicação em todos os contextos possíveis: para cada ocorrência de X do lado direito de uma regra, subs4tui-se por w Teorema: Seja uma GLC G = (V, Σ, R, P). Seja X w R, X P. Seja a GLC G = (V, Σ, R, P), onde R é ob4do assim: a) para cada regra de R em que X não ocorre do lado direito, exceto X w, coloque-a em R b) para cada regra de R da forma Y x 1 X 1 x 2 X 2...X n x n+1, com pelo menos uma ocorrência de X do lado direito, com n 1 e x i [(V {X}) Σ] *, coloque em R todas as regras da forma Y x 1 Y 1 x 2 Y 2...Y n x n+1, sendo que cada Y j pode ser X ou w, com exceção da regra X w G é equivalente a G

Algoritmo Algoritmo para eliminação de uma regra

Exemplo Seja a gramá4ca G = ({P, A, B}, {a, b, c}, R, P}), onde R contém as regras: P ABA A aa a B bbc λ Como é a derivação de aa em G? A GLC G = ({P, A, B}, {a, b, c}, R, P}), equivalente a G, pode ser ob4da eliminando-se a regra A a P ABA ABa aba aba A aa aa B bbc λ Como é a derivação de aa em G?

Variável Anulável Definição: uma variável X é anulável em uma GLC G se, e somente se, X G λ Algoritmo para determinar variáveis anuláveis Entrada: GLC G = (V, Σ, R, P) * Saída: A = { X V X λ } A repita N { Y A Y z R e z A * } A A N até N = retorne A

Eliminação de Regras λ Seja G = (V, Σ, R, P). Seja G = (V, Σ, R, P) em que R é ob4do assim: a) para cada regra de R cujo lado direito não contém variável anulável, exceto regra λ, coloque-a em R b) para cada regra de R da forma Y x 1 X 1 x 2 X 2...X n x n+1, sendo cada X i uma variável anulável, com n 1 e cada x i sem variáveis anuláveis, coloque em R todas as regras da forma Y x 1 Y 1 x 2 Y 2...Y n x n+1, em que cada Y j pode ser X j ou λ, com exceção da regra λ c) Se P for anulável, coloque P λ em R L(G) = L(G ) e sua única regra λ, se houver, é P λ

Algoritmo Algoritmo para eliminação de regras λ

Exemplo Seja a gramá4ca G = ({P, A, B, C}, {a, b, c}, R, P}), onde R contém as regras: P APB C A AaaA λ B BBb C C cc λ Obtendo o conjunto de variáveis anuláveis A = { A, C, P, B } Eliminando as variáveis anuláveis P APB AP AB PB A B C λ A AaaA aaa Aaa aa B BBb Bb b C C cc c A regra P P foi descartada por mo4vos óbvios

Variáveis Encadeadas Definição: Seja uma gramá4ca G = (V, Σ, R, P). Diz-se que uma variável Z V é encadeada a uma variável X V se Z = X ou se existe uma sequência de regras X Y 1, Y 1 Y 2,..., Y n Z em R, n 0; quando n = 0 tem-se apenas a regra X Z. Ao conjunto de todas as variáveis encadeadas a X é dado o nome de enc(x). Uma GLC equivalente a G = (V, Σ, R, P), sem regras unitárias, é G = (V, Σ, R, P), em que R = { X w existe Y enc(x) tal que Y w R e w V }

Algoritmo Algoritmo para obter as variáveis encadeadas de uma variável Entrada: (1) GLC G = (V, Σ, R, P) (2) variável X V Saída: enc(x) U N { X } repita U U N N { Y U Z Y R para algum Z N } até N = retorne U

Exemplo Relembrando a GLC para expressões aritmé4cas E E + T T T T * F F F (E) t Os conjuntos enc(x) para cada variável X V enc(e) = { E, T, F } enc(t) = { T, F } enc(f) = { F } Eliminando as regras unitárias E E + T T * F (E) t T T * F (E) t F (E) t

Interação entre os Métodos de Eliminação Ao se aplicar vários 4po de eliminações em sequência, certo 4po de regra, já eliminado, pode reaparecer Exemplos a) Ao se eliminar regras λ podem aparecer regras unitárias Ex.: GLC com regras A BC e B λ b) Ao se eliminar regras unitárias podem aparecer regras λ Ex.: GLC com P λ (P: símbolo de par4da) e a regra A P c) Ao se eliminar regras λ podem aparecer variáveis inúteis Ex.: o do item (a), caso B λ seja a única regra de B d) Ao se eliminar regras unitárias podem aparecer var. inúteis Ex.: GLC que contém A B e B não aparece do lado direito de nenhuma outra regra (B torna-se inú4l) Ao se eliminar variáveis inúteis, não podem aparecer novas regras

Consistência das Eliminações A seguinte sequência de eliminações para uma GLC G = (V, Σ, R, P) garante sua consistência 1) Adicionar a regra P P se P for recursivo 2) Eliminar regras λ 3) Eliminar regras unitárias 4) Eliminar variáveis inúteis Essa sequência produz uma GLC equivalente cujas regras são da seguinte forma: P λ se λ L(G) X a para a Σ X w para w 2

ISSO É TUDO PESSOAL! Linguagens Formais e Autômatos