You are on page 1of 63

LINGUAGENS E GRAMTICAS

Prof. Ronaldo R. Goldschmidt


ronaldo.rgold@gmail.com
LINGUAGENS E GRAMTICAS
Definio de Linguagem (Aurlio): o uso da palavra
articulada ou escrita como meio de expresso e comunicao
entre pessoas.

Definio insuficiente para permitir o desenvolvimento de
uma teoria formal sobre linguagens.

Linguagem um dos conceitos mais fundamentais em
Computao e Informtica.

Conceitos como alfabeto e cadeia de caracteres so
necessrios para definir formalmente uma linguagem.

LINGUAGENS E GRAMTICAS
Def.: Um alfabeto E um conjunto finito de smbolos (unidade
atmica) de algum tipo.

Exs.: ={a, b, c, ..., z} alfabeto romano
={0, 1} alfabeto binrio
=C alfabeto vazio
E={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} alfabeto hexa
=N o conjunto dos naturais no um alfabeto

Obs.: Cada smbolo considerado como uma unidade atmica, no
importando sua representao visual. Exemplos de smbolos: a,
abc, begin, if, 5, 1024, 2.017e4.
LINGUAGENS E GRAMTICAS

Obs.: Por simplicidade, em geral, os smbolos utilizados so letras,
nmeros e outros caracteres especiais tais como $, espao, #
ou *, por exemplo.


Obs.: No entanto, no h uma definio formal para smbolo. O seu
significado deve ser intudo como uma entidade abstrata, um
conceito primitivo, e aceit-lo como base para a teoria que ser
desenvolvida.
LINGUAGENS E GRAMTICAS
Ex.: Alfabeto da Linguagem de Programao Pascal
Conjunto de smbolos (da tabela ASCII) usados na construo
de programas:
Letras
Dgitos
Caracteres especiais como <, /, dentre outros
Espao ou Branco

Obs.: O alfabeto binrio {a, b} usado com frequncia. Alm
da simplicidade, possui analogia com a representao
interna de computadores reais (o domnio de valores de
um bit binrio).
LINGUAGENS E GRAMTICAS
Def.: Uma cadeia (de caracteres) sobre um alfabeto uma
seqncia finita de smbolos deste alfabeto justapostos.

Ex.: Sendo ={a, b}, so exemplos de cadeias: aba, aaaa,
bababb, a, b.

Em uma linguagem de programao, uma cadeia corresponde
a um programa.

So sinnimos de cadeia: palavra, sentena ou string.

Def.: A cadeia sem smbolos chamada de cadeia vazia.
Notao: c (ou ) Obs: C {c}
LINGUAGENS E GRAMTICAS
Def.: O comprimento de uma cadeia sobre um alfabeto o
nmero de smbolos contidos na cadeia. Notao: |e|
o comprimento de uma cadeia qualquer e

Exs.: |abra| = 4 |c|=0 |xpto123|=7

Obs: Uma cadeia e pode ser considerada como uma funo
e:{1, 2, ..., |e|} (chamada isomorfismo natural). O
valor e(j) corresponde ao smbolo na j-sima posio de
e, onde 1 s j s |e|.

Ex.: e=abra e(1)= e(4) = a; e(2)=b; e(3)=r
LINGUAGENS E GRAMTICAS
Def.: Se e e so cadeias, ento e. (ou simplesmente e) a
concatenao da cadeia e com a cadeia .
Ex.: abra.cadabra = abracadabra

Obs.: Para toda cadeia e, ce = ec = e (c o elemento neutro)

Obs.: |e.| = |e| + ||
Ex.: |abra.cadabra| = |abra| + |cadabra| = 4 + 7 = 11
|abracadabra| = 11

Obs.: A operao de concatenao associativa porm no
comutativa: e.(.o)=(e.).o e. = .e
LINGUAGENS E GRAMTICAS
Ex.: Concatenao de palavras u=ab v=ba uv=abba

