Linguagens Livres-do-Contexto

Tamanho: px
Começar a partir da página:

Download "Linguagens Livres-do-Contexto"

Transcrição

1 Linguagens Livres-do-Contexto Mário S. Alvim Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02) Mário S. Alvim Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 1 / 70

2 Linguagens Livres-do-Contexto: Introdução Até agora vimos métodos diferentes, porém equivalentes, de descrever linguagens: autômatos finitos e expressões regulares. Vimos que muitas linguagens podem ser descritas dessa maneira, as chamadas linguagens regulares. Porém, vimos que nem toda linguagem é regular, como, por exemplo, L = {w {0, 1} w contém o mesmo número de 0 s e de 1 s}. Isto é um problema, pois se trocarmos 0 por ( e 1 por ), não conseguiríamos reconhecer, por exemplo, a linguagem L = {w {a, b, +,, (, )} w contém o mesmo número de ( s e de ) s}. o que é essencial para verificar se expressões aritméticas estão bem formadas! Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 2 / 70

3 Linguagens Livres-do-Contexto: Introdução Aqui vamos estudar um método mais poderoso de descrever linguagens: as gramáticas livres-do-contexto. Gramáticas livres-do-contexto surgiram para estudar linguagens naturais (como português, inglês, francês). Hoje as gramáticas livres-do-contexto são essenciais para especificar linguagens de programação. Você já parou para pensar que é preciso descrever a linguagem de todos os programas válidos em Python (ou Java, C++, etc)? Além disso, que um compilador precisa verificar se uma cadeia de caracteres em um arquivo é um programa válido em Python (ou Java, C++, etc)? As linguagens geradas por gramáticas livres-do-contexto são chamadas de linguagens livres-do-contexto. As máquinas que reconhecem estas linguagens são os autômatos com pilha. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 3 / 70

4 Gramáticas Livres-do-Contexto Mário S. Alvim Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 4 / 70

5 Gramáticas Livres-do-Contexto Vamos começar com um exemplo de gramática livre-do-contexto. A 0A1 Exemplo 1 Seja a gramática livre-do-contexto G 1 : A B B # Uma gramática consiste em uma coleção de regras de substituição (ou produções). Cada regra consiste em uma variável do lado esquerdo, uma seta, e uma cadeia de variáveis e terminais do lado direito. Geralmente variáveis são representadas por letras maiúsculas. Os terminais equivalem ao alfabeto de entrada da linguagem, e geralmente representados por letras minúsculas, números ou símbolos. Uma variável é designada como variável inicial, e geralmente ocorre do lado esquerdo da primeira regra. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 5 / 70

6 Gramáticas Livres-do-Contexto Uma gramática descreve uma linguagem ao gerar cada cadeia dessa linguagem da seguinte forma. 1. Escreva a variável inicial. Ela é a variável à esquerda a primeira regra, a não ser que especificado em contrário. 2. Encontre uma variável que esteja escrita e uma regra que comece com essa variável. Substituta a variável escrita pelo lado direito dessa regra. 3. Repita o passo (2) até que não reste nenhuma variável. A sequência de substituições para se obter uma cadeia é chamada de derivação. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 6 / 70

7 Gramáticas Livres-do-Contexto Exemplo 2 Eis uma derivação da cadeia 000#111 pela gramática G 1 : A 0A1 (aplicando a primeira regra de G 1 à variável inicial A) 00A11 (aplicando a primeira regra de G 1 à variável A) 000A111 (aplicando a primeira regra de G 1 à variável A) 000B111 (aplicando a segunda regra de G 1 à variável A) 000#111 (aplicando a terceira regra de G 1 à variável B) Árvore sintática para 000#111 na gramática G 1. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 7 / 70

