LINGUAGENS E GRAMÁTICAS
Prof. Ronaldo R. Goldschmidt
[email protected]
LINGUAGENS E GRAMÁTICAS
LINGUAGENS E GRAMÁTICAS
Definição de Linguagem (Aurélio): “o uso da palavra
articulada ou escrita como meio de expressão e comunicação
entre pessoas”.
Definição insuficiente para permitir o desenvolvimento de
uma teoria formal sobre linguagens.
Linguagem é um dos conceitos mais fundamentais em
Computação e Informática.
Conceitos como alfabeto e cadeia de caracteres são
necessários para definir formalmente uma linguagem.
LINGUAGENS E GRAMÁTICAS
Def.: Um alfabeto Σ é um conjunto finito de símbolos (unidade
atômica) de algum tipo.
Exs.: Σ={a, b, c, ..., z} – alfabeto romano
Σ={0, 1} – alfabeto binário
Σ=∅ – alfabeto vazio
Σ={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} – alfabeto hexa
Σ=N – o conjunto dos naturais não é um alfabeto
Obs.: Cada símbolo é considerado como uma unidade atômica, não
importando sua representação visual. Exemplos de símbolos: a,
abc, begin, if, 5, 1024, 2.017e4.
LINGUAGENS E GRAMÁTICAS
Obs.: Por simplicidade, em geral, os símbolos utilizados são letras,
números e outros caracteres especiais tais como $, “espaço”, #
ou *, por exemplo.
Obs.: No entanto, não há uma definição formal para “símbolo”. O seu
significado deve ser intuído como uma entidade abstrata, um
conceito primitivo, e aceitá-lo como base para a teoria que será
desenvolvida.
LINGUAGENS E GRAMÁTICAS
Ex.: Alfabeto da Linguagem de Programação Pascal
Conjunto de símbolos (da tabela ASCII) usados na construção
de programas:
• Letras
• Dígitos
• Caracteres especiais como “<”, “/”, dentre outros
• Espaço ou “Branco”
Obs.: O alfabeto binário {a, b} é usado com freqüência. Além
da simplicidade, possui analogia com a representação
interna de computadores reais (o domínio de valores de
um bit é binário).
LINGUAGENS E GRAMÁTICAS
Def.: Uma cadeia (de caracteres) sobre um alfabeto é uma
seqüência finita de símbolos deste alfabeto justapostos.
Ex.: Sendo Σ={a, b}, são exemplos de cadeias: aba, aaaa,
bababb, a, b.
Em uma linguagem de programação, uma cadeia corresponde
a um programa.
São sinônimos de cadeia: palavra, sentença ou string.
Def.: A cadeia sem símbolos é chamada de cadeia vazia.
Notação: ε (ou λ)
Obs: ∅ ≠ {εε}
LINGUAGENS E GRAMÁTICAS
Def.: O comprimento de uma cadeia sobre um alfabeto é o
número de símbolos contidos na cadeia. Notação: |ω| é
o comprimento de uma cadeia qualquer ω
Exs.: |abra| = 4
|εε|=0
|xpto123|=7
Obs: Uma cadeia ω pode ser considerada como uma função
ω:{1, 2, ..., |ω|} ∑ (chamada isomorfismo natural). O
valor ω(j) corresponde ao símbolo na j-ésima posição de
ω, onde 1 ≤ j ≤ |ω|.
Ex.: ω=abra ω(1)= ω(4) = a; ω(2)=b; ω(3)=r
LINGUAGENS E GRAMÁTICAS
Def.: Se ω e µ são cadeias, então ω.µ (ou simplesmente ωµ) é a
concatenação da cadeia ω com a cadeia µ.
Ex.: abra.cadabra = abracadabra
Obs.: Para toda cadeia ω, εω = ωε = ω (ε é o elemento neutro)
Obs.: |ω.µ| = |ω| + |µ|
Ex.: |abra.cadabra| = |abra| + |cadabra| = 4 + 7 = 11
|abracadabra| = 11
Obs.: A operação de concatenação é associativa porém não é
comutativa:
ω.(µ.δ)=(ω.µ).δ
ω.µ ≠ µ.ω
LINGUAGENS E GRAMÁTICAS
Ex.: Concatenação de palavras u=ab v=ba uv=abba
Ex.: Concatenações sucessivas:
u³=ababab
u0=εε
un+1 = un .u
abra3 = abraabraabra
an = aaaa...a (o símbolo a repetido n vezes)
Obs.: O segundo e o terceiro exemplos de concatenação
sucessiva compõem um exemplo de definição por
indução.
LINGUAGENS E GRAMÁTICAS
Def.: Define-se cadeia elementar (ou unitária) a qualquer
cadeia formada por um único símbolo.
Ex: α = a é uma cadeia elementar pois | α | = 1
Obs: Os símbolos do alfabeto da Língua Portuguesa são
construídos a partir da concatenação de um número
variável de caracteres (letras do alfabeto romano).
Nesse sentido e contexto, embora representados com
diversos caracteres, tais símbolos são considerados
cadeias elementares.
LINGUAGENS E GRAMÁTICAS
Ainda no caso do alfabeto da Língua Portuguesa:
consideremos que ele contenha todas as palavras de nosso
idioma (conjugações de todos os verbos, as formas
flexionadas de todos os adjetivos, substantivos, etc.).
Exemplo de cadeia:
α = “Exemplo de cadeia no alfabeto da Língua Portuguesa”
|α|=8
Note que o alfabeto da Língua Portuguesa, embora extenso, é
finito e pode gerar infinitas cadeias.
LINGUAGENS E GRAMÁTICAS
Verifique se são verdadeiras ou falsas as afirmativas abaixo,
justificando suas respostas.
a) Se ω = r.s e |ω| = n e |r| = m Então |s| = n - m
b) Se u2=u Então u=ɛ
c) |un| = n|u|, para n ≥ 0
d) Se ω = abc Então ω(4) não está definido
e) Se ω = abc Então ω2(4) = ɛ
LINGUAGENS E GRAMÁTICAS
Def.: Prefixo de ω é toda cadeia obtida a partir da remoção de
0 ou mais símbolos do final de ω.
Ex.: A cadeia abra possui 5 prefixos: abra, abr, ab , a, ε
Def.: Prefixo próprio de ω é todo prefixo de ω diferente de ω.
Ex.: A cadeia abra possui 4 prefixos próprios: abr, ab , a, ε
LINGUAGENS E GRAMÁTICAS
Def.: Sufixo de ω é toda cadeia obtida a partir da remoção de
0 ou mais símbolos do começo de ω.
Ex.: A cadeia abra possui 5 sufixos: abra, bra, ra, a, ε
Def.: Sufixo próprio de ω é todo sufixo de ω diferente de ω.
Ex.: A cadeia abra possui 4 sufixos próprios: bra, ra, a, ε
LINGUAGENS E GRAMÁTICAS
Def.: Subcadeia (ou Subpalavra) de ω é toda cadeia obtida a
partir da remoção de um prefixo e/ou um sufixo de ω.
Exs.: São exemplos de subcadeias de abra: br, a, ab, ra, ε
Def.: Uma cadeia reversa é uma cadeia em que os símbolos
são escritos em ordem inversa da cadeia original. Notação:
ωR
Obs.: Seja ω = a1a2...an, com ai ∈ Σ, i ≥ 0. Então, a reversa de
ω é ωR = an...a2a1
Ex.:
ω = abra e ωR = arba
LINGUAGENS E GRAMÁTICAS
Definição formal do reverso de uma cadeia ω dada por indução:
(i) Se ω é uma cadeia tal que | ω | = 0, então ωR = ω = ε
(ii) Se ω é uma cadeia tal que | ω | = n + 1 > 0, então ω = ua para
algum a ∈ Σ e ωR = auR
Obs.: A seguir uma ilustração de como uma prova por indução pode
depender de uma definição dada por indução.
Teorema: Para quaisquer cadeias ω e µ, (ωµ)R = µRωR
Ex: (dogcat)R = (cat)R (dog)R =tacgod
LINGUAGENS E GRAMÁTICAS
Para quaisquer cadeias ω e µ, (ωµ)R = µR ωR . Demonstração:
(i) Sup. | µ | = 0
Portanto, µ = ε
Logo: (ωµ)R = (ωε)R = ωR = εωR = ε R ωR = µR ωR
(ii) Hipótese de Indução: se | µ | ≤ n, então (ωµ)R = µR ωR
(iii) Passo Indutivo: Seja | µ | = n + 1. Então, µ = ua, para alguma cadeia u e a ∈ Σ
tal que | u | = n (note que | a | = 1)
Logo: (ωµ)R = (ω(ua))R, pois µ = ua
= ((ωu)a)R, pois a concatenação é associativa
= a(ωu)R, pela definição de cadeia reversa de (ωu)a
= auRωR, pela hipótese de indução
= (ua)RωR, pela definição de cadeia reversa de ua
= µR ωR , uma vez que µ = ua
LINGUAGENS E GRAMÁTICAS
Def.: Uma cadeia palíndroma é toda cadeia ω tal que ω = ωR.
Exs.:
arara, seres, salas, reviver, ovo, osso, radar, ama, anilina, mamam,
socos, tapas, somos, somavamos, ala, ata, radar, rapar, mirim,
reler, reviver, sacas, siris, ame a ema, assam a massa, etc...
Atenção: Convenção de tipo para símbolos, cadeias e alfabetos:
Símbolos Letras minúsculas do início do alfabeto romano (a, b, c)
ou dígitos.
Cadeias Letras minúsculas do final do alfabeto romano (w, x, y, z)
ou letras minúsculas do alfabeto grego (ω, µ, etc..)
Alfabetos Letras maiúsculas do alfabeto grego (Σ, Γ, Ω, etc...)
LINGUAGENS E GRAMÁTICAS
Def.: O conjunto de todas as cadeias, incluindo a cadeia
vazia, sobre um alfabeto Σ é denotado por Σ*
Obs.: O conjunto de todas as cadeias sobre um alfabeto Σ é
definido recursivamente por:
i) ε ∈ ∑*
e para qualquer ω ∈ ∑ , vale que ω ∈ ∑*
ii) para qualquer ω, µ ∈ ∑* , vale que ωµ ∈ ∑*
Ex: Se ∑ = {a, b}, então:
∑+ = {a, b, aa, ab, ba, bb, aaa, ...}
∑* = {ε, a, b, aa, ab, ba, bb, aaa, ...}
LINGUAGENS E GRAMÁTICAS
Def.: O conjunto de todas as cadeias, incluindo a cadeia
vazia, sobre um alfabeto Σ é denotado por Σ*
Obs.: Σ é um alfabeto finito com n elementos, mas Σ * é
infinito. Pode ser enumerado da seguinte forma:
i) Para cada k ≥ 0, todas as strings de comprimento k devem
ser enumeradas antes das de comprimento k+1
ii) As nk strings devem ser enumeradas lexicograficamente.
Ex: Se ∑ = {0, 1}, então:
∑* = {ε, 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, ...}
LINGUAGENS E GRAMÁTICAS
Def.: Uma linguagem formal L sobre um alfabeto Σ é
qualquer subconjunto de Σ*, L ⊆ Σ*
Exs: Ø, Σ, Σ*, Σ+ são linguagens formais sobre qualquer Σ
Obs.: Como muitas linguagens são infinitas, utiliza-se a
seguinte representação implícita de conjuntos:
L = {ω ∈ Σ* / ω possui uma propriedade P}
Exs.: {ω ∈ Σ* / ω = ωR}, linguagem de palavras palíndromas
{aω / ω ∈ Σ*}, linguagem de palavras iniciadas por “a”,
{ω ∈ Σ*/ ω(1)=a}
LINGUAGENS E GRAMÁTICAS
Def.: Uma linguagem formal L sobre um alfabeto Σ é
qualquer subconjunto de Σ*, L ⊆ Σ*
Obs.: 2Σ* é o conjunto de todas as linguagens sobre um
alfabeto Σ.
Ex.: Linguagem Formal: Linguagem de Programação
Uma Linguagem de Programação como Pascal é formalmente
definida pelo conjunto de todos os programas (palavras) da
linguagem.
Obs: Sejam L uma linguagem formal sobre Σ e Σ ⊆ Ω.
Pergunta-se: L é linguagem formal sobre Ω ?
LINGUAGENS E GRAMÁTICAS
Relação entre símbolo, alfabeto, cadeia e linguagem
LINGUAGENS E GRAMÁTICAS
Relação entre símbolo, alfabeto, cadeia e linguagem
LINGUAGENS E GRAMÁTICAS
Relação entre símbolo, alfabeto, cadeia e linguagem
Obs: Distinção entre o símbolo “b” e a cadeia/sentença “b”
LINGUAGENS E GRAMÁTICAS
Atividades Práticas
• Lista de Exercícios II – Até o exercício 7
Exercício de Programação
Exercício 17 da Lista II: Elabore um programa em C que apresente o valor
decimal e o glifo correspondente da tabela ASCII do símbolo 32 ao símbolo 126
(caracteres imprimíveis).
LINGUAGENS E GRAMÁTICAS
Operações com Linguagens (Construção de Outras Linguagens)
Obs: Linguagens são conjuntos (em essência)
União
L1 ∪ L2 = { s | s ∈ L1 ou s ∈ L2 }
Ex.: { ab, ac } ∪ { ab, bc } = { ab, ac, bc }
Interseção
L1 ∩ L2 = { s | s ∈ L1 e s ∈ L2 }
Ex.: { ab, ac } ∩ { ab, bc } = { ab }
LINGUAGENS E GRAMÁTICAS
Operações com Linguagens (Construção de Outras Linguagens)
Obs: Linguagens são conjuntos (em essência)
Concatenação
L1.L2 = { st | s ∈ L1 e t ∈ L2 }
Ex.: { ab, ac }.{ ab, bc } = { abab, abbc, acab, acbc }
Observações:
• L1.∅ = ∅. L1 = ∅
(demonstração)
• Concatenação não é comutativa (contraexemplo)
LINGUAGENS E GRAMÁTICAS
Operações com Linguagens (Construção de Outras Linguagens)
Fechamento de Kleene (Estrela de Kleene)
Seja A uma linguagem definida sobre um alfabeto Σ. Então A* é
uma linguagem obtida a partir de A como se segue:
A* = A0 ∪ A1 ∪ ... ∪ An ∪ ...
onde: A0 = { ε }
e
An = An-1.A, n ≥ 0
Ex.1: A = { a }
A* = { ε } ∪ { a } ∪ { aa } ∪ { aaa } ∪...
= { ε, a, aa, aaa, ... }
LINGUAGENS E GRAMÁTICAS
Operações com Linguagens (Construção de Outras Linguagens)
Fechamento de Kleene (Estrela de Kleene)
Seja A uma linguagem definida sobre um alfabeto Σ. Então A* é
uma linguagem obtida a partir de A como se segue:
A* = A0 ∪ A1 ∪ ... ∪ An ∪ ...
onde: A0 = { ε }
e
An = An-1.A , n ≥ 0
Ex2.: A = { ab, b}
A* = { ε } ∪ { ab, b } ∪ { abab, abb, bab, bb } ∪...
= { ε, ab, b, abab, abb, bab, bb, ... }
LINGUAGENS E GRAMÁTICAS
Operações com Linguagens (Construção de Outras Linguagens)
Fechamento de Kleene (Estrela de Kleene)
Seja A uma linguagem definida sobre um alfabeto Σ. Então A* é
uma linguagem obtida a partir de A como se segue:
A* = A0 ∪ A1 ∪ ... ∪ An ∪ ...
onde: A0 = { ε }
Ex3.: A = ∅
A* = { ε }
e
An = An-1.A , n ≥ 0
LINGUAGENS E GRAMÁTICAS
Operações com Linguagens (Construção de Outras Linguagens)
Fechamento Positivo
A+ = A*.A ou A* = { ε } ∪ A+
Ex.: A = { a }
A+ = { ε, a, aa, aaa, ... }.{ a } = { a, aa, aaa, ... }
Complemento
A =
Ex.:
∑
*
A={a}
− A
A = { ε, a, aa, aaa, ... }-{ a } = {ε, aa, aaa, ... }
LINGUAGENS E GRAMÁTICAS
Operações com Linguagens (Construção de Outras Linguagens)
Quociente
L1/L2 = { x | xy ∈ L1 e y ∈ L2 }
Exs.: { abb, acb }/{ b } = { ab, ac }
{ abb, acb }/{ b, bb } = { ab, ac, a }
Sendo:
L1 = { aib | i ≥ 0 } = {b, ab, aab, aaab, ...} L2 = { b }
L3 = { aib | i ≥ 1 } = {ab, aab, aaab, ...}
L1/ L2 = {ɛ, a, aa, aaa, aaaa, ...} = { ai | i ≥ 0 }
L1/ L3 = {ɛ, a, aa, aaa, ...} = { ai | i ≥ 0 }
LINGUAGENS E GRAMÁTICAS
Sendo:
L1 = { aib | i ≥ 0 } = {b, ab, aab, aaab, ...} L2 = { b }
L3 = { aib | i ≥ 1 } = {ab, aab, aaab, ...}
L4 = { aibci | i ≥ 0 } = {b, abc, aabcc, aaabccc, ...}
L5 = { bci | i ≥ 0 } = {b, bc, bcc, bccc, ...}
L6 = { ci | i ≥ 1 } = {c, cc, ccc, ...}
L4/ L5 =
L5/ L4 =
L1/ L5 =
L4/ L1 =
L6/ L2 =
LINGUAGENS E GRAMÁTICAS
Atividades Práticas
• Lista de Exercícios II – Exercício 8
Exercício de Programação
Exercício 18 da Lista II: Elabore um programa em C que receba como entrada
duas linguagens finitas L1 e L2, ambas não vazias (e sem a cadeia vazia) e
apresente como saídas as seguintes linguagens: L1 ∪ L2, L1 ∩ L2, L1.L2.
LINGUAGENS E GRAMÁTICAS
Observação:
Na teoria de autômatos, um problema em geral se caracteriza
pela decisão se uma determinada cadeia pertence ou não a
uma linguagem específica.
Em termos coloquiais, um problema pode ser expresso como
pertinência a uma linguagem.
Em termos formais, sendo L uma linguagem formal sobre Σ,
então o problema L consiste em: dada uma cadeia ω em Σ*,
definir se ω está ou não em L.
LINGUAGENS E GRAMÁTICAS
Métodos de Representação Finita de Linguagens:
• Gramáticas
• Reconhecedores
• Enumerações
Obs: Os dois primeiros são formas duais de representação.
Obs: A notação usada para representar uma linguagem é
chamada de metalinguagem.
Exs:
L={ω ∈ Σ* / ω é palíndroma}
L={ara, arara, ...}
LINGUAGENS E GRAMÁTICAS
Toda Linguagem possui:
• Sintaxe – Estruturas para representação de construções
Ex: arara ∈ L={ω ∈ Σ* / ω é palíndroma}, Σ={a,r}
• Semântica – Significado associado às construções
arara
LINGUAGENS E GRAMÁTICAS
Como uma linguagem de programação é o conjunto (infinito) de
todos os programas dessa linguagem, ela requer uma definição
adequada para ser implementada computacionalmente (gramática).
Uma gramática é um sistema formal baseado em regras de
substituição que, quando aplicadas sucessivamente, podem gerar,
de forma exaustiva, o conjunto de cadeias que compõem uma
determinada linguagem. Assim, o conjunto de todas as palavras
geradas por uma gramática define a linguagem associada.
As gramáticas usadas para linguagens naturais como o Português
são análogas às usadas para linguagens artificiais como o Pascal e
o C.
LINGUAGENS E GRAMÁTICAS
Consideremos a oração em Português: “O menino atravessou a rua
distraidamente”. Esta oração está sintaticamente correta, pois obedece às seguintes
regras:
• Frase = Sujeito + Predicado + Complemento
• Sujeito = Artigo + Substantivo
• Predicado = Verbo + Objeto Direto
• Objeto Direto = Artigo + Substantivo
• Artigo = {o, a}
• Substantivo = {menino, rua}
• Verbo = {atravessou}
• Complemento = {distraidamente}
E as orações: “A rua atravessou o menino distraidamente” e “O rua atravessou a
menino distraidamente”?
LINGUAGENS E GRAMÁTICAS
Repare que “artigo”, “substantivo” e “verbo” são exemplos de
classes gramaticais da Língua Portuguesa. Normalmente
independente da oração para classificarmos os símbolos. No
exemplo:
•Artigo = {o, a}
• Substantivo = {menino, rua}
• Verbo = {atravessou}
“Sujeito”, “predicado”, “objeto direto” são exemplos de funções
sintáticas que os símbolos, isolados ou em conjunto, assumem na
oração. A caracterização da função sintática depende do símbolo (ou
conjunto de símbolos) e do papel que ele exerce na oração.
LINGUAGENS E GRAMÁTICAS
Um site que permite a análise de sentenças (parser) da Língua
Portuguesa é o VISL:
http://beta.visl.sdu.dk/visl/pt/parsing/automatic/trees.php
Exemplo:
LINGUAGENS E GRAMÁTICAS
Def.: Uma Gramática de Chomsky, Gramática Irrestrita ou simplesmente
Gramática é uma quádrupla ordenada:
G=(V,T,P,S) , na qual:
• V e T conjuntos finitos não vazios e disjuntos de símbolos variáveis e
terminais, respectivamente.
• P:(V∪T)+ (V∪T)* é uma Relação de Produções (Regras de Substituição),
sendo conjunto um conjunto finito e não vazio.
• S, um símbolo destacado de V (chamado símbolo inicial)
Regras de Produção – Formato
(α,β) ou α β
α β1| β2| ...| βn
LINGUAGENS E GRAMÁTICAS
Derivação: Substituição de uma subpalavra de acordo com uma regra
de produção.
Formalmente: Sendo G=(V, T, P, S) uma gramática, uma Derivação é
um par da relação de derivação ⇒: (V∪T)+ (V∪T)*, representado
por: <α, β> ou α ⇒G β
⇒G é indutivamente definida como segue:
• Para toda regra de produção S → β, o seguinte par pertence a ⇒G :
S ⇒G β
• Para todo par η ⇒G ρασ de ⇒G, se α → β é uma regra de
produção, então o seguinte par pertence a ⇒G: η ⇒G ρ β σ
LINGUAGENS E GRAMÁTICAS
Ex: Seja uma gramática G=(V, T, P, N) definida por
V={N,D}
T={0,1,2,...,9}
P={ND, NDN, D0|1|2|...|9}
Uma derivação da palavra 243 pode ser dada por:
N⇒G
DN⇒G
2N⇒G
2DN⇒G
24N⇒G
24D⇒G
243
(NDN)
(D2)
(NDN)
(D4)
(ND)
(D3)
Pergunta-se: Existem outras derivações para a mesma palavra?
LINGUAGENS E GRAMÁTICAS
Derivação: Substituição de uma subpalavra de acordo com uma
regra de produção.
Sucessivos passos de derivação são definidos como segue:
⇒* Fecho transitivo e reflexivo da relação ⇒, ou seja, zero ou
mais passos de derivações sucessivos.
⇒+ Fecho transitivo da relação ⇒, ou seja, um ou mais passos de
derivações sucessivos.
⇒i Exatos i passos de derivações sucessivos, sendo i um número
natural.
LINGUAGENS E GRAMÁTICAS
Voltando ao exemplo anterior: G=(V, T, P, N) definida por
V={N,D}
T={0,1,2,...,9}
P={ND, NDN, D0|1|2|...|9}
Como vimos, uma derivação da palavra 243 pode ser dada por:
N⇒
DN⇒
2N⇒
2DN⇒
24N⇒
24D⇒
243
(NDN)
(D2)
(NDN)
(D4)
(ND)
(D3)
Portanto, temos que: S ⇒* 243 ou S ⇒+ 243 ou S ⇒6 243
LINGUAGENS E GRAMÁTICAS
Def.: Seja G=(V, T, P, S) uma gramática. A Linguagem Gerada
por G é composta por todas as palavras de símbolos terminais
deriváveis a partir de S.
Notação: L(G) ou GERA(G) = {w ∈ T* / S⇒+w}
Ex:
Sendo V={N,D}
T={0,1,2,...,9}
P={ND, NDN, D0|1|2|...|9}
G=(V, T, P, N) é uma gramática capaz de gerar qualquer número
natural válido em uma linguagem de programação.
LINGUAGENS E GRAMÁTICAS
Analisando o exemplo anterior, onde:
G=(V, T, P, N) é uma gramática geradora de números naturais.
V={N,D}
T={0,1,2,...,9}
P={ND, NDN, D0|1|2|...|9}
A seguinte interpretação indutiva pode ser dada:
• Base da Indução: todo dígito é um número natural (regras ND
e D0|1|2|...|9).
• Passo de Indução: Se x é um número natural, então a
concatenação de x com qualquer dígito também é um número
natural (regra NDN).
LINGUAGENS E GRAMÁTICAS
Existem representações alternativas para gramáticas. Uma das mais comuns é:
G = (V, Σ, P, S), onde:
V contém todo o vocabulário (todos os símbolos)
Σ contém os símbolos terminais
P contém as produções
S é o símbolo inicial
N = V - Σ (corresponde ao conjunto de símbolos variáveis da definição adotada
na disciplina)
Exemplo: a gramática geradora de números naturais vista no exemplo anterior
G = (V, Σ, P, S)
V = {S, D, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
P = {SD, SDS, D0|1|2|...|9}
LINGUAGENS E GRAMÁTICAS
Def.: Duas gramáticas G1 e G2 são ditas equivalentes se ambas
geram a mesma linguagem, ou seja:
Gera (G1) = Gera(G2)
Obs: Em geral, adotaremos as seguintes convenções:
• A, B, C, ..., S, T para símbolos variáveis
• a, b, c, ..., s, t para símbolos terminais
• u, v, w, x, y, z para palavras com somente símbolos terminais
• α, β, ... para palavras com símbolos terminais ou variáveis
LINGUAGENS E GRAMÁTICAS
Consideremos as seguintes gramáticas e respectivas linguagens:
• G0 = ({S},{a,b},{S→aS, S→bS, S→ ε},S),
L0=Gera(G0)={a, b}*
• G1 = ({S},{a,b},{S→aS, S→bS, S→ a|b},S),
L1=Gera(G1)={a, b}+
• G2 = ({S,X},{a,b},{S→aX, X→aX, X→bX, X→ε},S),
L2 formada por cadeias iniciadas pelo símbolo a.
• G3 = ({S,X},{a,b},{S→aX, X→aX, X→bX, X→b},S),
L3 formada por cadeias iniciadas pelo símbolo a e terminadas por b.
• G4 = ({S,X},{a,b},{S→XbXbX, X→aX, X→ε},S),
L4 formada por cadeias que contenham exatamente dois símbolos b.
• G5 = ({S,X},{a,b},{S→bX, X→aX, X→ε},S),
L5 contém cadeias iniciadas com o símbolo b, sendo este o único símbolo b
existente nessas cadeias.
Para cada uma, apresente um exemplo de sentença e de derivação associada
LINGUAGENS E GRAMÁTICAS
Consideremos as seguintes gramáticas e respectivas linguagens:
• L0=Gera(G0)={a, b}*, L1=Gera(G1)={a, b}+, L2 formada por cadeias iniciadas
pelo símbolo a. L3 formada por cadeias iniciadas pelo símbolo a e terminadas por
b. L4 formada por cadeias que contenham exatamente dois símbolos b. L5 contém
cadeias iniciadas com o símbolo b, sendo este o único símbolo b existente nessas
cadeias.
Analise as relações
inclusão entre elas.
de
LINGUAGENS E GRAMÁTICAS
Uma gramática G = (V, T, P, S) está bem formada se atender às
seguintes condições mínimas:
• V, T, P devem ser conjuntos finitos e não vazios;
•Σ=V∪T
•V∩T=∅
•S∈V
Uma gramática pode estar bem formada mas não gerar todas as
cadeias de uma linguagem. Exemplos: G = (V, T, P, S), onde:
a) V = {S, X}, T = {a, b}, P = {X→aX | b}, S}
b) V = {S}, T = {a, b}, P = {S→aS | b}, S}, mas G não gera bba
LINGUAGENS E GRAMÁTICAS
Hierarquia de Chomsky
Estudo sistemático das linguagens formais teve forte impulso no final
da década de 1950 com publicação de dois artigos do linguista Noam
Chomsky.
Os artigos apresentavam resultados sobre a classificação hierárquica
das linguagens, conhecida como Hierarquia de Chomsky.
Tal hierarquia tem como mérito agrupar as linguagens em classes, de
tal forma que elas possam ser hierarquizadas segundo sua
complexidade relativa.
Como consequência, conhecida a classe de uma determinada linguagem
pode-se antecipar propriedades fundamentais dessa linguagem, assim
como vislumbrar modelos de implementação mais adequados à sua
realização.
LINGUAGENS E GRAMÁTICAS
Hierarquia de Chomsky
Possui quatro classes distintas de linguagens: tipos 0, 1, 2 e 3
Cada tipo é caracterizado por restrições sobre o formato das produções
α→β definidas pelo conceito geral de gramática.
Tipo 0 – Linguagens Recursivamente Enumeráveis
ou Irrestritas
Tipo 1 – Linguagens Sensíveis ao Contexto
Tipo 2 – Linguagens Livres de Contexto
Tipo 3 – Linguagens Regulares
LINGUAGENS E GRAMÁTICAS
Hierarquia de Chomsky – Linguagens Regulares (Tipo 3)
Tipo de linguagem mais simples da hierarquia.
Qualquer gramática G=(V,T,P,S) geradora de linguagens regulares possui
produções α→β que atendam às seguintes restrições:
•α∈V
• (β
β ∈ T) ou (β
β ∈ V) ou (β
β ∈ T.V) ou (β
β = ɛ), de forma não exclusiva ou
• (β
β ∈ T) ou (β
β ∈ V) ou (β
β ∈ V.T) ou (β
β = ɛ), de forma não exclusiva
Exemplos:
G1=({S,A}, {0,1,2,3}, {S→
→0S, S→
→1S, S→
→A, A→
→2, A→
→3}, S)
→S2, S→
→S3, S→
→A, A→
→1, A→
→0}, S)
G2=({S,A}, {0,1,2,3}, {S→
LINGUAGENS E GRAMÁTICAS
Hierarquia de Chomsky – Linguagens Livres de Contexto (Tipo 2)
Qualquer gramática G=(V,T,P,S) geradora de linguagens livres de
contexto possui produções α→β que atendam às seguintes restrições:
• α ∈ V (só possuem um símbolo não terminal do lado esquerdo)
• β ∈ (V ∪ T)* (qualquer combinação de símbolos do lado direito)
Exemplo:
G3=({S}, {0,1}, {S→
→0S1, S→
→ɛ}, S)
G3 é livre de contexto.
LINGUAGENS E GRAMÁTICAS
Hierarquia de Chomsky – Linguagens Sensíveis ao Contexto (Tipo 1)
Qualquer gramática G=(V,T,P,S) geradora de linguagens sensíveis ao
contexto possui produções α→β que atendam às seguintes restrições:
• α ∈ (V∪
∪T)*.V. (V∪
∪T)*
• β ∈ (V∪
∪T)*
• | β | ≥ | α | (O comprimento da cadeia do lado direito de cada produção
seja no mínimo igual ao comprimento da cadeia do lado esquerdo)
Obs: Não há possibilidade de reduzir o comprimento das formas
sentenciais durante derivações em gramáticas deste tipo.
Exemplo:
G4=({S,X,Y}, {a,b,c}, {S→
→aXb, S→
→aXa, Xa→
→bc, Xb→
→cb}, S)
G4 é sensível ao contexto e não é livre de contexto.
LINGUAGENS E GRAMÁTICAS
Hierarquia de Chomsky – Linguagens Irrestritas (Tipo 0)
Qualquer gramática G=(V,T,P,S) geradora de linguagens sensíveis ao
contexto possui produções α→β que atendam apenas a uma restrição:
• α ∈ (V∪
∪T)*.V. (V∪
∪T)* (lado esquerdo deve conter pelo menos um
símbolo não terminal)
• β ∈ (V∪
∪T)*
Exemplo:
G5=({S,X,Y}, {a,b,c}, {S→
→aXb, S→
→aXa, Xa→
→c, Xb→
→c, X→
→ɛ}, S)
G5 é irrestrita e não é sensível ao contexto (devido às produções Xa→
→c,
Xb→
→c, X→
→ɛ): |α
α| ≥ |β
β|
As gramáticas G1, G2, G3 e G4 são todas irrestritas.
LINGUAGENS E GRAMÁTICAS
Hierarquia de Chomsky – Linguagens, Gramáticas e Reconhecedores
Tipo
Classe de
Linguagem
Modelo de
Gramática
Modelo de Reconhecedor
0
Recursivamente
Enumeráveis
Irrestrita
Máquina de Turing
1
Sensíveis ao
Contexto
Sensível ao
Contexto
Máquina de Turing com Fita
Limitada
2
Livres de
Contexto
Livre de
Contexto
Autômato de Pilha
3
Regulares
Linear (direita
ou esquerda)
Autômato Finito
Obs: As propriedades, características estruturais e modelos de reconhecimento mais adequados para
cada uma das classes da Hierarquia de Chomsky serão estudados mais à frente.
LINGUAGENS E GRAMÁTICAS
Atividades Práticas
• Lista de Exercícios II - Completar
Leituras Recomendadas
• Cap. 2 – Paulo Blauth Menezes
• Seções 2.1 a 2.3 – Marcus Ramos
• Seções 1.7 e 1.8 – Papadimitriou
• Seção 1.5 – Hopcroft & Ullman
Download

LINGUAGENS E GRAMÁTICAS