Ex.: Concatenaes sucessivas:
u=ababab
u
0
=c
u
n+1
= u
n
.u
abra
3
= abraabraabra
a
n
= aaaa...a (o smbolo a repetido n vezes)

Obs.: O segundo e o terceiro exemplos de concatenao
sucessiva compem um exemplo de definio por
induo.
LINGUAGENS E GRAMTICAS
Def.: Define-se cadeia elementar (ou unitria) a qualquer
cadeia formada por um nico smbolo.

Ex: o = a uma cadeia elementar pois | o | = 1

Obs: Os smbolos do alfabeto da Lngua Portuguesa so
construdos a partir da concatenao de um nmero
varivel de caracteres (letras do alfabeto romano).
Nesse sentido e contexto, embora representados com
diversos caracteres, tais smbolos so considerados
cadeias elementares.
LINGUAGENS E GRAMTICAS
Ainda no caso do alfabeto da Lngua Portuguesa:
consideremos que ele contenha todas as palavras de nosso
idioma (conjugaes de todos os verbos, as formas
flexionadas de todos os adjetivos, substantivos, etc.).

Exemplo de cadeia:
o = Exemplo de cadeia no alfabeto da Lngua Portuguesa
| o | = 8

Note que o alfabeto da Lngua Portuguesa, embora extenso,
finito e pode gerar infinitas cadeias.
LINGUAGENS E GRAMTICAS
Verifique se so verdadeiras ou falsas as afirmativas abaixo,
justificando suas respostas.

a) Se e = r.s e |e| = n e |r| = m Ento |s| = n - m

b) Se u
2
=u Ento u=

c) |u
n
| = n|u|, para n > 0

d) Se e = abc Ento e(4) no est definido

e) Se e = abc Ento e
2
(4) =

LINGUAGENS E GRAMTICAS
Def.: Prefixo de e toda cadeia obtida a partir da remoo de
0 ou mais smbolos do final de e.

Ex.: A cadeia abra possui 5 prefixos: abra, abr, ab , a, c


Def.: Prefixo prprio de e todo prefixo de e diferente de e.

Ex.: A cadeia abra possui 4 prefixos prprios: abr, ab , a, c

LINGUAGENS E GRAMTICAS
Def.: Sufixo de e toda cadeia obtida a partir da remoo de
0 ou mais smbolos do comeo de e.

Ex.: A cadeia abra possui 5 sufixos: abra, bra, ra, a, c


Def.: Sufixo prprio de e todo sufixo de e diferente de e.

Ex.: A cadeia abra possui 4 sufixos prprios: bra, ra, a, c


LINGUAGENS E GRAMTICAS
Def.: Subcadeia (ou Subpalavra) de e toda cadeia obtida a
partir da remoo de um prefixo e/ou um sufixo de e.

Exs.: So exemplos de subcadeias de abra: br, a, ab, ra, c

Def.: Uma cadeia reversa uma cadeia em que os smbolos
so escritos em ordem inversa da cadeia original. Notao:
e
R


Obs.: Seja e = a
1
a
2
...a
n
, com a
i
e E, i > 0. Ento, a reversa de
e e
R
= a
n
...a
2
a
1


Ex.: e = abra e e
R
= arba

LINGUAGENS E GRAMTICAS
Definio formal do reverso de uma cadeia e dada por induo:
(i) Se e uma cadeia tal que | e | = 0, ento e
R
= e = c
(ii) Se e uma cadeia tal que | e | = n + 1 > 0, ento e = ua para
algum a e E e e
R
= au
R

Obs.: A seguir uma ilustrao de como uma prova por induo pode
depender de uma definio dada por induo.

Teorema: Para quaisquer cadeias e e , (e)
R
=
R
e
R


Ex: (dogcat)
R
= (cat)
R
(dog)
R
=tacgod