8 Linguagens Livres-do-Contexto O conjunto de todas as cadeias geradas pela uma gramática G constitui a linguagem da gramática, denotada por L(G). Por exemplo, a linguagem gerada pela gramática G 1 é: L(G 1 ) = {0 n #1 n n 0}. Qualquer linguagem que pode ser gerada por uma gramática livre-do-contexto é chamada de uma linguagem livre-do-contexto (LLC). Por conveniência, quando apresentamos as regras de uma LLC, abreviamos várias regras com o mesmo lado esquerdo em uma mesma linha, usando o símbolo para significar ou. Por exemplo, em G 1 as regras A 0A1 e A B podem ser abreviadas como A 0A1 B. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 8 / 70

9 Gramáticas Livres-do-Contexto Exemplo 3 A GLC G 2 abaixo descreve um fragmento da ĺıngua inglesa. sentence noun-phrase verb-phrase noun-phrase cmplx-noun cmplx-noun prep-prhase verb-phrase cmplx-verb cmplx-verb prep-prhase prep-phrase prep cmplx-noun cmplx-noun article noun cmplx-verb verb verb noun-prhase article a the noun boy girl flower verb touches likes sees prep with Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 9 / 70

10 Gramáticas Livres-do-Contexto Exemplo 3 (Continuação) As 10 variáveis de G 2 são: sentence, noun-phrase, verb-phrase, prep-phrase, cmplx-noun, cmplx-verb, article, noun, verb, e prep. Os 27 terminais de G 2 são as 26 letras do alfabeto latino (a, b,..., z) mais o espaço em branco. A gramática tem 18 regras. As cadeias geradas por G 2 incluem os exemplos abaixo: a boy sees the girl sees a flower a girl with a flower likes the boy Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 10 / 70

11 Gramáticas Livres-do-Contexto Exemplo 3 (Continuação) Uma derivação para a cadeia a boy sees pela gramática G 2 é a seguinte. sentence noun-phrase verb-phrase cmplx-noun verb-phrase article noun verb-phrase a noun verb-phrase a boy verb-phrase a boy cmplx-verb a boy verb a boy sees Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 11 / 70

12 Gramáticas Livres-do-Contexto Exemplo 4 GLCs são usadas para definir a sintaxe de linguagens de programação (como C, Java, Python, Haskell, ML, Prolog, etc.) O fragmento de GLC abaixo descreve uma linguagem de programação. program begin program command-list end program comannd-list command command-list command command assign-command if-then-else-command while-command... assign-command variable = expression if-then-else-command if boolean-expression then command-list else command-list end if while-command while boolean-expression do command-list end while variable letter variable-tail letter variable-tail letter variable-tail digit variable-tail letter digit letter A B... Z a b... z digit Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 12 / 70

13 Gramáticas Livres-do-Contexto: Definição formal Uma gramática livre-do-contexto (GLC) é uma 4-tupla (V, Σ, R, S), onde: 1. V é um conjunto finito denominado variáveis, 2. Σ é um conjunto finito, disjunto de V, denominado terminais, 3. R é um conjunto finito de regras, com cada regra sendo uma variável e uma cadeia de variáveis e terminais, e 4. S V é uma variável inicial (ou variável de partida). Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 13 / 70

14 Gramáticas Livres-do-Contexto: Notação e terminologia Se u, v e w são cadeias de variáveis e terminais, e A w é uma regra da gramática, dizemos que uav origina uwv, escrito Dizemos que u deriva v, escrito uav uwv. u v se u = v ou se existe uma sequência u 1, u 2,..., u k, para k 0, tal que u u 1 u 2... u k v. Dada uma gramática G = (V, Σ, R, S), linguagem da gramática é L(G) = {w Σ S w}. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 14 / 70

15 Gramáticas Livres-do-Contexto: Notação e terminologia Frequentemente especificamos uma gramática escrevendo somente suas regras. Podemos identificar as variáveis como os símbolos do lado esquerdo de cada regra, e os terminais como os símbolos restantes. Por convenção, a variável de partida é colocada do lado esquerdo da primeira regra. A 0A1 Exemplo 5 Voltando à gramática G 1 : A B B # Formalmente, G 1 = (V, Σ, R, S), onde: suas variáveis são V = {A, B}, seu alfabeto é Σ = {0, 1, #}, a variável de partida é S = A, e e a coleção de regras R é dada acima. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 15 / 70

16 Gramáticas Livres-do-Contexto: Exemplos Exemplo 6 Considere a gramática G 3 = ({S}, {a, b}, R, S). O conjunto de regras, R, é S asb SS ɛ. Essa gramática gera cadeias como: abab aaabbb aababb ɛ Se interpretarmos o símbolo a como parênteses à esquerda (, e o símbolo b como parênteses à direita ), a linguagem L(G 3 ) gerada pela gramática é a linguagem de todas as cadeias com parênteses propriamente aninhados. Por exemplo, as cadeias acima representariam: ()() ((())) (()()) ɛ Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 16 / 70

17 Gramáticas Livres-do-Contexto: Exemplos Exemplo 7 Considere a gramática G 4 = (V, Σ, R, expr ), em que V = { expr, term, factor }, Σ = {a, +,, (, )}, e as regras em R são expr expr + term term term term factor factor factor ( expr ) a Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 17 / 70

18 Gramáticas Livres-do-Contexto: Exemplos Exemplo 7 (Continuação) As seguintes cadeias podem ser geradas por G 4, com suas árvores sintáticas. a + a a (a + a) a Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 18 / 70

19 Projetando Gramáticas Livres-do-Contexto Assim como é o caso com autômatos finitos, projetar gramáticas livres-do-contexto é uma arte. GLCs são, de fato, mais complicadas de construir que AFDs, uma vez que geram linguagens mais expressivas. De fato, as linguagens livres-do-contexto são estritamente mais gerais que as linguagens regulares. (Note que já tínhamos mostrado que L = {0 n 1 n n 0} não é uma linguagem regular, mas em breve construiremos uma GLC para a L, mostramos que ela é livre-do-contexto!) A melhor maneira de ser capaz de projetar GLCs para linguagens é praticando! Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 19 / 70

20 Projetando Gramáticas Livres-do-Contexto Exemplo 8 Projete uma GLC para a linguagem L = {0 n 1 n n 0}. Solução. A seguinte gramática gera L. S 0S1 ɛ Exemplo 9 Projete uma GLC para a linguagem L = {a m b n m < n}. Solução. A seguinte gramática gera L. S IB I ai b ɛ B Bb b Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 20 / 70

21 Gramáticas Livres-do-Contexto: Ambiguidade Às vezes uma gramática pode gerar a mesma cadeia de várias formas diferentes. Tal cadeia terá várias árvores sintáticas diferentes e, portanto, vários significados diferentes. Isto é indesejável em algumas aplicações. Em linguagens de programação, por exemplo, queremos que cada programa tenha uma única interpretação. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 21 / 70

22 Gramáticas Livres-do-Contexto: Ambiguidade Exemplo 10 Seja a gramática G 5 : expr expr + expr expr expr ( expr ) a. Esta gramática gera a cadeia a + a a ambiguamente, como mostram as duas árvores de derivação distintas: Esta gramática pode agrupar a some (+) antes da multiplicação ( ), ou vice-versa, não dando um significado único a cada sentença matemática. Já a gramática G 4 é equivalente (gera a mesma linguagem), mas não é ambígua: ela força a multiplicação a ser avaliada antes da soma. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 22 / 70

23 Gramáticas Livres-do-Contexto: Ambiguidade Uma derivação de uma cadeia w em uma gramática G é uma derivação mais à esquerda se a cada passo a variável remanescente mais à esquerda é aquela que é substituída. Uma cadeia w é derivada ambiguamente na gramática livre-do-contexto G se ela tem duas ou mais derivações mais à esquerda diferentes. A gramática G é ambígua se ela gera alguma cadeia ambiguamente. Às vezes uma gramática ambígua pode ser convertida em uma gramática equivalente sem ambiguidade. Este foi o caso da gramática G 5 acima, que pôde ser convertida numa gramática não-ambígua equivalente G 4. Quando isto não é possível (ou seja, quando só exitem gramáticas ambíguas para a linguagem) dizemos que a linguagem é inerentemente ambígua. Um exemplo de linguagem inerentemente ambígua é: {a i b j c k i = j ou j = k}. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 23 / 70

24 Forma normal de Chomsky: Definição formal Quando trabalhamos com linguagens livres-do-contexto, é frequentemente conveniente simplificá-las. Uma das formas simplificadas mais usadas é a forma normal de Chomsky, que é útil para aplicar algoritmos a GLCs. Uma gramática livre-do-contexto está na forma normal de Chomsky se toda regra tem uma das seguintes formas: A BC A a S ɛ (A, B, C são variáveis quaisquer, e B e C não são a variável de partida) (A é um variável qualquer, e a é um terminal) (apenas se S é a variável de partida) Intuitivamente, a forma normal de Chomsky garante que a derivação de uma palavra não desperdiça tempo : cada passo ou adiciona uma variável ou transforma uma variável em um terminal. (Para gerar qualquer palavra de tamanho n são necessários no máximo 2n 1 passos!) Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 24 / 70

25 Forma normal de Chomsky: Definição formal Teorema Qualquer linguagem livre-do-contexto é gerada por uma gramática livre-do-contexto na forma normal de Chomsky. Prova. A prova formal encontra-se no livro-texto. Aqui, em vez de dar a prova formal, vamos estudar sua ideia central com um exemplo em que transformamos uma GLC em uma GLC equivalente na forma normal de Chomsky. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 25 / 70

26 Forma normal de Chomsky: Exemplo Exemplo 11 Seja a GLC G 6 abaixo. Usando o método proposto na prova do teorema anterior, encontre uma gramática na forma normal de Chomsky equivalente a G 6, (isto é, que gere a mesma linguagem). Solução. A transformação é dada passo-a-passo, em que cada passo uma nova versão equivalente da gramática é apresentada. As regras mostradas em negrito acabam de ser adicionadas, enquanto as regras mostradas em cinza acabam de ser removidas. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 26 / 70

27 Forma normal de Chomsky: Exemplo Exemplo 11 (Continuação) 1. A GLC original G 6 está à esquerda. A primeira modificação consiste em introduzir uma nova variável inicial, obtendo a GLC da direita. 2. Remova as regras ɛ: B ɛ (mostrado à esquerda), A ɛ (mostrado à direita). Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 27 / 70

28 Forma normal de Chomsky: Exemplo Exemplo 11 (Continuação) 3a. Remova as regas unitárias: S S (mostrado à esquerda), e S 0 S (mostrado à direita). 3b. Remova as regras unitárias: A B (mostrado à esquerda), A S (mostrado à direita). Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 28 / 70

29 Forma normal de Chomsky: Exemplo Exemplo 11 (Continuação) 4. Converta as regras remanescentes para a forma apropriada acrescentando variáveis e regras adicionais. A gramática final em forma normal de Chomsky, abaixo, é equivalente à GLC original G 6. Note que o procedimento dado no teorema produz diversas variáveis U i com regras U i a, mas aqui nós simplificamos a gramática com uma única variável U e a regra U a. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 29 / 70

30 Autômatos com Pilha Mário S. Alvim Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 30 / 70

31 Autômato com Pilha Para reconhecer linguagens livres-do-contexto vamos precisar de máquinas mais poderosas que os autômatos finitos. Um autômato finito pode ser esquematizado da seguinte forma: Que modificações poderíamos fazer no esquema de autômatos finitos para transformá-los em máquinas mais poderosas? Mário S. Alvim Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 31 / 70

32 Autômato com Pilha Lembre-se de que o lema do bombeamento para linguagens regulares diz, essencialmente, que autômatos finitos se perdem em contagens longas. Mais precisamente, os autômatos finitos têm sérias limitações em se lembrar do que viram no passado. Isto sugere que podemos incluir algum tipo de memória nos AFs! Vamos adicionar à máquina uma memória extremamente simples, uma pilha, em que o último símbolo empilhado é o primeiro a ser desempilhado. Assim, chegamos aos autômatos com pilha: Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 32 / 70

33 Autômato com Pilha: Definição formal Notação: dado um conjunto A, denotamos por A ɛ o conjunto A {ɛ}. Um autômato com pilha (AP) é uma 6-tupla (Q, Σ, Γ, δ, q 0, F ), onde: 1. Q é um conjunto finito de estados, 2. Σ é o alfabeto (finito) de entrada, 3. Γ é o alfabeto (finito) de pilha, 4. δ : Q Σ ɛ Γ ɛ P(Q Γ ɛ) é a função de transição, 5. q 0 Q é o estado inicial, e 6. F Q é o conjunto de estados de aceitação (ou estados finais). Note que, pela definição da função transição δ, estamos considerando APs não-determinísticos. (Pode-se mostrar que APs determinísticos são estritamente menos poderosos que os não-determinísticos, e não vamos estudá-los aqui.) Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 33 / 70

34 Autômatos com Pilha: Definição formal de computação Seja M = (Q, Σ, Γ, δ, q 0, F ) um AP, e suponha que w = w 1 w 2... w m é uma cadeia em que cada w i Σ ɛ. Então o AP M aceita a cadeia w se existe uma sequência de estados r 0, r 1,..., r m Q e cadeias s 0, s 1,..., s m Γ satisfazendo as condições abaixo. (Aqui as cadeias s i representam a sequência de conteúdo da pilha que M tem no ramo de aceitação da computação.) 1. r 0 = q 0 e s 0 = ɛ. (Esta condição diz que M começa no estado inicial e com a pilha vazia.) 2. Para i = 0,..., m 1, temos (r i+1, b) δ(r i, w i+1, a), onde s i = at e s i+1 = bt para algum a, b Γ ɛ e t Γ. (Esta condição diz que M se move apropriadamente de acordo com a função de transição.) 3. r m F. (Esta condição diz que ao terminar de consumir a cadeia de entrada, M está em um estado de aceitação.) Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 34 / 70

35 Autômatos com Pilha: Exemplos Exemplo 12 Vimos que a linguagem L 1 = {0 n 1 n n 0} não é regular e, portanto, não pode ser reconhecida por um autômato finito. Construa um autômato de pilha que reconheça L. Solução. A ideia central do autômato de pilha para L é ir lendo os símbolos de entrada e fazendo o seguinte: 1. Sempre que um 0 é lido, empilhe-o. 2. Quando os 1s começarem a ser lidos, desempilhe um 0 para cada 1 lido. 3. Se a leitura da entrada termina exatamente quando a pilha fica vazia de 0s, aceite a entrada. 4. Se a pilha esvazia antes de ler todos os 1s da entrada, ou se os 1s da entrada acabam antes de esvaziarem-se os 0s da pilha, ou se aparecerem quaisquer 0s após algum 1 da entrada, rejeite a entrada. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 35 / 70

36 Autômatos com Pilha: Exemplos Exemplo 12 (Continuação) O diagrama de estados a seguir implementa a ideia discutida, onde o rótulo a, b c sobre uma aresta indica que a transição satisfaz: 1. O símbolo disponível na entrada é a Σ ɛ, e o símbolo é consumido. 2. O símbolo disponível no topo da pilha é b Γ ɛ, e o símbolo é desempilhado. 3. O símbolo c Γ ɛ é empilhado. Note que uma cadeia é reconhecida apenas se o AP atinge um estado final no momento em que a cadeia foi completamente consumida. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 36 / 70

37 Autômatos com Pilha: Exemplos Exemplo 12 (Continuação) Computação sobre a cadeia 0011: Transição Estado Cadeia Pilha 0 q ɛ 1 q $ 2 q $ 3 q $ 4 q 3 1 0$ 5 q 3 ɛ $ 6 q 4 ɛ ɛ Cadeia aceita: AP para em estado final consumindo a cadeia inteira. Computação sobre a cadeia 011: Transição Estado Cadeia Pilha 0 q ɛ 1 q $ 2 q $ 3 q 3 1 $ 4 q 4 1 ɛ Cadeia rejeitada: AP para sem consumir a cadeia inteira. Computação sobre a cadeia 001: Transição Estado Cadeia Pilha 0 q ɛ 1 q $ 2 q $ 3 q $ 4 q 3 ɛ 0$ Cadeia rejeitada: AP para em estado não-final. Computação sobre a cadeia 0101: Transição Estado Cadeia Pilha 0 q ɛ 1 q $ 2 q $ 3 q 3 01 $ 4 q 4 01 ɛ Cadeia rejeitada: AP para sem consumir a cadeia inteira. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 37 / 70

38 Autômatos com Pilha: Exemplos Exemplo 12 (Continuação) O autômato com pilha cujo diagrama foi dado pode ser formalizado como M 1 = (Q, Σ, Γ, δ, q 1, F ), onde: 1. o conjunto de estados é Q = {q 1, q 2, q 3, q 4}, 2. o alfabeto de entrada é Σ = {0, 1}, 3. o alfabeto de pilha é Γ = {0, $}, 4. a função de transição δ é dada pela tabela (entradas em branco significam ): 5. o conjunto de estados de aceitação é F = {q 1, q 4}. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 38 / 70

39 Autômatos com Pilha: Exemplos Exemplo 13 linguagem Dê o diagrama de estados de um AP que reconheça a L 2 = {a i b j c k i, j, k 0 e i = j ou i = k}. Solução. O seguinte AP M 2, que é não-determinista, reconhece a linguagem L 2. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 39 / 70

40 Autômatos com Pilha: Exemplos Exemplo 14 Dê o diagrama de estados de um AP que reconheça a linguagem L 3 = {ww R w {0, 1} }. (Lembre-se de que w R é a cadeia w em ordem reversa.) Solução. O seguinte AP M 3, que é não-determinista, reconhece a linguagem L 3. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 40 / 70

41 Equivalência entre LLCs e APs Agora vamos verificar que as gramáticas livres-do-contexto e os autômatos com pilha são equivalentes em poder. Ou seja, ambas descrevem exatamente a classe das linguagens livres-do-contexto. Isto é útil porque teremos duas maneiras de determinar se uma linguagem L é livre-do-contexto: 1. encontrando um gerador para L, ou seja, uma GLC que gere L, ou 2. encontrando um reconhecedor para L, ou seja, um AP que reconheça L. Teorema Uma linguagem é livre-do-contexto se, e somente se, algum autômato com pilha a reconhece. Prova. Há duas direções a provar: (1) que se uma linguagem é LLC, então existe um AP que a reconhece, e (2) que se existe um AP para uma linguagem, então ela é LLC. A prova segue dos dois lemas a seguir, uma para cada direção. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 41 / 70

42 Equivalência entre LLCs e APs Lema Se uma linguagem é livre-do-contexto, então algum autômato com pilha a reconhece. Prova. A prova completa encontra-se no livro-texto. Aqui estudaremos sua ideia central. Seja L uma LLC. Então sabemos que existe uma GLC G para L. Vamos converter a GLC em um AP P da seguinte forma. 1. Coloque o símbolo marcador $ e a variável inicial de G no topo da pilha. 2. Repita os seguintes passos para sempre. a. Se o topo da pilha é um símbolo de variável A, não-deterministicamente selecione uma das regras para A, desempilhe A e empilhe o lado direito da regra. b. Se o topo da pilha é um símbolo terminal a, leia o próximo símbolo da entrada e compare-o com a. Se eles casam, repita. Se não casam, rejeite nesse ramo do não-determinismo. c. Se o topo da pilha é o símbolo $, entre no estado de aceitação. Fazendo isso, a entrada é aceita somente se ela tiver sido consumida por completo. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 42 / 70

43 Equivalência entre LLCs e APs Prova. (Continuação) Agora, para implementar P seguindo a ideia acima, fazemos o seguinte: Primeiro, vamos adotar uma abreviação para a possibilidade de uma transição empilhar mais do que um símbolo por vez na pilha. Por fim, o diagrama de estados do AP P que reconhece L é: Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 43 / 70

44 Equivalência entre LLCs e APs Exemplo 15 Use o procedimento desenvolvido no lema anterior para construir um AP P 1 a partir da seguinte GLC G: S at b b T T a ɛ Solução. O seguinte diagrama de estados representa o AP pedido. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 44 / 70

45 Equivalência entre LLCs e APs Exemplo 15 (Continuação) Como ilustração, considere a cadeia aaabb: Geração da cadeia pela gramática: S at b at ab aab Computação da cadeia pelo AP: Transição Estado Cadeia Pilha 0 q start aab ɛ 2 q loop aab S$ 5 q loop aab at b$ 6 q loop ab T b$ 8 q loop ab T ab$ 9 q loop ab ab$ 10 q loop b b$ 11 q loop ɛ ɛ$ 12 q accept ɛ ɛ Cadeia aceita: AP para em estado final consumindo a cadeia inteira. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 45 / 70

46 Equivalência entre LLCs e APs Para completar a equivalência entre LLCs e APs, é preciso estabelecer a direção de volta. Lema Se uma linguagem é reconhecida por um autômato com pilha, então ela é livre-do-contexto. Prova. A prova completa encontra-se no livro-texto. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 46 / 70

47 Relação entre LLCs e linguagens regulares O fato de que GLCs e APs são equivalentes leva ao seguinte resultado que compara as LLCs às linguagens regulares. Corolário Toda linguagem regular é livre-do-contexto. Prova. Se uma linguagem L é regular, então existe um AF M para L. Mas isso garante que exite um AP para L, que se comporta exatamente como M e não usa a pilha para nada. Mas o teorema anterior garante que se existe AP para L, então também existe GLC para L. Logo L é livre-do-contexto. A relação entre linguagens regulares e linguagens livres-do-contexto encontra-se a seguir. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 47 / 70

48 Linguagens Não-Livres-do-Contexto Mário S. Alvim Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 48 / 70

49 Linguagens Não-Livres-do-Contexto: Introdução Como vimos, os autômatos com pilha são ainda mais poderosos que os autômatos finitos, podendo reconhecer ainda mais linguagens. Porém, APs não conseguem reconhecer todas as linguagens. Ou seja, existem linguagens não-livres-do-contexto, que estão além do poder dos autômatos com pilha e, equivalentemente, além do poder das gramáticas livres-do-contexto. A ideia central da limitação dos autômatos com pilha é, apesar de eles terem uma memória mais geral que os AFs, a pilha permite que os APs se lembrem apenas da última coisa vista. Intuitivamente, qualquer linguagem cujas cadeias precisem que a máquina se lembre de símbolos em ordem arbitrária o suficiente não pode ser uma linguagem livre-do-contexto. Aqui vamos estudar linguagens não-livres-do-contexto, usando a poderosa ferramenta do Lema do bombeamento para linguagens livres-do-contexto. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 49 / 70

50 Lema do bombeamento para linguagens livres-do-contexto Teorema (Lema do bombeamento para linguagens livres-do-contexto.) Se A é uma linguagem livre do contexto, então existe um número p, chamado de comprimento de bombeamento, tal que, se s é uma cadeia qualquer em A de comprimento pelo menos p, então s pode ser dividida em cinco partes satisfazendo as seguintes condições: 1. para cada i 0, uv i xy i z A, 2. vy > 0, e 3. vxy p. s = uvxyz Prova. A prova completa é dada no livro-texto; aqui veremos sua essência. Seja A uma LLC e suponha que G seja uma GLC que a gere. Temos que mostrar que qualquer cadeia s suficientemente longa (ou seja, de tamanho maior que p) em A pode ser bombeada (Condição (1) do LB) e permanecer em A. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 50 / 70

51 Lema do bombeamento para linguagens livres-do-contexto Prova. (Continuação) A ideia da prova é simples. Seja s uma cadeia muito longa em A (a definição precisa de muito longa está na prova formal no livro). Então: 1. Como s está em A, s é gerada pela GLC para G e tem, portanto, uma árvore de derivação. 2. Como s é muito longa, sua árvore sintática necessariamente repete pelo menos uma variável no caminho da raiz até uma folha. Por exemplo, na figura seguinte a variável R é repetida na árvore sintática. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 51 / 70

52 Lema do bombeamento para linguagens livres-do-contexto Prova. (Continuação) 3. Como R foi repetida uma vez na árvore sintática, as regras de G permitem repetir R quanta vezes quisermos (ou seja, quantas repetições de i = 0 até quanto quisermos!) Por exemplo, podemos repetir o uso de R mais uma vez, gerando uv 2 xy 2 z A: Ou podemos eliminar a segunda repetição de R, gerando uv 0 xy 0 z = uvz A: Isso garante que as partes x e y da cadeia s podem ser bombeadas quantas vezes quisermos (Condição (1) do LB). Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 52 / 70

53 Lema do bombeamento para linguagens livres-do-contexto Prova. (Continuação) 5. As Condições (2) e (3) seguem do princípio da casa dos pombos: a) A Condição (2) garante que a recursão na regra R não pode ser uma regra unitária. Em outras palavras, a Condição(2) se combina com a Condição (1) para garantir que a derivação de qualquer cadeia longa o suficiente precisa conter uma chamada recursiva não-trivial. b) A Condição (3), combinada com as demais condições, garante que qualquer substring da cadeia que pode ser derivada sem chamada recursiva tem comprimento no máximo p. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 53 / 70

