Problemas decidíveis para LICs

Documentos relacionados
Problemas decidíveis para LICs

Autómatos de pilha e Gramáticas independentes de contexto

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

Autómatos de pilha e GIC

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

Árvores (ordenadas) Departamento de Ciência de Computadores da FCUP MC Aula 11 1

Gramáticas ( [HMU00], Cap. 5.1)

Autómatos de Pilha. Cada transição é caracterizada pelo estado, símbolo que está ser lido e o elemento no topo da pilha. dados de entrada.

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

Revisões de Conjuntos

Linguagens recursivamente enumeráveis

MT como calculadoras de funções parciais

Autómatos determísticos de k-pilhas

Modelos de Computação

Noções de grafos (dirigidos)

Linguagens Formais e Autômatos P. Blauth Menezes

Linguaguens recursivamente enumeráveis e recursivas

Linguaguens recursivamente enumeráveis

Computação efectiva. Que linguagens podem ser reconhecidas por algum tipo de autómato?

Linguagem (formal) de alfabeto Σ

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

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

Máquinas Universais. Departamento de Ciência de Computadores da FCUP MC Aula 23 1

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

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

Autómatos finitos não determinísticos (AFND)

Alfabeto e palavras. Alfabeto conjunto finito de símbolos (Σ).

Compiladores - Análise Ascendente

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

Compiladores - Análise Ascendente

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)

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

formais e autómatos Linguagens g recursivas e recursivamente enumeráveis Gramáticas não-restringidas

Marcos Castilho. DInf/UFPR. 21 de março de 2019

Alfabeto, Cadeias, Operações e Linguagens

Teoria da Computação

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

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

Modelos de Computação Folha de trabalho n. 10

Teoria da Computação Aula - Linguagens e Gramáticas Formais

Gramáticas e Linguagens independentes de contexto

IV Gramáticas Livres de Contexto

Compiladores Aula 4. Celso Olivete Júnior.

Análise Sintática II. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 34

Reduce: reduz o que está imediatamente à esquerda do foco usando uma produção

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

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

Faculdade de Computação

Aula de 28/10/2013. sticas; Implementação. em Ruby

UNIVERSIDADE DA BEIRA INTERIOR

Análise Sintática I. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 42

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

Análise Sintáctica. Definições: Conjuntos First() e Follow() Compiladores, Aula Nº 19 João M. P. Cardoso. Conjunto First(β)

Modelos de Computação Folha de trabalho n. 8

TEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO

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

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

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

Fórmulas da lógica proposicional

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

Como construir um compilador utilizando ferramentas Java

Análise Sintática Bottom-up

LINGUAGENS FORMAIS E AUTÔMATOS

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

Gramáticas e Linguagens Independentes de Contexto

Compiladores. Top-Down x Bottom Up. Plano da aula. Redução exemplo 1. Redução exemplo 1. Lembrando: construir a tabela de análise LL(1) A Abc b B d

Linguagens Formais e Autômatos P. Blauth Menezes

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

Teoria da Computação

Exemplos de autómatos finitos

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

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

Automata e Linguagens Formais

SCC Capítulo 2 Linguagens Livres de Contexto e Autômatos de Pilha

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

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

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

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

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

SCC-5832: II. Ling. Livres de Contexto e Autômatos de Pilha

Análise sintática. Questão. E se a análise sintática pudesse ser modelada por autômatos?

Universidade Federal do Rio de Janeiro Departamento de Ciência da Computação

Máquinas de Turing: uma introdução

Teoria de Linguagens 2 o semestre de 2015 Professor: Newton José Vieira Primeira Lista de Exercícios Entrega: até 16:40h de 15/9.

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

Gramática. Gramática. Gramática

2. DISCIPLINA REQUISITO (RECOMENDAÇÃO) 3. INDICAÇÃO DE CONJUNTO (BCC) Obrigatória TEORIA: 60 LABORATÓRIO: 30

Linguagens Formais e Autômatos P. Blauth Menezes

Draft-v0.2. Gramáticas Independentes do Contexto O funcionamento de uma CFG Derivação de uma palavra

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

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

Linguagens e Programação Gramáticas. Paulo Proença

Gramáticas Livres de Contexto

V Teoria de Parsing. Termos Básicos: Parser Analisador Sintático Parsing Analise Sintática Parse Representação da analise efetuada

Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Curso de Ciências de Computação

Análise sintática. Prof. Thiago A. S. Pardo. Análise sintática ascendente

Construção de Compiladores

Linguagens Formais e Problemas de Decisão

Transcrição:

Problemas decidíveis para LICs Dada uma gramática independente de contexto G, L(G) =? Dada uma gramática independente de contexto G, L(G) é finita? Dada uma gramática independente de contexto G, L(G) é infinita? Dada uma gramática independente de contexto G e x Σ, x L(G)? Departamento de Ciência de Computadores da FCUP MC Aula 17 1