LINGUAGENS E GRAMTICAS
Para quaisquer cadeias e e , (e)
R
=
R
e
R
. Demonstrao:
(i) Sup. | | = 0
Portanto, = c
Logo: (e)
R
= (ec)
R
= e
R
= ce
R
= c
R
e
R
=
R
e
R


(ii) Hiptese de Induo: se | | n, ento (e)
R
=
R
e
R

(iii) Passo Indutivo: Seja | | = n + 1. Ento, = ua, para alguma cadeia u e a e E
tal que | u | = n (note que | a | = 1)
Logo: (e)
R
= (e(ua))
R
, pois = ua
= ((eu)a)
R
, pois a concatenao associativa
= a(eu)
R
, pela definio de cadeia reversa de (eu)a
= au
R
e
R
, pela hiptese de induo
= (ua)
R
e
R
, pela definio de cadeia reversa de ua
=
R
e
R
, uma vez que = ua
LINGUAGENS E GRAMTICAS
Def.: Uma cadeia palndroma toda cadeia e tal que e = e
R
.
Exs.:
arara, seres, salas, reviver, ovo, osso, radar, ama, anilina, mamam,
socos, sapas, somos, somavamos, ala, ata, radar, rapar, mirim,
reler, reviver, sacas, siris, ame a ema, assam a massa, etc...

Ateno: Conveno de tipo para smbolos, cadeias e alfabetos:
Smbolos Letras minsculas do incio do alfabeto romano (a, b, c)
ou dgitos.
Cadeias Letras minsculas do final do alfabeto romano (w, x, y, z)
ou letras minsculas do alfabeto grego (e, , etc..)
Alfabetos Letras maisculas do alfabeto grego (E, I, O, etc...)


LINGUAGENS E GRAMTICAS
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) c e
*


e para qualquer e e , vale que e e
*
ii) para qualquer e, e
*
, vale que e e
*

Ex: Se = {a, b}, ento:

+
= {a, b, aa, ab, ba, bb, aaa, ...}

*
= {c, a, b, aa, ab, ba, bb, aaa, ...}
LINGUAGENS E GRAMTICAS
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 n
k
strings devem ser enumeradas lexicograficamente.

Ex: Se = {0, 1}, ento:

*
= {c, 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, ...}

LINGUAGENS E GRAMTICAS
Def.: Uma linguagem formal L sobre um alfabeto
qualquer subconjunto de
*
, L _
*

Exs: , ,
*
,
+
so linguagens formais sobre qualquer

Obs.: Como muitas linguagens so infinitas, utiliza-se a
seguinte representao implcita de conjuntos:
L = {e e
*
/ e possui uma propriedade P}

Exs.: {e e
*
/ e = e
R
}, linguagem de palavras palndromas
{ae / e e
*
}, linguagem de palavras iniciadas por a,
{e e
*
/ e(1)=a}

LINGUAGENS E GRAMTICAS
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 Programao
Uma Linguagem de Programao como Pascal formalmente
definida pelo conjunto de todos os programas (palavras) da
linguagem.

Obs: Sejam L uma linguagem formal sobre e _ O.
Pergunta-se: L linguagem formal sobre O ?
LINGUAGENS E GRAMTICAS
Relao entre smbolo, alfabeto, cadeia e linguagem



LINGUAGENS E GRAMTICAS
Relao entre smbolo, alfabeto, cadeia e linguagem



LINGUAGENS E GRAMTICAS
Relao entre smbolo, alfabeto, cadeia e linguagem










Obs: Distino entre o smbolo b e a cadeia/sentena b
LINGUAGENS E GRAMTICAS
Atividades Prticas
Lista de Exerccios II At o exerccio 7
LINGUAGENS E GRAMTICAS
Exerccio 17 da Lista II: Elabore um programa em C que apresente o valor
decimal e o glifo correspondente da tabela ASCII do smbolo 32 ao smbolo 126
(caracteres imprimveis).
Exerccio de Programao
Operaes com Linguagens (Construo de Outras Linguagens)