54 Lema do bombeamento para linguagens livres-do-contexto: Como usar O uso do Lema do Bombeamento para linguagens livres-do-contexto para mostrar, por contradição, que uma linguagem L não é livre-do-contexto é similar ao que fizemos para linguagens regulares: 1. Assuma que L seja livre-do-contexto. 2. Use o LB para garantir que existe um comprimento p tal que toda cadeia s L com comprimento maior que p possa ser bombeada. 3. Encontre uma cadeia s L com comprimento maior que p que não possa ser bombeada, mostrando que para qualquer divisão de s = uvxyz (possivelmente usando as condições do LB de que vy > 0 e vxy p), existe pelo menos um valor de i tal que uv i xy i z / L. 4. Como você chegou a uma contradição, pois (3) contradiz (2), sua hipótese em (1) era falsa, e L não pode ser uma linguagem livre-do-contexto. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 54 / 70

55 Observações sobre o uso do Lema do Bombeamento para LLCs O uso do LB para LLCs pode parecer difícil de entender a princípio; as observações abaixo tentam explicar seu uso. Obs. 1 sobre o LB: O LB diz que Se uma linguagem L é livre-do-contexto, então existe uma constante p tal que para toda cadeia s L tal que s p, existe uma divisão da cadeia em s = uvxyz para a qual as Condições (1), (2) e (3) do LB valem. Isto pode ser formalizado em lógica de predicados como: Se uma linguagem L é livre-do-contexto, então p N : s L : [ ( s p) ( div(s) : cond 1 cond 2 cond 3 ) ], (*) onde: div(s) é uma função que divide a cadeia s em uma concatenação uvxyz; cond 1, cond 2 e cond 3 são as Condições (1), (2) e (3) do LB, respectivamente. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 55 / 70