Problemas não decidíveis para LICs Problemas para os quais é possível provar que não existe algoritmo que os responda. Dada uma linguagem independente de contexto L, L é LIC? Dada uma gramática independente de contexto G, G é ambígua? Dada uma linguagem independente de contexto L, L é inerentemente ambígua? Dadas duas gramáticas independentes de contexto G 1 e G 2, L(G 1 ) = L(G 2 )? Dada uma linguagem independente de contexto L, L é determinística? Dada uma gramática independente de contexto G, L(G) = Σ? As demonstrações ficam para ver mais tarde... Departamento de Ciência de Computadores da FCUP MC Aula 17 2

Determinar se uma LIC é vazia Se G = (V, Σ, P, S) gera uma linguagem não vazia então existe uma árvore de derivação para x Σ cuja altura (i.e o comprimento do maior caminho da raiz a uma folha) é no máximo V. Porque: Se uma árvore de derivação tem altura maior que V, tem um caminho em que dois vértices têm o mesmo não-terminal. Então o caminho pode ser encurtado, eliminando a árvore entre esses dois vértices iguais. Processo repete-se até nenhum caminho ter comprimento maior que V. Basta então analisar as árvores de derivação (para formas sentenciais) com altura até V e verificar se alguma é para x Σ, isto é, é uma palavra apenas de não terminais.se não for L(G) =. Equivalentemente o que se pretende determinar é se S x, para algum x Σ.Isto é se S é gerador! Recorda o algoritmo já dado... Departamento de Ciência de Computadores da FCUP MC Aula 17 3

Determinar se uma LIC é finita ou infinita Seja G = (V, Σ, P, S) uma gramática em F NC que gera L \ {ɛ}. Considere-se, então, o grafo dirigido tal que: conjunto de vértices é V existe um arco de A para B, se A BC ou A CB em P, para algum C. L(G) é finita se e só se o grafo não tem ciclos. Dem. : Por contradição, suponhamos L(G) é finita e que existe um ciclo A 0, A 1,..., A n, A 0. Então A 0 α 1 A 1 β 1 α 2 A 2 β 2... α n A n β n α n+1 A 0 β n+1 e α i β i = i e são só sequências de não-terminais. Departamento de Ciência de Computadores da FCUP MC Aula 17 4

Mas como não há não terminais desnecessários: α n+1 w e β n+1 x, para alguns x, w Σ e x, w n + 1. Por outro lado, S ya 0 z e A 0 v para alguns y, z e v Σ. Então para todo i: S ya 0 z ywa 0 xz yw 2 A 0 x 2 z... yw i A 0 x i zywa 0 z yw i vx i z Como wx > 0, yw i vx i z yw j vx j z para i j. Logo L(G) é infinita. Absurdo! Departamento de Ciência de Computadores da FCUP MC Aula 17 5

: Suponhamos que o grafo não tem ciclos. Seja r(a) o comprimento do maior caminho que começa em A. Como não há ciclos r(a) é finito. E se A BC então r(b) < r(a) e r(c) < r(a). Mostra-se por indução sobre r(a) que nenhuma palavra x Σ derivada de A tem comprimento maior que 2 r(a). Base. Se r(a) = 0 então não há arcos que partam de A e as A-produções são da forma A a. E,portanto, A só deriva palavras de comprimento 1 Indução. Suponhamos que para r(a) n 1 a condição se verifica.seja r(a) = n (n > 0). Com produções da forma A a só se derivam palavras de comprimento 1. Suponhamos que começamos com A BC. Como r(b) e r(c) são no máximo n 1,por H.I., derivam palavras com comprimento no máximo 2 n 1.Logo BC não pode derivar palavras de comprimento maior que 2 n. Como r(s) é finito, S não deriva palavras de comprimento maior que 2 r(s),logo L(G) é finita. Departamento de Ciência de Computadores da FCUP MC Aula 17 6

Determinar se x L, L LIC Seja G = (V, Σ, P, S) uma gramática em FNG que gera L \ ɛ. Então, se x ɛ, x L(G) se e só se existe uma derivação de x em G com exactamente x passos. Isto porque cada produção de G adiciona exactamente um terminal à palavra que é gerada. Se cada não terminal tiver no máximo k produções, então há no máximo k x derivações pela esquerda para palavras de comprimento x. Podemos sistematicamente testá-las todas e verificar se alguma deriva x. Mas: Este algoritmo é muito ineficiente: é exponencial em x. Contudo, existem vários algoritmos O(n 3 ) em que n = x. E para LICs determinísticas existem ainda algoritmos mais eficientes! Departamento de Ciência de Computadores da FCUP MC Aula 17 7