Obs: Linguagens so conjuntos (em essncia)

Unio
L
1
L
2
= { s | s e L
1
ou s e L
2
}
Ex.: { ab, ac } { ab, bc } = { ab, ac, bc }


Interseo
L
1
L
2
= { s | s e L
1
e s e L
2
}
Ex.: { ab, ac } { ab, bc } = { ab }

LINGUAGENS E GRAMTICAS
Operaes com Linguagens (Construo de Outras Linguagens)

Obs: Linguagens so conjuntos (em essncia)

Concatenao
L
1
.L
2
= { st | s e L
1
e t e L
2
}
Ex.: { ab, ac }.{ ab, bc } = { abab, abbc, acab, acbc }

Observaes:
L
1
.C = C. L
1
= C (demonstrao)
Concatenao no comutativa (contraexemplo)

LINGUAGENS E GRAMTICAS
Operaes com Linguagens (Construo de Outras Linguagens)

Fechamento de Kleene (Estrela de Kleene)
Seja A uma linguagem definida sobre um alfabeto E. Ento A
*

uma linguagem obtida a partir de A como se segue:
A* = A
0
A
1
... A
n
...

onde: A
0
= { c } e A
n
= A
n-1
.A, n > 0

Ex.1: A = { a }
A* = { c } { a } { aa } { aaa } ...
= { c, a, aa, aaa, ... }
LINGUAGENS E GRAMTICAS
Operaes com Linguagens (Construo de Outras Linguagens)

Fechamento de Kleene (Estrela de Kleene)
Seja A uma linguagem definida sobre um alfabeto E. Ento A
*

uma linguagem obtida a partir de A como se segue:
A* = A
0
A
1
... A
n
...

onde: A
0
= { c } e A
n
= A
n-1
.A , n > 0

Ex2.: A = { ab, b}
A* = { c } { ab, b } { abab, abb, bab, bb } ...
= { c, ab, b, abab, abb, bab, bb, ... }

LINGUAGENS E GRAMTICAS
Operaes com Linguagens (Construo de Outras Linguagens)

Fechamento de Kleene (Estrela de Kleene)
Seja A uma linguagem definida sobre um alfabeto E. Ento A
*

uma linguagem obtida a partir de A como se segue:
A* = A
0
A
1
... A
n
...

onde: A
0
= { c } e A
n
= A
n-1
.A , n > 0

Ex3.: A = C
A
*
= { c }

LINGUAGENS E GRAMTICAS
Operaes com Linguagens (Construo de Outras Linguagens)

Fechamento Positivo
A
+
= A
*
.A ou A* = { c } A
+


Ex.: A = { a }
A
+
= { c, a, aa, aaa, ... }.{ a } = { a, aa, aaa, ... }

Complemento


Ex.: A = { a } = { c, a, aa, aaa, ... }-{ a } = {c, aa, aaa, ... }

A A =

*
A
LINGUAGENS E GRAMTICAS
Operaes com Linguagens (Construo de Outras Linguagens)

Quociente
L
1
/L
2
= { x | xy e L
1
e y e L
2
}
Exs.: { abb, acb }/{ b } = { ab, ac }
{ abb, acb }/{ b, bb } = { ab, ac, a }

Sendo:
L
1
= { a
i
b | i > 0 } = {b, ab, aab, aaab, ...} L
2
= { b }
L
3
= { a
i
b | i > 1 } = {ab, aab, aaab, ...}
L
1
/ L
2
= {, a, aa, aaa, aaaa, ...} = { a
i
| i > 0 }
L
1
/ L
3
= {, a, aa, aaa, ...} = { a
i
| i > 0 }

LINGUAGENS E GRAMTICAS
Sendo:
L
1
= { a
i
b | i > 0 } = {b, ab, aab, aaab, ...} L
2
= { b }
L
3
= { a
i
b | i > 1 } = {ab, aab, aaab, ...}
L
4
= { a
i
bc
i
| i > 0 } = {b, abc, aabcc, aaabccc, ...}
L
5
= { bc
i
| i > 0 } = {b, bc, bcc, bccc, ...}
L
6
= { c
i
| i > 1 } = {c, cc, ccc, ...}