56 Observações sobre o uso do Lema do Bombeamento para LLCs Obs. 2 sobre o LB: A nossa prova por contradição parte do princípio de que a linguagem L é livre-do-contexto, mas nega a cláusula (*) de conclusão do LB. Relembrando suas aulas de lógica, note que a negação da cláusula (*) é: p N : s L : [ ( s p) ( div(s) : (cond 2 cond 3 ) cond 1 ) ]. Ou seja, nossa prova por contradição 1. assume que L é livre-do-contexto, 2. e demonstra que LB falha para L ao mostrar que para toda constante p, existe uma cadeia s L tal que s p e, para qualquer divisão de s em uvxyz, se as Condições (2) e (3) do LB forem verdadeiras, a Condição (1) tem que necessariamente ser falsa. Como o LB não pode falhar, a única conclusão da nossa prova é que L não pode ser livre-do-contexto! Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 56 / 70

57 Lema do bombeamento para linguagens livres-do-contexto: Exemplos Exemplo 16 Use o lema do bombeamento para mostrar que a linguagem B = {a n b n c n n 0} não é livre-do-contexto. Prova. Vamos provar por contradição. Assuma que B seja LLC, e que, portanto, ela satisfaça o LB para LLCs. Seja p o comprimento de bombeamento. Escolha s como a cadeia a p b p c p B. Como s B e s p, o LB diz que se pode dividir s em cinco partes s = uvxyz, onde para qualquer i 0, uv i xy i z B (Condição (1) do LB), vy > 0 (Condição (2)), e vxy p (Condição (3)). Mostramos que, independentemente de como dividamos s = uvxyz, pelo menos uma das condições do LB é violada. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 57 / 70

58 Lema do bombeamento para linguagens livres-do-contexto: Exemplos Prova. (Continuação) Como a Condição (3) do LB garante que vxy p, podemos concluir que vxy não pode conter ao mesmo tempo a s, b s e c s, pois na cadeia a p b p c p contém p símbolos seguidos de cada tipo. (Mais precisamente, note que ou a subcadeia vxy não contém a s, ou se ela contém a s então com certeza ela não contém c s, pois vxy p e há p b s entre o último a o primeiro c de s.) A Condição (2) do LB garante que vy > 0, logo a cadeia uv 2 xy 2 z acrescente símbolos novos à cadeia a p b p c p. Porém, uv 2 xy 2 z não pode ter o mesmo número de a s, b s e c s, porque nem todos os tipos de símbolos foram acrescentados em mesmo número à cadeia. Logo Condição (1) do LB é violada, e chegamos a uma contradição. Assim concluímos que a linguagem não pode ser livre-do-contexto. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 58 / 70

59 Lema do bombeamento para linguagens livres-do-contexto: Exemplos Exemplo 17 Use o lema do bombeamento para mostrar que a linguagem C = {a i b j c k i j k} não é livre-do-contexto. Prova. Vamos provar por contradição. Assuma que C seja LLC e que, portanto, ela satisfaça o LB para LLCs. Seja p o comprimento de bombeamento. Escolha s como a cadeia a p b p c p C. Como s C e s p, o LB diz que se pode dividir s em cinco partes s = uvxyz, onde para qualquer i 0, uv i xy i z C. Nesta prova vamos bombear para baixo, assim como bombear para cima. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 59 / 70

60 Lema do bombeamento para linguagens livres-do-contexto: Exemplos Prova. (Continuação) Como a Condição (2) do LB garante que v ou y é não-vazia, podemos considerar todas as divisões possíveis de s = uvxyz em apenas dois casos: Caso 1. Quando v ou y contêm mais que um tipo de símbolo cada, uv 2 xy 2 z não contém os símbolos na ordem correta e, portanto, não pertence a C: contradição. Caso 2. Quando tanto v quanto y contêm apenas um tipo de símbolo do alfabeto cada, sabemos que pelo menos um dos tipos de símbolo a, b ou c não vai estar presente nem em v nem em y. Subdividimos, então, este caso em mais três. Caso 2-a. Quando a s não aparecem em v ou y, bombeamos para baixo para obter a cadeia uv 0 xy 0 z = uxz. Esta cadeia contém o mesmo número de a s que a cadeia s, mas contém menos b s ou menos c s. Logo esta cadeia não pertence a C, e chegamos a uma contradição. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 60 / 70

61 Lema do bombeamento para linguagens livres-do-contexto: Exemplos Prova. (Continuação) Caso 2. (Continuação) Caso 2-b. Quando b s não aparecem em v ou y, então pelo menos um a ou um c vai aparecer em v ou y, pois não pode ocorrer que ambos v e y sejam vazios (Condição (2) do LB). Se a s aparecem em v ou y, a cadeia uv 2 xy 2 z contém mais a s que b s e, portanto, ela não pertence a C. Se c s aparecem em v ou y, a cadeia uv 0 xy 0 z contém mais b s que c s e, portanto, ela não pertence a C. De qualquer forma, temos uma contradição. Caso 2-c. Quando c s não aparecem em v ou y, a cadeia uv 2 xy 2 z contém menos c s que a s ou b s e, portanto, ela não pertence a C, o que é uma contradição. Como um dos casos acima tem que ocorrer, e todos levam a uma contradição, concluímos que a linguagem viola o LB e não pode ser, portanto, livre-do-contexto. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 61 / 70

62 Lema do bombeamento para linguagens livres-do-contexto: Exemplos Exemplo 18 Use o lema do bombeamento para mostrar que a linguagem D = {ww w {0, 1} } não é livre-do-contexto. Prova. Por contradição. Assuma que seja livre-do-contexto e que, portanto, satisfaça o LB para LLCs. Seja p a constante de bombeamento. Tomemos a cadeia s = 0 p 1 p 0 p 1 p. Ela pertence a D e tem comprimento maior que p, logo o LB diz que se pode dividir s em cinco partes s = uvxyz, onde para qualquer i 0, uv i xy i z D (Condição (1) do LB), vy > 0 (Condição (2)), e vxy p (Condição (3)). Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 62 / 70