Análise sintáctica O problema de reconhecer se x L(G) é essencial para a construção de compiladores e corresponde à chamada análise sintáctica: a determinação se um programa está sintacticamente correcto ou uma frase pertence a uma dada linguagem natural. Normalmente um analisador sintáctico, para além de reconhecer também constrói uma árvore de derivação (ou sintáctica) associada à palavra processada. Departamento de Ciência de Computadores da FCUP MC Aula 17 8

Algoritmo de Cocke-Younger-Kasami Seja G = (V, T, P, S) em FNC e x com x 1. O algoritmo decide se x L(G) analisando todas as subsequências de x = x 1 x 2... x n : primeiro todas de comprimento 1 depois as de comprimento 2...e sucessivamente até n = x. Para todos 1 i i + s n, representamos por N[i, i + s] o conjunto de não terminais em V que geram a subpalavra x i... x i+s, isto é N[i, i + s] = {A A x i... x i+s } Departamento de Ciência de Computadores da FCUP MC Aula 17 9

Algoritmo CYK: Para i=1 ate n: N[i,i]={A A x i } Para s=1 ate n-1: Para i=1 ate n-s: N[i,i+s]= Para k=i ate (i+s)-1: N[i,i+s] = N[i,i+s] {A A BC, B N[i,k] e C N[k+1,i+s]} A palavra x está em L(G) se e só se S N[1, n]. Este algoritmo pode ser generalizado a gramáticas não em forma normal de Chomsky... Departamento de Ciência de Computadores da FCUP MC Aula 17 10

Exemplo Seja uma gramática em FNC que gera a linguagem das palavras em {a, b} \ {ɛ} com o mesmo número de a s e b s. S AB BA SS AC BD A a B b C SB D SA e seja x = aabbab. Vamos calcular N[i, j] com 1 i j n aplicando o algoritmo. Departamento de Ciência de Computadores da FCUP MC Aula 17 11

Calculando N[i, i] para i = 1..6 vem i j 1 2 3 4 5 6 1 {A} 2 {A} 3 {B} 4 {B} 5 {A} 6 {B} Para N[i, i + 1] consideramos os Z tais que Z XY tal que X N[i, i] e Y N[i + 1, i + 1] i j 1 2 3 4 5 6 1 {A} 2 {A} {S} 3 {B} 4 {B} {S} 5 {A} {S} 6 {B} Departamento de Ciência de Computadores da FCUP MC Aula 17 12

Para N[i, i + 2] consideramos os Z tais que Z XY tal que X N[i, i] e Y N[i + 1, i + 2], ou X N[i, i + 1] e Y N[i + 2, i + 2] i j 1 2 3 4 5 6 1 {A} 2 {A} {S} {C} 3 {B} 4 {B} {S} {C} 5 {A} {S} 6 {B} Continuando para N[i, i + 3] e i = 1, 2, 3: i j 1 2 3 4 5 6 1 {A} {S} 2 {A} {S} {C} {S} 3 {B} 4 {B} {S} {C} 5 {A} {S} 6 {B} Departamento de Ciência de Computadores da FCUP MC Aula 17 13

E, finalmente, calculando N[i, i + 4], com i = 1, 2 e N[i, i + 5] com i = 1, i j 1 2 3 4 5 6 1 {A} {S} {D} {S} 2 {A} {S} {C} {S} {C} 3 {B} 4 {B} {S} {C} 5 {A} {S} 6 {B} Como S N[i, 6], x L(G). Departamento de Ciência de Computadores da FCUP MC Aula 17 14

Outros analisadores sintácticos Nota: os assuntos seguintes são de caracter informativo e não fazem parte do programa da disciplina. Vamos dar alguns exemplos Tipos de algoritmos, quanto ao modo como constroem a árvore de derivação: descendentes (top-down) produzem formas sentenciais intermédias α (V Σ) tal que já se tem S α mas não ainda α x Exemplos: recursivo descendente de Earley ascendentes (bottom-down) produzem formas sentenciais intermédias α (V Σ) tal que é certo que α x mas não ainda S α Exemplos: CYK Departamento de Ciência de Computadores da FCUP MC Aula 17 15

shift-reduce LR Departamento de Ciência de Computadores da FCUP MC Aula 17 16

Algoritmo de Earley ([Ear70]) Algoritmo descendente, muito eficiente, que se aplica a qualquer gramática independente de contexto G = (V, Σ, P, S). Constrói, a partir da palavra a reconhecer x = a 1 a 2... a n uma tabela triangular M, em que cada célula contém produções da gramática com indicação do progresso na análise (denominados items) que correspondem a candidatos a ser aplicados: A γ β M i,j se e só se existe α (V Σ) tal que S a 1... a i Aα A γβ P γ a i+1... a j. Então x L(G) sse S x. M 1,n Departamento de Ciência de Computadores da FCUP MC Aula 17 17