L
4
/ L
5
=
L
5
/ L
4
=
L
1
/ L
5
=
L
4
/ L
1
=
L
6
/ L
2
=
LINGUAGENS E GRAMTICAS
Atividades Prticas
Lista de Exerccios II Exerccio 8
LINGUAGENS E GRAMTICAS
Exerccio 18 da Lista II: Elabore um programa em C que receba como entrada
duas linguagens finitas L1 e L2, ambas no vazias (e sem a cadeia vazia) e
apresente como sadas as seguintes linguagens: L1 L2, L1 L2, L1.L2.
Exerccio de Programao
Observao:
Na teoria de autmatos, um problema em geral se caracteriza
pela deciso se uma determinada cadeia pertence ou no a
uma linguagem especfica.


Em termos coloquiais, um problema pode ser expresso como
pertinncia a uma linguagem.

Em termos formais, sendo L uma linguagem formal sobre ,
ento o problema L consiste em: dada uma cadeia e em *,
definir se e est ou no em L.
LINGUAGENS E GRAMTICAS
Mtodos de Representao Finita de Linguagens:
Gramticas
Reconhecedores
Enumeraes
Obs: Os dois primeiros so formas duais de representao.

Obs: A notao usada para representar uma linguagem
chamada de metalinguagem.
Exs:
L={e e
*
/ e palndroma}
L={ara, arara, ...}
LINGUAGENS E GRAMTICAS
Toda Linguagem possui:
Sintaxe Estruturas para representao de construes
Ex: arara e L={e e
*
/ e palndroma}, ={a,r}

Semntica Significado associado s construes



arara
LINGUAGENS E GRAMTICAS
Como uma linguagem de programao o conjunto (infinito) de
todos os programas dessa linguagem, ela requer uma definio
adequada para ser implementada computacionalmente (gramtica).

Uma gramtica um sistema formal baseado em regras de
substituio que, quando aplicadas sucessivamente, podem gerar,
de forma exaustiva, o conjunto de cadeias que compem uma
determinada linguagem. Assim, o conjunto de todas as palavras
geradas por uma gramtica define a linguagem associada.

As gramticas usadas para linguagens naturais como o Portugus
so anlogas s usadas para linguagens artificiais como o Pascal e
o C.


LINGUAGENS E GRAMTICAS
Consideremos a orao em Portugus: O menino atravessou a rua
distraidamente. Esta orao 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 oraes: A rua atravessou o menino distraidamente e O rua atravessou a
menino distraidamente?

LINGUAGENS E GRAMTICAS
Repare que artigo, substantivo e verbo so exemplos de
classes gramaticais da Lngua Portuguesa. Normalmente independem
da orao para classificarmos os smbolos. No exemplo:

Artigo = {o, a}
Substantivo = {menino, rua}
Verbo = {atravessou}

Sujeito, predicado, objeto direto so exemplos de funes
sintticas que os smbolos, isolados ou em conjunto, assumem na
orao. A caracterizao da funo sinttica depende do smbolo (ou
conjunto de smbolos) e do papel que ele exerce na orao.

LINGUAGENS E GRAMTICAS
Um site que permite a anlise de sentenas (parser) da Lngua
Portuguesa o VISL:
http://beta.visl.sdu.dk/visl/pt/parsing/automatic/trees.php

Exemplo:
LINGUAGENS E GRAMTICAS
Def.: Uma Gramtica de Chomsky, Gramtica Irrestrita ou simplesmente
Gramtica uma qudrupla ordenada:
G=(V,T,P,S) , na qual:
V e T conjuntos finitos no vazios e disjuntos de smbolos variveis e
terminais, respectivamente.
P:(VT)
+
(VT)
*
uma Relao de Produes (Regras de Substituio),
sendo um conjunto finito e no vazio.
S, um smbolo destacado de V (chamado raiz ou smbolo inicial)


