ine5317 linguagens formais e compiladores aula 4:...
TRANSCRIPT
INE5317 Linguagens Formais e
Compiladores
Ricardo Azambuja SilveiraINE-CTC-UFSC
E-Mail: [email protected]: www.inf.ufsc.br/~silveira
AULA 4: Gramáticasbaseado em material produzido pelo prof Olinto José Varela Furtado
06/09/06 Ricardo Silveira 2
Conceitos Básicos● Alfabeto (ou vocabulário): É um conjunto finito,
não vazio, de símbolos (elementos). Representaremos um alfabeto por.– Exemplos:
● V = {a, b, c,...,z }● V = {0, 1}● V = {a, e, i, o ,u}
06/09/06 Ricardo Silveira 3
Conceitos Básicos– Sentenças: Uma sentença sobre um alfabeto V, é
uma seqüência (ou cadeia) finita de símbolos do alfabeto.
● Exemplo de sentenças sobre V = { a , b }: – a, b, aa, ab, bb, aaa, aab, aba, baa, ...
– Tamanho de uma sentença: Seja w uma sentença, o tamanho da sentença w, denotado por |w|, é definido pelo número de símbolos (elementos do alfabeto) que compõem w.
● Exemplos: – Seja V = { a , b , c }– se x = aba, então |x| = 3– se x = c, então |x| = 1
06/09/06 Ricardo Silveira 4
Conceitos Básicos– Sentença vazia:
● É uma sentença constituída de nenhum símbolo; isto é, uma sentença de tamanho 0 (zero).
● Observações: ● Representaremos a sentença vazia por ε (épsolon).● Por definição, |ε| = 0
– Potência de uma sentença:● Seja w uma sentença, a n-ésima potência de w,
representada por wn, significa w repetido n vezes.– Exemplos:
● se x = ab, então x3 = ababab● Para uma sentença ∀ x, x0 = ε
06/09/06 Ricardo Silveira 5
Conceitos Básicos
● Fechamento reflexivo: sendo Σ um alfabeto qualquer, Σ* representa o conjunto de todas as palavras possíveis de serem construídas com Σ (fecho transitivo reflexivo),
● Fechamento transitivo: Σ+ representa o conjunto de todas as palavras possíveis de serem construídas com Σ (fecho transitivo), exceto a palavra vazia.
● ∑+ denota ∑* - { ε }.● Prefixo (respectivamente, Sufixo) de uma palavra é
qualquer seqüência inicial (respectivamente, final) de símbolos da palavra
● Subpalavra é qualquer seqüência de símbolos contígua da palavra
06/09/06 Ricardo Silveira 6
Fechamento de um alfabeto– Seja V um alfabeto
● O fechamento reflexivo (ou simplesmente fechamento) de V, representado por V*, é dado pelo conjunto de todas as possíveis seqüências que podem ser formadas a partir de V, inclusive a sentença vazia.
● O fechamento transitivo (ou fechamento positivo) de V, representado por V+, é dado por V* - { ε }.
– Exemplos: ● Seja V = { 0, 1 }, temos que:
– V* = {ε, 0, 1, 00, 01, 11, 000,...}– V+ = {0, 1, 00 ,01, 11, 000,...}
06/09/06 Ricardo Silveira 7
Exemplos
● a) abcb é uma palavra sobre o alfabeto {a, b, c};● b) Se ∑ = {a, b}, então:
∑+ = {a, b, aa, ab, ba, bb, aaa,...} ∑* = {ε , a, b, aa, ab, ba, bb, aaa,...}● c) abcb = 4 e ε = 0;● d) Qualquer prefixo ou sufixo de uma palavra é uma
subpalavra.
06/09/06 Ricardo Silveira 8
Linguagens e suas representações
– Uma linguagem L sobre um alfabeto V, é um subconjunto de V*; isto é: L ⊆ V*.
– Linguagem Finita: pode ser representada por enumeração.
– Exemplo: A linguagem definida como sendo o conjunto dos inteiros positivos pares maiores que 0 e menores que 20, pode ser representado por: L = {2, 4, 6, 8, 10, 12, 14, 16, 18}.
– Linguagem Infinita: impossibilidade de usarmos enumeração,
– Exemplo: A linguagem definida como sendo o conjunto dos inteiros pares poderia ser representada por V ={2, 4, 6, 8, 10,...} que, que apesar de intuitiva, não é finita e nem precisa.
06/09/06 Ricardo Silveira 9
Representação de linguagens
● Considerando um alfabeto Σ e, dado que uma linguagem é sempre um subconjunto de Σ*, pode-se especificar uma linguagem por meio do esquema utilizado para representar conjuntos infinitosL = {w ∈ Σ* | w tem a propriedade P}
● ExemploL= {w ∈ {0,1}* | w consiste em n 0’s seguidos de n 1’s}{01,0011,000111,00001111,…}
06/09/06 Ricardo Silveira 10
Linguagens e suas representações
● Reconhecedores – – Dispositivos formais que nos permitem verificar
se uma determinada sentença pertence ou não a uma determinada linguagem
– é uma representação das sentenças de uma linguagem sob o ponto de vista do reconhecimento de tais sentenças
– Esses dispositivos denominam-se autômatos; ● autômatos finitos, autômatos de pilha e máquinas de
turing, por exemplo, podem ser destacados como importantes classes de autômatos.
06/09/06 Ricardo Silveira 11
Linguagens e suas representações
● Sistemas Geradores– Dispositivos formais dotados de mecanismos que
permitem a geração sistemática das sentenças de uma linguagem
– representação sob o ponto de vista da geração das sentenças de uma linguagem
– Os principais sistemas geradores disponíveis são as gramáticas
06/09/06 Ricardo Silveira 12
Linguagens e suas representações
● Linguagens Formais: São linguagens que podem ser representadas de maneira finita e precisa através de sistemas com sustentação matemática (dispositivos formais ou modelos matemáticos).
06/09/06 Ricardo Silveira 13
O que é uma gramática● Um sistema gerador de linguagens;● Um sistema de reescrita;● Uma maneira finita de descrever (representar)
uma linguagem; ● Um dispositivo formal usado para especificar
de maneira finita e precisa uma linguagem potencialmente infinita
06/09/06 Ricardo Silveira 14
Finalidade de uma gramática– Definir o subconjunto de V* que forma uma
determinada linguagem. Exemplo:● (um subconjunto da gramática da língua portuguesa)
<sentença> :: = <sujeito> <predicado><sujeito> :: = <substantivo> | <artigo> <substantivo> | <artigo> <adjetivo> <substantivo><predicado> :: = <verbo> <objeto><substantivo> :: = joão | Maria | cachorro | livro | pão<artigo> :: = o | a<adjetivo> :: = pequeno | bom | bela<verbo> :: = morde | le | olha<objeto> :: = <substantivo> | <artigo> <substantivo> | <artigo> <adjetivo> <substantivo>
06/09/06 Ricardo Silveira 15
Definição formal de gramática
● G = (Vn, Vt, P, S) – onde:
● Vn – conjunto finito de símbolos não-terminais. ● Vt – conjunto finito de símbolos terminais.
– convenções: Vn ∩ Vt = ϕ e Vn ∪ Vt = V● P – conjunto finito de pares (α , β) denominados
produções (ou regras gramaticais ou de sintaxe). – P = { α :: = β |α ∈ V*VnV* ∧ β ∈ V*}
● S – É o símbolo inicial da gramática.
06/09/06 Ricardo Silveira 16
Exemplo
● Formalizando o subconjunto da gramática da língua portuguesa apresentado, teríamos:– Gportugues = (Vn, Vt, P, S), onde:
● Vn = { <sentença> , <sujeito> , <predicado> , <substantivo>, <artigo> ,<adjetivo>, <predicado> , <verbo>, <objeto>}
● Vt = { joão, maria , cachorro, livro , pão, o, a, pequeno, bom, bela , morde , le , olha }
● P = é o conjunto das regras gramaticais apresentado● S = <sentença>
06/09/06 Ricardo Silveira 17
Exemplos● gramáticas podem que representar as
seguintes linguagens:– Inteiros positivos menores que 1000– Inteiros positivos– Inteiros positivos pares– Inteiros positivos com número ímpar de dígitos– Números inteiros e reais
06/09/06 Ricardo Silveira 18
Outros exemplos– Dado Vt = { a, b }, uma linguagem pode ser
construída com uma gramática cuja linguagem gerada seja:
● O conjunto de sentenças cujo último símbolo seja igual o primeiro
● O conjunto de sentenças de tamanho par● O conjunto de sentenças que não possuam b’s
consecutivos● O conjunto de sentenças onde o #a’s seja igual o #b’s e
todos os a’s precedam todos os b’s● O conjunto de sentenças onde o #a’s = #b’s
06/09/06 Ricardo Silveira 19
Notação utilizada● ::= → ● V
N – Letras de “A” a “T” e palavras escritas com letras
maiúsculas (símbolos não-terminais)● V
T – Letras de “a” a “t”e palavras escritas com letras
minúsculas, dígitos e caracteres especiais (símbolos terminais)
● VT
* - u, v, x, y, w, z (sentenças com símbolos terminais)
● {VN ∪ V
T} – U, V, X, Y, W, Z (símbolos terminais e não-
terminais)● {V
N ∪ V
T}* - α, β, γ, δ, ..., ω ( exceto ε )(sentenças com
símbolos terminais e não-terminais)
06/09/06 Ricardo Silveira 20
Derivação e redução● São operações de substituição que formalizam o uso
de gramáticas– Seja G = (Vn, Vt, P, S) uma gramática ∀ ∧ Seja ( δαγ)
∈ (Vn ∪ Vt)* ● Derivação em um passo (ou direta):
– δαγ ⇒ δβγ ⇔ α→β ∈ P● Derivação em zero ou mais passos
● α ⇒∗ β ⇔ α ⇒ α1 ⇒ α2 ⇒ ... ⇒ αν ⇒β:; p/ n ≥ 0● Se α ⇒∗ β em 0 (zero) passos, então α = β .
● Derivação em um ou mais passos ● α ⇒+β ⇔
– α ⇒ α1 ⇒ α2 ⇒ ... ⇒ αν ⇒β:; p/ n ≥ 1
06/09/06 Ricardo Silveira 21
Derivação e redução●
● Redução em um passo (ou direta)● δαγ ⇐ δβγ
● Redução em zero ou mais passos● δαγ ⇐∗ δβγ● Redução em um ou mais passos
● δαγ ⇐+ δβγ
06/09/06 Ricardo Silveira 22
Sentença, Forma Sentencial e Linguagem
– Seja G = (Vn, Vt, P, S) :– Sentença – seqüência de terminais produzida a
partirdo símbolo inicial de G– S ⇒+ x
– Forma Sentencial ● seqüência de terminais e/ou não-terminais produzida a
partir do símbolo inicial de G● Se S ⇒α ⇒ β ⇒ ... ⇒ γ. ● então α.β,..., γ são formas sentenciais de G.
06/09/06 Ricardo Silveira 23
Sentença, Forma Sentencial e Linguagem
● Linguagem gerada – conjunto de sentenças derivadas a partir do símbolo inicial de G
● L(G) = { x | x ∈ Vt* ∧ S ⇒+ x }● Gramáticas Equivalentes – Duas gramáticas
G1 e G2 são equivalentes entre si, se e somente se – L(G1) = L(G2).
– G1 ≡ G2 ⇔ L(G1) = L(G2)
06/09/06 Ricardo Silveira 24
Exemplo● Seja a gramática G = (V,T,P,S), onde:
– V = {S,D}– T = {0,1,2, ..., 9}– P = {S→D, S →DS, D → 0|1|2| ... |9 }
● Gera sintaticamente o conjunto dos números naturais
● O número 243 é gerado da seguinte forma:– S ⇒ DS ⇒ 2S ⇒ 2DS ⇒ 24S ⇒ 24D ⇒ 243
06/09/06 Ricardo Silveira 25
Exemplo● Ex: G = ({S}, {0, 1}, P, S) com
– P = {S → 0S1, S → 01}. Assim,– S ⇒ 0S1⇒ 00S11 ⇒ 03S13 ⇒ ... que é igual a 0n1n
para n ≥¸ 1.– Logo, L(G) = {0n1n |n ≥¸ 1}¸ 1g.
● Notação:– n vezes aaa ... = an
06/09/06 Ricardo Silveira 26
Exemplo– A gramática G = ({S,X,Y,A,B,F},{a,b},P,S) onde:
● P = { S → XY,X → XaA | XbB | F,Aa → aA, Ab → bA, AY → Ya,Ba → aB, Bb → bB, BY→ Yb,Fa → aF, Fb → bF, FY → ε}
– Gera a linguagem● {ww | w é palavra de {a, b}* }● Por exemplo, a palavra baba é derivada por
– S ⇒ XY ⇒ XaAY ⇒ XaYa ⇒ XbBaYa ⇒ XbaBYa ⇒ XbaYba ⇒ FbaYba ⇒ bFaYba ⇒ baFYba ⇒ baba
06/09/06 Ricardo Silveira 27
Expressões Regulares● Um outro formalismo importante, utilizado na
definição de linguagens regulares, consiste nas chamadas expressões regulares.
● As expressões regulares, diferentemente dos autômatos, fornecem uma forma declarativa de expressar cadeias de símbolos que são considerados válidos em uma linguagem
06/09/06 Ricardo Silveira 28
Definição– uma expressão regular sobre um alfabeto Σ é
indutivamente definida como segue:● Ø - denota a linguagem vazia.● ε - denota a linguagem contendo exclusivamente a
palavra vazia, ou seja, {ε}.● Qualquer símbolo x ∈ Σ é uma expressão regular e
denota a linguagem contendo a palavra unitária x, ou seja {x}.
● Se r e s são expressões regulares que denotam os conjuntos R e S, respectivamente, então (r+s), (rs), e (r*) são expressões regulares que denotam os conjuntos R∪S, RS = { uv | u ∈ R e v ∈ S} e R*, respectivamente
06/09/06 Ricardo Silveira 29
Exemplos● 00 é uma expressão regular que denota a palavra 00.● A expressão (0+1)* denota todas palavras sobre S={0
,1}.● (0 +1)*00(0 +1)* denota as cadeias de 0s e 1s com
pelo menos dois 0s consecutivos como subpalavra.● (0+1)*001 denota as cadeias de 0s e 1s que terminam
por 001.● a+b* denota as cadeias que tem qualquer quantidade
de a’s (mínimo1) seguidos de qualquer quantidade de b’s OU nenhum. Exemplo = {a, aaa, aab, aabbbbbb, ab, abbbb, ...}
06/09/06 Ricardo Silveira 30
Exemplos
06/09/06 Ricardo Silveira 31
Exemplo
06/09/06 Ricardo Silveira 32
Tipos de gramáticas● As linguagens são denominadas,
respectivamente, – Linguagens Sem Restrições – Linguagens Sensíveis ao Contexto – Linguagens Livres de Contexto – Linguagens Regulares
06/09/06 Ricardo Silveira 33
Tipos de gramáticas
Linguagens do Tipo 0
Linguagens do Tipo 1
Linguagens do Tipo 2
Linguagens do Tipo 3
06/09/06 Ricardo Silveira 34
Tipos de gramática● Classificação ou hierarquia de CHOMSKY
– Dado uma gramática G = (V, T, P, S), – A diferença reside nas restrições impostas nas regras de
derivação:● Gramática Tipo 3 ou Gramática Regular:
– P = {A → aX | A ∈ V, a ∈ T ∧ X ∈ {V ∪ {ε}}}– No lado direito da produção há no máximo um não-
terminal sempre acompanhado de uma variável terminal
● Gramática Tipo 2 ou Gramática Livre de Contexto:– P = {A → β A ∈ V ∧ β ∈ (V ∪ T)*}– O lado esquerdo da produção contém exatamente uma
variável● Gramática Tipo 1 ou Gramática Sensível ao Contexto:
– P = {α → β |α| ≤ |β|, α ∈ (V ∪ T)*V(V ∪ T)* ∧ β ∈ (V ∪ T)+}
● Gramática Tipo 0 ou gramática sem restrições:– P = {α → β | α ∈ (V ∪ T)*V(V ∪ T)* ∧ β ∈ (V ∪ T)*}
06/09/06 Ricardo Silveira 35
Sentença Vazia● Considerações:
– 1 - A motivação para o estudo de gramáticas foi à necessidade de e encontrar representações finitas para as linguagens.
– 2 - Se uma linguagem L possui uma descrição finita, então L1 = L ∪ {ε}, também deveria possuir descrição finita.
– 3 - Pela definição dada, as G.S.C., G.L.C. e G.R. não aceitam produções da forma S → ε - logo, a sentença vazia (ε) não pode pertencer as L.S.C., L.L.C. ou L.R..
06/09/06 Ricardo Silveira 36
Sentença vazia● Redefinição de G.S.C. G.L.C. e G.R.
– G.S.C., G.L.C. e G.R., podem ter a produção S→ ε , desde que:
● 1 – S seja o símbolo inicial da gramática;● 2 – S não apareça no lado direito de nenhuma
produção da gramática em questão.– Observação: segundo esta redefinição, a produção
S → ε só poderá ser usada na derivação de ε (a sentença vazia).
06/09/06 Ricardo Silveira 37
Recursividade das G.S.C.
● Uma gramática G é recursiva se existe um algoritmo que determine, para qualquer seqüência w, se w é ou não gerada por G.
● Uma gramática G é recursivamente enumerável se existe uma procedure que determine, para qualquer seqüência w, se w é ou não gerada por G.
06/09/06 Ricardo Silveira 38
Gramatica regular● Gramáticas lineares
– Seja G = (V, T, P, S) onde A e B ∈ Ve w é uma palavra de T*, G é uma
● Gramática linear a direita se todas as regras são da forma:– A→wB ou A→w
● Gramática linear a esquerda se todas as regras são da forma:– A→Βw ou A→w
● Gramática linear unitária a direita ou a esquerda se adicionalmente
– |w| ≤1● Uma gramática regular é qualquer gramática linear
06/09/06 Ricardo Silveira 39
Exemplos● Livro pag 56