63 Lema do bombeamento para linguagens livres-do-contexto: Exemplos Exemplo 18 (Continuação) Primeiro, vamos mostrar que a subcadeia vxy deve necessariamente conter o ponto médio da cadeia s (isto é, vxy contém pelo menos um 1 seguido de pelo menos um 0 no meio de 0 p 1 p 0 p 1 p ). Dividimos a situação em dois casos: Se a subcadeia vxy ocorresse integralmente na primeira metade de s, uv 2 xy 2 z deslocaria um símbolo 1 para a primeira posição da segunda metade de s e, portanto, s não seria da forma ww. Similarmente, se vxy ocorresse integralmente na segunda metade de s, uv 2 xy 2 z deslocaria um símbolo 0 para a última posição da primeira metade da cadeia s, e ela não seria da forma ww. Logo, concluímos que a subcadeia vxy deve conter o ponto médio da cadeia s. Mas neste caso, uv 0 xy 0 z = uxz tem a forma 0 p 1 i 0 j 1 p, onde i p j. Claramente essa cadeia não é da forma ww, e a cadeia s não pode ser bombeada, o que contradiz a Condição (1) do LB. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 63 / 70

64 Propriedades de Fechamento de Linguagens Livres-do-contexto Mário S. Alvim Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 64 / 70

65 Propriedades de Fechamento de Linguagens Livres-do-contexto Lembre-se de que dizemos que um conjunto A é fechado sob uma operação op se ao aplicarmos a operação op a elementos de A, o resultado é também um elemento de A. Lembre-se também de que vimos que a classe das linguagens regulares é fechada sob as operações de: união, interseção, concatenação, fecho de Kleene, e complemento. Vamos agora verificar se a classe das linguagens livres-do-contexto é fechada sob as mesmas operações. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 65 / 70

66 Propriedades de Fechamento de Linguagens Livres-do-contexto Teorema A classe das linguagens livres-do-contexto é fechada sob união. Prova. Queremos mostrar que para quaisquer linguagens A e B, se A e B são livres-do-contexto (LLC), então A B é livre-do-contexto. Note que se A e B são LLCs, então existem gramática G A = (V A, Σ A, R A, S A ) para A e gramática G B = (V B, Σ B, R B, S B ) para B tais que V A V B = (se não for, apenas renomeie as variáveis de cada gramática). Podemos construir uma gramática G = (V, Σ, R, S ) para A B onde: V = V A V B, Σ = Σ A Σ B, R = R A R B {S S A S B }, S é uma nova variável de partida tal que S / V A e S / V B. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 66 / 70

67 Propriedades de Fechamento de Linguagens Livres-do-contexto Teorema A classe das linguagens livres-do-contexto é fechada sob concatenação. Prova. Queremos mostrar que para quaisquer linguagens A e B, se A e B são livres-do-contexto (LLC), então A B é livre-do-contexto. Note que se A e B são LLCs, então existem gramática G A = (V A, Σ A, R A, S A ) para A e gramática G B = (V B, Σ B, R B, S B ) para B tais que V A V B = (se não for, apenas renomeie as variáveis de cada gramática). Podemos construir uma gramática G = (V, Σ, R, S ) para A B onde: V = V A V B, Σ = Σ A Σ B, R = R A R B {S S A S B }, S é uma nova variável de partida tal que S / V A e S / V B. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 67 / 70

68 Propriedades de Fechamento de Linguagens Livres-do-contexto Teorema A classe das linguagens livres-do-contexto é fechada sob fecho de Kleene. Prova. Queremos mostrar que para qualquer linguagem A, se A é livre-do-contexto (LLC), então A é livre-do-contexto. Note que se A é LLC, então existem uma gramática G A = (V A, Σ A, R A, S A ) para A. Podemos construir uma gramática G = (V, Σ, R, S ) para AA onde: V = V A, Σ = Σ A, R = R A {S S S A ɛ}, S é uma nova variável de partida tal que S / V A. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 68 / 70

69 Propriedades de Fechamento de Linguagens Livres-do-contexto Teorema A classe das linguagens livres-do-contexto não é fechada sob interseção. Prova. Queremos mostrar que existem duas linguagens A e B tais que ambas são LLCs, mas A C não é LLC. Considere A = {a n b n c m m, n 0} B = {a m b n c n m, n 0}. e Tanto A quanto B são LLCs (construa uma GLC para cada uma!), mas a interseção delas é A B = {a n b n c n n 0}, que em um exemplo anterior já provamos não ser uma LLC. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 69 / 70

70 Propriedades de Fechamento de Linguagens Livres-do-contexto Teorema A classe das linguagens livres-do-contexto não é fechada sob complementação. Prova. Por contradição. Assuma que a classe das linguagens livres-do-contexto fosse fechada sob complementação. Mas note sabemos que LLCs são fechadas sob união, e sabemos que (por DeMorgan) A B = A B. Logo, se LLCs fossem fechadas sob complementação, elas também seriam fechadas sob interseção, o que é uma contradição ao fato de que já provamos que elas não são. Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Livres-do-Contexto DCC-UFMG (2018/02) 70 / 70

Linguagens Não-Regulares

Linguagens Não-Regulares Linguagens Não-Regulares Mário S. Alvim (msalvim@dcc.ufmg.br) Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02) Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Não-Regulares DCC-UFMG (2018/02)

Leia mais

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

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO 2. Linguagens Livres-do-Contexto Referência: SIPSER, M. Introdução à Teoria da Computação. 2ª edição, Ed. Thomson Prof. Marcelo S. Lauretto marcelolauretto@usp.br

Leia mais

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

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO 2. Linguagens Livres-do-Contexto Referência: SIPSER, M. Introdução à Teoria da Computação. 2ª edição, Ed. Thomson Prof. Marcelo S. Lauretto marcelolauretto@usp.br

Leia mais

Gramáticas Livres de Contexto

Gramáticas Livres de Contexto Gramáticas Livres de Contexto IBM1088 Linguagens Formais e Teoria da Computação Evandro Eduardo Seron Ruiz evandro@usp.br Universidade de São Paulo E.E.S. Ruiz (USP) LFA 1 / 42 Frase do dia Quando vires

Leia mais

Lema do Bombeamento Linguagens Livres de Contexto

Lema do Bombeamento Linguagens Livres de Contexto Lema do Bombeamento Linguagens Livres de Contexto Agenda Lema do Bombeamento para CFL s Motivação Teorema Prova Exemplos de provas usando o lema 0 Bombeando FA s 1 x y z 1 0 1 0 Strings de comprimento

Leia mais

Lema do Bombeamento para Linguagens Livres do Contexto

Lema do Bombeamento para Linguagens Livres do Contexto Lema do Bombeamento para Linguagens Livres do Contexto IBM1088 Linguagens Formais e Teoria da Computação Evandro Eduardo Seron Ruiz evandro@usp.br Universidade de São Paulo E.E.S. Ruiz (USP) LFA 1 / 44

Leia mais

Autômatos Finitos e Não-determinismo

Autômatos Finitos e Não-determinismo Autômatos Finitos e Não-determinismo Mário S. Alvim (msalvim@dcc.ufmg.br) Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02) Mário S. Alvim (msalvim@dcc.ufmg.br) Autômatos Finitos e Não-determinismo

Leia mais

Linguagens Livres do Contexto. Adaptado de H. Brandão

Linguagens Livres do Contexto. Adaptado de H. Brandão Linguagens Livres do Contexto Adaptado de H. Brandão Linguagens Livres do Contexto Para as LLC, temos as Gramáticas Livres do Contexto; Linguagens Livres do Contexto Para as LLC, temos as Gramáticas Livres

Leia mais

Propriedades das Linguagens Livres do Contexto

Propriedades das Linguagens Livres do Contexto Capítulo 7 Propriedades das Linguagens Livres do Contexto As linguagens livres do contexto ocupam uma posição central na hierarquia das linguagens formais. Por um lado, as linguagens livres do contexto

Leia mais

Linguagens Formais e Problemas de Decisão

Linguagens Formais e Problemas de Decisão Linguagens Formais e Problemas de Decisão Mário S. Alvim (msalvim@dcc.ufmg.br) Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02) Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Formais e Problemas

Leia mais

Lema do Bombeamento. Aplicação para Linguagens Regulares e Livres de Contexto. Maria Adriana Vidigal de Lima. Abril

Lema do Bombeamento. Aplicação para Linguagens Regulares e Livres de Contexto. Maria Adriana Vidigal de Lima. Abril Aplicação para Linguagens Regulares e Livres de Contexto Abril - 2009 1 Linguagens Não-Regulares 2 Propriedades das Linguagens Regulares Todas as linguagens finitas (com um número finito de palavras) são

Leia mais

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

SCC Capítulo 2 Linguagens Livres de Contexto e Autômatos de Pilha (versão 2) SCC-505 - Capítulo 2 e (versão 2) João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação - Universidade de São Paulo http://www.icmc.usp.br/~joaoluis

Leia mais

Linguagens Formais e Autômatos P. Blauth Menezes

Linguagens Formais e Autômatos P. Blauth Menezes Linguagens Formais e Autômatos P. Blauth Menezes blauth@inf.ufrgs.br Departamento de Informática Teórica Instituto de Informática / UFRGS Linguagens Formais e Autômatos - P. Blauth Menezes 1 Linguagens

Leia mais

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

Segunda Lista de Exercícios 2004/2... + + UFLA Universidade Federal de Lavras Departamento de Ciência da Computação COM162 Linguagens Formais e Autômatos Prof. Rudini Sampaio Monitor: Rodrigo Pereira dos Santos Segunda Lista de Exercícios