Regras de Produo Formato
(o,|) ou o |
o |
1
| |
2
| ...| |
n

LINGUAGENS E GRAMTICAS
Ex: Seja uma gramtica G=(V, T, P, N) definida por
V={N,D} T={0,1,2,...,9} P={ND, NDN, D0|1|2|...|9}
Derivao: Substituio de uma subpalavra de acordo com uma regra
de produo.

Formalmente: Sendo G=(V, T, P, S) uma gramtica, uma Derivao
um par da relao de derivao : (VT)
+
(VT)
*
, representado
por: <o, |> ou o
G
|

G
indutivamente definida como segue:
Para toda regra de produo S |, o seguinte par pertence a
G
:
S
G
|
Para todo par q
G
oo de
G
, se o | uma regra de
produo, ento o seguinte par pertence a
G
: q
G
| o
LINGUAGENS E GRAMTICAS
Ex: Seja uma gramtica G=(V, T, P, N) definida por
V={N,D} T={0,1,2,...,9}
P={ND, NDN, D0|1|2|...|9}

Uma derivao da palavra 243 pode ser dada por:
N
G
(NDN)
DN
G
(D2)
2N
G
(NDN)
2DN
G
(D4)
24N
G
(ND)
24D
G
(D3)
243
Pergunta-se: Existem outras derivaes para a mesma palavra?
LINGUAGENS E GRAMTICAS
Derivao: Substituio de uma subpalavra de acordo com uma
regra de produo.

Sucessivos passos de derivao so definidos como segue:

*
Fecho transitivo e reflexivo da relao , ou seja, zero ou
mais passos de derivaes sucessivos.

+
Fecho transitivo da relao , ou seja, um ou mais passos de
derivaes sucessivos.

i
Exatos i passos de derivaes sucessivos, sendo i um nmero
natural.

LINGUAGENS E GRAMTICAS
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 derivao da palavra 243 pode ser dada por:
N (NDN)
DN (D2)
2N (NDN)
2DN (D4)
24N (ND)
24D (D3)
243
Portanto, temos que: S
*
243 ou S
+
243 ou S
6
243
LINGUAGENS E GRAMTICAS
Def.: Seja G=(V, T, P, S) uma gramtica. A Linguagem Gerada
por G composta por todas as palavras de smbolos terminais
derivveis a partir de S.