Gramáticas LR(k) e APD Família de gramáticas para as quais existem analisadores sintácticos ascendentes determinísticos, uma vez que com k símbolos de avanço (lookahead) é possível determinar exactamente quais as produções a aplicar para obter uma derivação pela direita (e assim é possível ao analisador sintáctico construir essa derivação por ordem inversa: da palavra a S). Vamos supor k = 0. Um item duma gramática LR(0) é uma produção com um ponto ( ) em qualquer parte do seu lado direito. Exemplo 17.1. Sendo G = ({S, S, A}, {a, b, c}, {S Sc, S SA A, A asb ab}, S ), os items para S são S Sc, S S c es Sc Determina os restantes items de G. Um identificador (handle) de uma forma sentencial direita γ é uma sub-palavra β que pode ser introduzida no último passo duma derivação pela direita de γ: S d δaw d δβw e γ = δβw Departamento de Ciência de Computadores da FCUP MC Aula 17 18

Um prefixo viável de uma forma sentencial direita γ é qualquer prefixo de γ que não termina mais à direita do que o fim dum identificador de γ Exemplo 17.2. Considerando a gramática do exemplo 17.1 S Sc SAc SaSbc o identificador de SaSbc é asb e os prefixos viáveis são ɛ, S, Sa,SaS e SaSb. Um item A α β é válido para um prefixo viável γ se existe uma derivação pela direita tal que: S d δaw d δαβw e γ = δα Um item é completo se for da forma A α Então, se A α for válido para γ então pode ser que A α tenha sido usado no último passo para derivar γw (de δaw). Mas, dum modo geral, pode não ser verdade... pois pode haver outro w Exemplo 17.3. Dada gramática do exemplo 17.1 e abc, temos que S d Ac d abc e A ab é válido para o prefixo viavél ab e podemos deduzir que Ac é a forma sentencial direita anterior a abc. Departamento de Ciência de Computadores da FCUP MC Aula 17 19

Dada uma gramática G, o conjunto de items válidos para os prefixos viáveis é uma linguagem regular. Podemos construir um AFND, cujos estados são os items de G: M = (Q, V Σ, δ, s 0, Q) Q = {A α β A αβ P } {s 0 } δ(s 0, ɛ) = {S α S α P } δ(a α Bβ, ɛ) = {B γ P } δ(a α Xβ, X) = {A αx β} Tem-se que A α β δ(s 0, γ) se e só se A α β é válido para γ. Uma gramática é LR(0) se: 1. O símbolo inicial não aparece no lado direito de nenhuma regra 2. Para todo o prefixo viável γ de G, sempre que A α é válido para γ, não existe outro item completo ou com um terminal à direita do ponto ( ) válido para γ. Departamento de Ciência de Computadores da FCUP MC Aula 17 20

O autómato anterior, ou melhor, o AFD equivalente obtido pela construção de subconjuntos, permite determinar se uma gramática é LR(0):no AFD, o caminho do estado inicial etiquetado por γ leva ao estado que corresponde ao conjunto de items válidos para γ. Assim basta ver se algum estado do AFD viola a condição 2. Exercício 17.1. Mostra que a gramática G definida no exemplo 17.1 é LR(0). Proposição 17.1. A cada gramática LR(0) corresponde um autómato de pilha determinístico (APD) e se L é aceite por um APD então L# = {w# w L}, em que # / Σ tem uma gramática LR(0). Podemos, assim, usar o APD como analisador sintáctico, que constrói precisamente uma derivação pela direita (em modo inverso...) e em que a pilha guarda os prefixos viáveis. Nota, que em particular, uma gramática LR(0) não é ambígua!. Estas gramáticas são usadas muito na construção de compiladores, pois a partir delas é possível construir automaticamente analisadores sintácticos eficientes. (ex: yacc, bison são aplicações no UNIX para esses fins...) Departamento de Ciência de Computadores da FCUP MC Aula 17 21

Leituras [HMU00] (Cap 7.4) [Tom99] (Pág 98-100,114-115) Departamento de Ciência de Computadores da FCUP MC Aula 17 22

Referências [Ear70] Jay Earley. An efficient context-free parsing algorithm. Communications of the ACM, 14, 1970. [HMU00] John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman. Introduction to Automata Theory, Languages and Computation. Addison Wesley, 2nd edition, 2000. [Tom99] Ana Paula Tomás. Apontamentos de modelos de computação. Technical report, Departamento de Ciência de Computadores, FCUP, 1999. Departamento de Ciência de Computadores da FCUP MC Aula 17 23