Leia mais

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

Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados. Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados. José Lucas Rangel 9.1 - Introdução. Como já vimos anteriormente, a classe das linguagens sensíveis ao contexto (lsc) é uma

Leia mais

Decidibilidade. Mário S. Alvim Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02)

Decidibilidade. Mário S. Alvim Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02) Decidibilidade Mário S Alvim (msalvim@dccufmgbr) Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02) Mário S Alvim (msalvim@dccufmgbr) Decidibilidade DCC-UFMG (2018/02) 1 / 45 Decidibilidade:

Leia mais

Expressões regulares

Expressões regulares Expressões regulares IBM1088 Linguagens Formais e Teoria da Computação Evandro Eduardo Seron Ruiz evandro@usp.br Universidade de São Paulo E.E.S. Ruiz (USP) LFA 1 / 38 Frase do dia A vida é uma luta inteira

Leia mais

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

Terceira Lista de Exercícios 2004/2... UFLA Universidade Federal de Lavras Departamento de Ciência da Computação COM162 Linguagens Formais e Autômatos Prof. Rudini Sampaio Monitor: Rodrigo Pereira dos Santos Terceira Lista de Exercícios 2004/2

Leia mais

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

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO 1. Linguagens Regulares Referência: SIPSER, M. Introdução à Teoria da Computação. 2ª edição, Ed. Thomson Prof. Marcelo S. Lauretto marcelolauretto@usp.br www.each.usp.br/lauretto

Leia mais

Máquinas de Turing - Computabilidade

Máquinas de Turing - Computabilidade BCC244-Teoria da Computação Prof. Lucília Figueiredo Lista de Exercícios 03 DECOM ICEB - UFOP Máquinas de Turing - Computabilidade 1. Seja L uma linguagem não livre de contexto. Mostre que: (a) Se X uma

Leia mais

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

AFNs, Operações Regulares e Expressões Regulares AFNs, Operações Regulares e Expressões Regulares AFNs. OperaçõesRegulares. Esquematicamente. O circulo vermelho representa o estado inicial q 0, a porção verde representa o conjunto de estados de aceitação

Leia mais

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO LINGUAGEM LIVRE DE CONTEXTO As Linguagens Livres de Contexto é um reconhecedor de linguagens, capaz de aceitar palavras corretas (cadeia, sentenças) da linguagem. Por exemplo, os autômatos. Um gerador

Leia mais

Linguagens livres de contexto e autômatos de pilha

Linguagens livres de contexto e autômatos de pilha Capítulo 6: Linguagens livres de contexto e autômatos de pilha José Lucas Rangel, maio 1999 6.1 - Introdução. Os aceitadores, ou reconhecedores, das linguagens livres de contexto são os chamados autômatos

Leia mais

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

Construção de Compiladores Aula 16 - Análise Sintática Construção de Compiladores Aula 16 - Análise Sintática Bruno Müller Junior Departamento de Informática UFPR 25 de Setembro de 2014 1 Introdução Hierarquia de Chomsky Reconhecedores Linguagens Livres de

Leia mais

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

LFA Aula 09. Gramáticas e Linguagens Livres de Contexto 18/01/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior. LFA Aula 09 Gramáticas e Linguagens Livres de Contexto (Hopcroft, 2002) 18/01/2016 Celso Olivete Júnior olivete@fct.unesp.br www.fct.unesp.br/docentes/dmec/olivete/lfa 1 Classes Gramaticais Linguagens

Leia mais

Universidade Federal de Alfenas

Universidade Federal de Alfenas Universidade Federal de Alfenas Linguagens Formais e Autômatos Aula 13 Autômato com Pilha humberto@bcc.unifal-mg.edu.br Última aula Linguagens Livres do Contexto P(S*) Recursivamente enumeráveis Recursivas

Leia mais

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

Exercícios Associados à Aula 28 (27/11/2013) Feitos em sala e em equipes Exercícios Associados à Aula 28 (27/11/2013) Feitos em sala e em equipes Questões do POSCOMP 2011 A resposta certa está assinalada em vermelho. Por que é correta e por que as demais alternativas são incorretas?

Leia mais

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

Lema do Bombeamento Operações Fechadas sobre LR s Aplicações a n Lema do Bombeamento Operações Fechadas sobre LR s Aplicações (H&U, 969),(H&U, 979), (H;M;U, 2) e (Menezes, 22) Lema do Bombeamento para LR Como decidir que uma linguagem é ou não regular? Não bastaria

Leia mais

a n Sistemas de Estados Finitos AF Determinísticos

a n Sistemas de Estados Finitos AF Determinísticos a n Sistemas de Estados Finitos AF Determinísticos 1 Relembrando Uma representação finita de uma linguagem L qualquer pode ser: 1. Um conjunto finito de cadeias (se L for finita); 2. Uma expressão de um

Leia mais

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

Propriedades de Linguagens Livres de Contexto. Propriedades de Linguagens Livres de Contexto. Propriedades de Linguagens Livres de Contexto UNIVESIDADE ESTADUAL DE MAINGÁ DEPATAMENTO DE INFOMÁTICA Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa Prof. Yandre Maldonado - 2 A classe de linguagens livres de contexto é fechada

Leia mais

Linguagens Formais - Preliminares

Linguagens Formais - Preliminares Linguagens Formais - Preliminares Regivan H. N. Santiago DIMAp-UFRN 25 de fevereiro de 2007 Regivan H. N. Santiago (DIMAp-UFRN) Linguagens Formais - Preliminares 25 de fevereiro de 2007 1 / 26 Algumas

Leia mais

Um alfabeto é um conjunto de símbolos indivisíveis de qualquer natureza. Um alfabeto é geralmente denotado pela letra grega Σ.

Um alfabeto é um conjunto de símbolos indivisíveis de qualquer natureza. Um alfabeto é geralmente denotado pela letra grega Σ. Linguagens O conceito de linguagem engloba uma variedade de categorias distintas de linguagens: linguagens naturais, linguagens de programação, linguagens matemáticas, etc. Uma definição geral de linguagem

Leia mais

Análise Sintática Bottom-up

Análise Sintática Bottom-up MAB 471 2011.2 Análise Sintática Bottom-up http://www.dcc.ufrj.br/~fabiom/comp Recapitulando parsers top-down Constróem árvore sintática da raiz até as folhas Recursão à esquerda faz parsers entrarem em

Leia mais

Aula 8: Gramáticas Livres de Contexto

Aula 8: Gramáticas Livres de Contexto Teoria da Computação Primeiro Semestre, 2015 Aula 8: Gramáticas Livres de Contexto DAINF-UTFPR Prof. Ricardo Dutra da Silva Veremos agora maneira de gerar as strings de um tipo específico de linguagem,

Leia mais

Linguagens Livres de Contexto

Linguagens Livres de Contexto Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação 364018 Linguagens Formais e Autômatos TEXTO 4 Linguagens Livres de Contexto Prof. Luiz A M Palazzo Maio de 2011

Leia mais

Gramáticas Livres de Contexto Parte 1

Gramáticas Livres de Contexto Parte 1 Universidade Estadual de Feira de Santana Engenharia de Computação Gramáticas Livres de Contexto Parte 1 EXA 817 Compiladores Prof. Matheus Giovanni Pires O papel do Analisador Sintático É responsável

Leia mais

Compiladores. Prof. Bruno Moreno Aula 8 02/05/2011

Compiladores. Prof. Bruno Moreno Aula 8 02/05/2011 Compiladores Prof. Bruno Moreno Aula 8 02/05/2011 RECONHECIMENTO DE TOKENS Reconhecimento de Tokens Até aqui aprendemos a identificar tokens Para reconhecimento, a única abordagem utilizada foi árvores

Leia mais

Compiladores - Análise Ascendente