Notao: L(G) ou GERA(G) = {w e 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 gramtica capaz de gerar qualquer nmero
natural vlido em uma linguagem de programao.
LINGUAGENS E GRAMTICAS
Analisando o exemplo anterior, onde:
G=(V, T, P, N) uma gramtica geradora de nmeros naturais.
V={N,D}
T={0,1,2,...,9}
P={ND, NDN, D0|1|2|...|9}

A seguinte interpretao indutiva pode ser dada:
Base da Induo: todo dgito um nmero natural (regras ND
e D0|1|2|...|9).
Passo de Induo: Se x um nmero natural, ento a
concatenao de x com qualquer dgito tambm um nmero
natural (regra NDN).
LINGUAGENS E GRAMTICAS
Existem representaes alternativas para gramticas. Uma das mais comuns :
G = (V, E, P, S), onde:
V contm todo o vocabulrio (todos os smbolos)
E contm os smbolos terminais
P contm as produes
S o smbolo inicial
N = V - E (corresponde ao conjunto de smbolos variveis da definio adotada
na disciplina)

Exemplo: a gramtica geradora de nmeros naturais vista no exemplo anterior
G = (V, E, P, S)
V = {S, D, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
E = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
P = {SD, SDS, D0|1|2|...|9}
LINGUAGENS E GRAMTICAS
Def.: Duas gramticas G1 e G2 so ditas equivalentes se ambas
geram a mesma linguagem, ou seja:

Gera (G1) = Gera(G2)

Obs: Em geral, adotaremos as seguintes convenes:
A, B, C, ..., S, T para smbolos variveis
a, b, c, ..., s, t para smbolos terminais
u, v, w, x, y, z para palavras com somente smbolos terminais
o, |, ... para palavras com smbolos terminais ou variveis
LINGUAGENS E GRAMTICAS
Consideremos as seguintes gramticas e respectivas linguagens:
G
0
= ({S},{a,b},{SaS, SbS, S c},S),
L
0
=Gera(G
0
)={a, b}
*

G
1
= ({S},{a,b},{SaS, SbS, S a|b},S),
L
1
=Gera(G
1
)={a, b}
+

G
2
= ({S,X},{a,b},{SaX, XaX, XbX, Xc},S),
L
2
formada por cadeias iniciadas pelo smbolo a.

G
3
= ({S,X},{a,b},{SaX, XaX, XbX, Xb},S),
L
3
formada por cadeias iniciadas pelo smbolo a e terminadas por b.

G
4
= ({S,X},{a,b},{SXbXbX, XaX, Xc},S),
L
4
formada por cadeias que contenham exatamente dois smbolos b.

G
5
= ({S,X},{a,b},{SbX, XaX, Xc},S),
L
5
contm cadeias iniciadas com o smbolo b, sendo este o nico smbolo b
existente nessas cadeias.


LINGUAGENS E GRAMTICAS
Para cada uma, apresente um exemplo de sentena e de derivao associada
Consideremos as seguintes gramticas e respectivas linguagens:
L
0
=Gera(G
0
)={a, b}
*
, L
1
=Gera(G
1
)={a, b}
+
, L
2
formada por cadeias iniciadas
pelo smbolo a. L
3
formada por cadeias iniciadas pelo smbolo a e terminadas por
b. L
4
formada por cadeias que contenham exatamente dois smbolos b. L
5
contm
cadeias iniciadas com o smbolo b, sendo este o nico smbolo b existente nessas
cadeias.


Analise as relaes de
incluso entre elas.

LINGUAGENS E GRAMTICAS
Uma gramtica G = (V, T, P, S) est bem formada se atender s
seguintes condies mnimas:
V, T, P devem ser conjuntos finitos e no vazios;
E = V T
V T = C
S e V

Uma gramtica pode estar bem formada mas no gerar todas as
cadeias de uma linguagem. Exemplos: G = (V, T, P, S), onde:
a) V = {S, X}, T = {a, b}, P = {XaX | b}, S}
b) V = {S}, T = {a, b}, P = {SaS | b}, S}, mas G no gera bba
LINGUAGENS E GRAMTICAS
Hierarquia de Chomsky
Estudo sistemtico das linguagens formais teve forte impulso no final
da dcada de 1950 com publicao de dois artigos do linguista Noam
Chomsky.
Os artigos apresentavam resultados sobre a classificao hierrquica
das linguagens, conhecida como Hierarquia de Chomsky.
Tal hierarquia tem como mrito agrupar as linguagens em classes, de
tal forma que elas possam ser hierarquizadas segundo sua
complexidade relativa.
Como consequncia, conhecida a classe de uma determinada linguagem
pode-se antecipar propriedades fundamentais dessa linguagem, assim
como vislumbrar modelos de implementao mais adequados sua
realizao.
LINGUAGENS E GRAMTICAS
Hierarquia de Chomsky
Possui quatro classes distintas de linguagens: tipos 0, 1, 2 e 3
Cada tipo caracterizado por restries sobre o formato das produes
o| definidas pelo conceito geral de gramtica.
Tipo 0 Linguagens Recursivamente Enumerveis
ou Irrestritas
Tipo 1 Linguagens Sensveis ao Contexto
Tipo 2 Linguagens Livres de Contexto
Tipo 3 Linguagens Regulares
LINGUAGENS E GRAMTICAS
Hierarquia de Chomsky Linguagens Regulares (Tipo 3)
Tipo de linguagem mais simples da hierarquia.
Qualquer gramtica G=(V,T,P,S) geradora de linguagens regulares possui
produes o| que atendam s seguintes restries:
o e V
(| e T) ou (| e V) ou (| e T.V) ou (| = ), de forma no exclusiva ou
(| e T) ou (| e V) ou (| e V.T) ou (| = ), de forma no exclusiva