Compiladores - Análise Ascendente Compiladores - Análise Ascendente Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Descendente vs. Ascendente As técnicas de análise que vimos até agora (recursiva com retrocesso,

Leia mais

Linguagens Livres de Contexto

Linguagens Livres de Contexto Linguagens Livres de Contexto 1 Roteiro Gramáticas livres de contexto Representação de linguagens livres de contexto Formas normais para gramáticas livres de contexto Gramáticas ambíguas Autômatos de Pilha

Leia mais

Autômatos de Pilha (AP)

Autômatos de Pilha (AP) Linguagens Formais e Autômatos Autômatos de Pilha (AP) Andrei Rimsa Álvares Material extraído do livro e slides do Prof. Newton Vieira (h@p://dcc.ufmg.br/~nvieira) Sumário Introdução Autômatos de pilha

Leia mais

Compiladores - Análise Ascendente

Compiladores - Análise Ascendente Compiladores - Análise Ascendente Fabio Mascarenhas - 2013.2 http://www.dcc.ufrj.br/~fabiom/comp Análise Descendente vs. Ascendente As técnicas de análise que vimos até agora (recursiva com retrocesso,

Leia mais

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

Lema do Bombeamento Operações Fechadas sobre LR s Aplicações a n Lema do Bombeamento Operações Fechadas sobre LR s Aplicações (H&U, 969),(H&U, 979), (H;M;U, 2) e (Menezes, 22) Lema do Bombeamento para LR Como decidir que uma linguagem é ou não regular? Não bastaria

Leia mais

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

a * Lema do Bombeamento Linguagens regulares e não-regulares a * Lema do Bombeamento Linguagens regulares e não-regulares 1 Lema do Bombeamento para LR Como decidir que uma linguagem não é regular? Toda linguagem regular satisfaz o Lema do bombeamento (LB). Lemas

Leia mais

Editor de Autômatos Finitos. Acadêmica: Josiane Patrícia Morastoni Orientadora: Joyce Martins

Editor de Autômatos Finitos. Acadêmica: Josiane Patrícia Morastoni Orientadora: Joyce Martins Editor de Autômatos Finitos Acadêmica: Josiane Patrícia Morastoni Orientadora: Joyce Martins 0 1 0 0 Roteiro da Apresentação Introdução Autômatos Finitos Desenvolvimento trabalho Considerações finais 2/31

Leia mais

Curso: Ciência da Computação Turma: 6ª Série. Teoria da Computação. Aula 4. Autômatos Finitos

Curso: Ciência da Computação Turma: 6ª Série. Teoria da Computação. Aula 4. Autômatos Finitos Curso: Ciência da Computação Turma: 6ª Série Aula 4 Autômatos Finitos Autômatos Finitos Não Determinísticos Um autômato finito não-determinístico (AFND, ou NFA do inglês) tem o poder de estar em vários

Leia mais

Aula 7: Autômatos com Pilha

Aula 7: Autômatos com Pilha Teoria da Computação Segundo Semestre, 2014 Aula 7: Autômatos com Pilha DAINF-UTFPR Prof. Ricardo Dutra da Silva Vamos adicionar um memória do tipo pilha ao nossos autômatos para que seja possível aceitar

Leia mais

LLC's: Lema do Bombeamento e Propriedades de Fechamento

LLC's: Lema do Bombeamento e Propriedades de Fechamento Linguagens Formais e Autômatos LLC's: Lema do Bombeamento e Propriedades de Fechamento Andrei Rimsa Álvares Material extraído do livro e slides do Prof. Newton Vieira (hfp://dcc.ufmg.br/~nvieira) Sumário

Leia mais

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

Linguagens Formais e Autômatos 02/2015. LFA Aula 02. introdução 28/09/2015. Celso Olivete Júnior. LFA Aula 02 Linguagens regulares - introdução 28/09/2015 Celso Olivete Júnior olivete@fct.unesp.br 1 Na aula passada... Visão geral Linguagens regulares expressões regulares autômatos finitos gramáticas

Leia mais

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

Marcos Castilho. DInf/UFPR. 21 de março de 2019 21 de março de 2019 Análise sintática: introdução Dada uma gramática G e uma palavra w Σ, como saber se w L(G)? Isto é, como saber se S = G w? Derivações à esquerda e ambiguidade w L(G) se S = G w; Sabemos

Leia mais

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

Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Curso de Ciências de Computação Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Curso de Ciências de Computação SCC-205 TEORIA DA COMPUTAÇÃO E LINGUAGENS FORMAIS Turma 1 2º. Semestre de 2012 Prof. João Luís

Leia mais

Gramáticas e Linguagens independentes de contexto

Gramáticas e Linguagens independentes de contexto Capítulo 6 Gramáticas e Linguagens independentes de contexto 6.1 Gramáticas Nesta secção vamos introduzir gramáticas formais para caracterização das linguagens, estudando fundamentalmente as gramáticas

Leia mais

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

LINGUAGENS FORMAIS E AUTÔMATOS. Prova 2-10/06/ Prof. Marcus Ramos LINGUAGENS FORMAIS E AUTÔMATOS Prova 2-10/06/2011 - Prof. Marcus Ramos NOME: _ Colocar seu nome no espaço acima; A prova pode ser feita à lápis ou caneta; A duração é de três horas; As questões da parte

Leia mais

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

Universidade Federal do Rio de Janeiro Departamento de Ciência da Computação Universidade Federal do Rio de Janeiro Departamento de Ciência da Computação Não são aceitas respostas sem justificativa. Explique tudo o que você fizer. Linguagens Formais o semestre de 999 Primeira Prova

Leia mais

Autômatos com Pilha: Reconhecedores de LLCs

Autômatos com Pilha: Reconhecedores de LLCs Autômatos com Pilha: Reconhecedores de LLCs 1 Autômatos com Pilha (AP) Definições alternativas para Linguagens Livres de Contexto Extensão de AFND com uma pilha, que pode ser lida, aumentada e diminuída

Leia mais

Universidade Federal de Alfenas

Universidade Federal de Alfenas Universidade Federal de Alfenas Linguagens Formais e Autômatos Aula 12 Linguagens Livres do Contexto humberto@bcc.unifal-mg.edu.br Linguagens Livres do Contexto Para as LLC, temos as Gramáticas Livres

Leia mais

Autômato com pilha. IBM1088 Linguagens Formais e Teoria da Computação. Evandro Eduardo Seron Ruiz

Autômato com pilha. IBM1088 Linguagens Formais e Teoria da Computação. Evandro Eduardo Seron Ruiz Autômato com pilha IBM1088 Linguagens Formais e Teoria da Computação Evandro Eduardo Seron Ruiz evandro@usp.br Departmento de Computação e Matemática FFCLRP Universidade de São Paulo E.E.S Ruiz (DCM USP)

Leia mais

IV Gramáticas Livres de Contexto

IV Gramáticas Livres de Contexto IV Gramáticas Livres de Contexto Introdução Definições de GLC 1 G = (Vn, Vt, P, S) onde P = {A α A Vn α (Vn Vt) + } 2 GLC ε - LIVRE : S ε pode pertencer a P, desde que: S seja o símbolo inicial de G S

Leia mais

Linguagens Livres de Contexto

Linguagens Livres de Contexto Linguagens Livres de Contexto 1 Roteiro Gramáticas livres de contexto Representação de linguagens livres de contexto Formas normais para gramáticas livres de contexto Gramáticas ambíguas Autômatos de Pilha

Leia mais

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

INE5317 Linguagens Formais e Compiladores. AULA 4: Gramáticas INE5317 Linguagens Formais e Compiladores AULA 4: Gramáticas bas eado em material produzido pelo prof Olinto Jos é Varela Furtado Ricardo Azambuja Silveira INE-CTC-UFSC E-Mail: silveira@inf.ufsc.br URL:

Leia mais

LR's: Lema do Bombeamento e Propriedades de Fechamento

LR's: Lema do Bombeamento e Propriedades de Fechamento Linguagens Formais e Autômatos LR's: Lema do Bombeamento e Propriedades de Fechamento Andrei Rimsa Álvares Material extraído do livro e slides do Prof. Newton Vieira (hfp://dcc.ufmg.br/~nvieira) Introdução

Leia mais

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

Compiladores. Análise lexical. Plano da aula. Motivação para análise lexical. Vocabulário básico. Estrutura de um compilador Estrutura de um compilador programa fonte Compiladores Análise lexical () Expressões Regulares analisador léxico analisador sintático analisador semântico análise gerador de código intermediário otimizador

Leia mais

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

COMPILADORES. Análise sintática. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Análise sintática Parte 02 Prof. geovanegriesang@unisc.br Data Conteúdo 23/09/2013 3. Análise Sintática: 3.1 analisadores

Leia mais

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA PARA A COMPUTAÇÃO PROF. DANIEL S. FREITAS UFSC - CTC - INE Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.1/30 3 - INDUÇÃO E RECURSÃO 3.1) Indução Matemática 3.2)

Leia mais

Modelos Universais de Computação

Modelos Universais de Computação Modelos Universais de Computação 1 Equivalência entre Variantes de TM TM s definem naturalmente uma classe. Toda variante razoável de TM define a mesma classe de linguagens. (reforça a Tese Church-Turing)

Leia mais

Gramá3ca Livre de Contexto (GLC)

Gramá3ca Livre de Contexto (GLC) 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

Leia mais

Redutibilidade. Mário S. Alvim Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02)

Redutibilidade. Mário S. Alvim Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02) Redutibilidade Mário S. Alvim (msalvim@dcc.ufmg.br) Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02) Mário S. Alvim (msalvim@dcc.ufmg.br) Redutibilidade DCC-UFMG (2018/02) 1 / 46 Redutibilidade:

Leia mais

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

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 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 inacessíveis; Forma Normal de Chomsky (FNC) e Forma Normal

Leia mais

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

A. (Autómatos finitos determinísticos e não determinísticos AFD e AFND) DEP. INFORMÁTICA - UNIVERSIDADE DA BEIRA INTERIOR Teoria da Computação Eng. Informática 1º Semestre Exame 1ª chamada - Resolução 2h + 30min 31/Jan/2011 Pergunta A.1 A.2 A.3 B.1 B.2 B.3a B.3b C.1 C.2 D.1

Leia mais

MAC-4722 Linguagens, Autômatos e Computabilidade Lista L3

MAC-4722 Linguagens, Autômatos e Computabilidade Lista L3 MAC-4722 Linguagens, Autômatos e Computabilidade Lista L3 Athos Coimbra Ribeiro NUSP: ****** 3 de Abril de 26 Problema.46 (itens a,c, e d) Solução a) L = { n m n m, n } Usamos o lema do bombeamento para

Leia mais

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

Gramática. Prof. Yandre Maldonado e Gomes da Costa. Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 2 Mecanismo gerador que permite definir formalmente uma linguagem; Através de uma gramática

Leia mais

Gramática. Gramática. Gramática

Gramática. Gramática. Gramática Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 2 Mecanismo gerador que permite definir formalmente uma linguagem; Através de uma gramática

Leia mais

Linguagens Formais e Autômatos P. Blauth Menezes

Linguagens Formais e Autômatos P. Blauth Menezes Linguagens Formais e Autômatos P. Blauth Menezes blauth@inf.ufrgs.br Departamento de Informática Teórica Instituto de Informática / UFRGS Linguagens Formais e Autômatos - P. Blauth Menezes 1 Linguagens

Leia mais

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

Formas normais. Forma normal de Greibach (FNG) todas as produções são da forma Formas normais Em muitas aplicações, é útil que as GIC tenham regras de tipos especiais. Para tal é necessário que se possa transformar qualquer gramática numa equivalente (isto é que gere a mesma linguagem)

Leia mais

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

Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais UNIVERSIDADE FEDERAL DO PARÁ INSTITUTO DE CIÊNCIAS EXATAS E NATURAIS FACULDADE DE COMPUTAÇÃO CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof.

Leia mais

Aula 3: Autômatos Finitos

Aula 3: Autômatos Finitos Teoria da Computação Primeiro Semestre, 25 Aula 3: Autômatos Finitos DAINF-UTFPR Prof. Ricardo Dutra da Silva Um procedimento ue determina se uma string de entrada pertence à uma linguagem é um reconhecedor

Leia mais

Autômatos com Pilha. Douglas O. Cardoso docardoso.github.io

Autômatos com Pilha. Douglas O. Cardoso docardoso.github.io Autômatos com Pilha douglas.cardoso@cefet-rj.br docardoso.github.io Autômatos com Pilha 1/18 Roteiro 1 Autômatos com Pilha 2 APDs 3 APNs Autômatos com Pilha 2/18 Roteiro 1 Autômatos com Pilha 2 APDs 3

Leia mais

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

COMPILADORES. Revisão Linguagens formais Parte 02. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Revisão Linguagens formais Parte 02 Prof. geovanegriesang@unisc.br Legenda: = sigma (somatório) = delta ε = epsilon λ =

Leia mais

Linguagens Formais e Autômatos P. Blauth Menezes

Linguagens Formais e Autômatos P. Blauth Menezes Linguagens Formais e Autômatos P. Blauth Menezes blauth@inf.ufrgs.br Departamento de Informática Teórica Instituto de Informática / UFRGS Linguagens Formais e Autômatos - P. Blauth Menezes 1 Linguagens

Leia mais

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

SCC Capítulo 1 Linguagens Regulares e Autômatos Finitos SCC-505 - Capítulo 1 Linguagens Regulares e Autômatos Finitos João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo

Leia mais

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

INE5317 Linguagens Formais e Compiladores AULA 6: Propriedades das Linguagens Regulares INE5317 Linguagens Formais e Compiladores AULA 6: Propriedades das Linguagens Regulares baseado em material produzido pelo prof Paulo B auth Menezes e pelo prof Olinto Jos é Varela Furtado Ricardo Azambuja

Leia mais

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

Modelos de Computação Folha de trabalho n. 8 Modelos de Computação Folha de trabalho n. 8 Nota: Os exercícios obrigatórios marcados de A a D constituem os problemas que devem ser resolvidos individualmente. A resolução em papel deverá ser depositada

Leia mais

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

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 Departamento de Ciência da Computação ICEx/UFMG Teoria de Linguagens o semestre de 8 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 7/4/8 Valor: pontos. Uma versão do problema

Leia mais

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

Aula de 28/10/2013. sticas; Implementação. em Ruby Linguagens Formais e Autômatos (LFA) Aula de 28/10/2013 Propriedades Formais Relevantes das LLC s; Lema do Bombeamento; Linguagens LL e LR; Gramáticas LC Determinísticas sticas; Implementação em Ruby 1

Leia mais

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

O que é Linguagem Regular. Um teorema sobre linguagens regulares. Uma aplicação do Lema do Bombeamento. Exemplo de uso do lema do bombeamento O que é Linguagem Regular Um teorema sobre linguagens regulares Linguagem regular Uma linguagem é dita ser uma linguagem regular se existe um autômato finito que a reconhece. Dada uma linguagem L: É possível

Leia mais

15/03/2018. Professor Ariel da Silva Dias Aspectos sintáticos e semânticos básicos de linguagens de programação

15/03/2018. Professor Ariel da Silva Dias Aspectos sintáticos e semânticos básicos de linguagens de programação Professor Ariel da Silva Dias Aspectos sintáticos e semânticos básicos de linguagens de programação Conjunto de regras que definem a forma da linguagem; Como as sentenças podem ser formadas como sequências

Leia mais

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

As linguagens regulares são I.C Proposição Qualquer linguagem regular é independente de contexto. As linguagens regulares são I.C Proposição 16.1. Qualquer linguagem regular é independente de contexto. Dem. Seja L Σ uma linguagem regular, e seja r uma expressão regular tal que L = L(r).Por indução

Leia mais

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

Linguagens Formais. Aula 01 - Conceitos Básicos. Prof. Othon Batista Mestre em Informática Linguagens Formais Aula 01 - Conceitos Básicos Prof. Othon Batista Mestre em Informática Sumário Introdução à Linguagem Alfabeto Cadeias de Símbolos, Palavras Tamanho de Palavra Prefixo, Sufixo ou Subpalavra

Leia mais

Automata e Linguagens Formais

Automata e Linguagens Formais Automata e Linguagens Formais 6 Prof. Carlos H. C. Ribeiro carlos@ita.br Análise Sintática (Parsing) GLCs ambíguas Grafos de GLCs Estratégias para parsing Exemplos de parsers Análise Sintática (Parsing)

Leia mais

Linguagens Regulares. Prof. Daniel Oliveira

Linguagens Regulares. Prof. Daniel Oliveira Linguagens Regulares Prof. Daniel Oliveira Linguagens Regulares Linguagens Regulares ou Tipo 3 Hierarquia de Chomsky Linguagens Regulares Aborda-se os seguintes formalismos: Autômatos Finitos Expressões

Leia mais

TEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO

TEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO LICENCIATURA EM CIÊNCIAS DA COMPUTAÇÃO TEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO José Carlos Costa Dep. Matemática e Aplicações Universidade do Minho Braga, Portugal 31 de Maio de 2010

Leia mais

LINGUAGENS FORMAIS E AUTÔMATOS

LINGUAGENS FORMAIS E AUTÔMATOS LINGUAGENS FORMAIS E AUTÔMATOS O objetivo deste curso é formalizar a idéia de linguagem e definir os tipos de sintaxe e semântica. Para cada sintaxe, analisamos autômatos, ue são abstrações de algoritmos.

Leia mais

IBM1088 Linguagens Formais e Teoria da

IBM1088 Linguagens Formais e Teoria da IBM1088 Linguagens Formais e Teoria da Computação Linguagens e Gramáticas Evandro Eduardo Seron Ruiz evandro@usp.br Universidade de São Paulo E.E.S. Ruiz (USP) LFA 1 / 47 Frase do dia Sofremos muito com

Leia mais

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

COMPILADORES. Revisão Linguagens formais Parte 01. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Revisão Linguagens formais Parte 01 geovanegriesang@unisc.br Legenda: = sigma (somatório) = delta ε = épsilon λ = lambda

Leia mais

Universidade Federal de Alfenas

Universidade Federal de Alfenas Universidade Federal de Alfenas Linguagens Formais e Autômatos Aula 04 Linguagens Formais humberto@bcc.unifal-mg.edu.br Última aula... Relação da teoria dos conjuntos com LFA; Relação dos grafos com LFA.

Leia mais

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

Linguagens e Programação Gramáticas. Paulo Proença Linguagens e Programação Gramáticas Gramáticas Ferramenta para a descrição e análise de linguagens; Baseada num conjunto de regras que especificam o modo de construção das frases válidas na linguagem;

Leia mais

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

LINGUAGENS FORMAIS Definições. Desenvolveram-se na História em função da necessidade dos grupos humanos que as empregavam Linguagens Naturais LINGUAGENS FORMAIS Definições Desenvolveram-se na História em função da necessidade dos grupos humanos que as empregavam São muito ricas, mas também ambíguas e imprecisas. Ex.: João

Leia mais

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

Teoria da Computação Aula 02 Introdução Teoria da Computação Aula 02 Introdução Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional Alfabeto Um alfabeto é um conjunto finito de símbolos ou caracteres, representado pela letra sigma ( ). Portanto:

Leia mais

Compiladores Aula 4. Celso Olivete Júnior.

Compiladores Aula 4. Celso Olivete Júnior. Aula 4 Celso Olivete Júnior olivete@fct.unesp.br Na aula de hoje... Revisão: gramáticas Relações em uma gramática: Cabeça, Último, Primeiro (First) e Seguinte (Follow) Capítulo 4 (seção 4.4.2) do livro

Leia mais

Capítulo II Gramáticas

Capítulo II Gramáticas Capítulo II Gramáticas II.1 Motivação O que é uma Gramática? Um sistema gerador de linguagens; Um sistema de reescrita; Uma maneira finita de representar uma linguagem; Um dispositivo formal usado para

Leia mais