Exemplos:
G
1
=({S,A}, {0,1,2,3}, {S0S, S1S, SA, A2, A3}, S)
G
2
=({S,A}, {0,1,2,3}, {SS2, SS3, SA, A1, A0}, S)
LINGUAGENS E GRAMTICAS
Hierarquia de Chomsky Linguagens Livres de Contexto (Tipo 2)
Qualquer gramtica G=(V,T,P,S) geradora de linguagens livres de
contexto possui produes o| que atendam s seguintes restries:
o e V (s possuem um smbolo no terminal do lado esquerdo)
| e (V T)* (qualquer combinao de smbolos do lado direito)
Exemplo:
G
3
=({S}, {0,1}, {S0S1, S}, S)
G
3
livre de contexto.
LINGUAGENS E GRAMTICAS
Hierarquia de Chomsky Linguagens Sensveis ao Contexto (Tipo 1)
Qualquer gramtica G=(V,T,P,S) geradora de linguagens sensveis ao
contexto possui produes o| que atendam s seguintes restries:
o e (VT)*.V. (VT)*
| e (VT)*
| | | > | o | (O comprimento da cadeia do lado direito de cada produo
seja no mnimo igual ao comprimento da cadeia do lado esquerdo)
Obs: No h possibilidade de reduzir o comprimento das formas
sentenciais durante derivaes em gramticas deste tipo.
Exemplo:
G
4
=({S,X,Y}, {a,b,c}, {SaXb, SaXa, Xabc, Xbcb}, S)
G
4
sensvel ao contexto e no livre de contexto.
LINGUAGENS E GRAMTICAS
Hierarquia de Chomsky Linguagens Irrestritas (Tipo 0)
Qualquer gramtica G=(V,T,P,S) geradora de linguagens sensveis ao
contexto possui produes o| que atendam apenas a uma restrio:
o e (VT)*.V. (VT)* (lado esquerdo deve conter pelo menos um
smbolo no terminal)
| e (VT)*
Exemplo:
G
5
=({S,X,Y}, {a,b,c}, {SaXb, SaXa, Xac, Xbc, X}, S)
G
5
irrestrita e no sensvel ao contexto (devido s produes Xac,
Xbc, X): |o| > |||
As gramticas G
1
, G
2
, G
3
e G
4
so todas irrestritas.
LINGUAGENS E GRAMTICAS
Hierarquia de Chomsky Linguagens, Gramticas e Reconhecedores
Tipo Classe de
Linguagem
Modelo de
Gramtica
Modelo de Reconhecedor
0 Recursivamente
Enumerveis
Irrestrita Mquina de Turing
1 Sensveis ao
Contexto
Sensvel ao
Contexto
Mquina de Turing com Fita
Limitada
2 Livres de
Contexto
Livre de
Contexto
Autmato de Pilha
3 Regulares Linear (direita
ou esquerda)
Autmato Finito
Obs: As propriedades, caractersticas estruturais e modelos de reconhecimento mais adequados para
cada uma das classes da Hierarquia de Chomsky sero estudados mais frente.
LINGUAGENS E GRAMTICAS
Atividades Prticas
Lista de Exerccios II - Completar
Leituras Recomendadas
Cap. 2 Paulo Blauth Menezes
Sees 2.1 a 2.3 Marcus Ramos
Sees 1.7 e 1.8 Papadimitriou
Seo 1.5 Hopcroft & Ullman
LINGUAGENS E GRAMTICAS

You might also like