94
Conceitos Básicos de Linguagens Prof. Marcus Vinícius Midena Ramos Universidade Federal do Vale do São Francisco 9 de junho de 2013 [email protected] www.univasf.edu.br/~marcus.ramos Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 1 / 94

Conceitos Basicos de Linguagens

Embed Size (px)

DESCRIPTION

aposkdpaoskdaskdpasokpaokdpaokdpaoskdpasokdpasodkpasodkpaskdpasokdpasokdpaoskdpaoskdpoaskdpasokdpaoskdpasokdpaosdkpasokdpoaskdpsaokdpoaskdpasokdpasodkpaoskdpsaodkpasokdpasokdpasokdpaoskdpaoskdpaoskdpaosdkpaoskdspaokdpasokdpaosdkpaskdpasokdpasokdpasokdpasokdpaoskdpsaokdpoaskdpoaskdasokdpasokdopsakdpaosk

Citation preview

Page 1: Conceitos Basicos de Linguagens

Conceitos Básicos de Linguagens

Prof. Marcus Vinícius Midena Ramos

Universidade Federal do Vale do São Francisco

9 de junho de 2013

[email protected]/~marcus.ramos

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 1 / 94

Page 2: Conceitos Basicos de Linguagens

Bibliografia

1 Linguagens Formais: Teoria, Modelagem e ImplementaçãoM.V.M. Ramos, J.J. Neto e I.S. VegaBookman, 2009

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 2 / 94

Page 3: Conceitos Basicos de Linguagens

Roteiro

1 Símbolos e Cadeias

2 Linguagens

3 Gramáticas

4 Linguagens, Gramáticas e Conjuntos

5 Reconhecedores

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 3 / 94

Page 4: Conceitos Basicos de Linguagens

Símbolos e Cadeias

Símbolo, cadeia e alfabeto

Os símbolos , também denominados palavras ou átomos , sãorepresentações gráficas, indivisíveis, empregadas na construção decadeias . Estas são formadas através da justaposição de um númerofinito de símbolos, obtidos de algum conjunto finito não-vazio,denominado alfabeto .

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 4 / 94

Page 5: Conceitos Basicos de Linguagens

Símbolos e Cadeias

Símbolo, cadeia e alfabeto

Cada símbolo é considerado como uma unidade atômica, nãoimportando a sua particular representação visual. São exemplos desímbolos: a,abc,begin, if ,5,1024,2.017e4. Perceba-se que não há umadefinição formal para “símbolo”. Deve-se intuir o seu significado comoentidade abstrata, e dessa forma aceitá-lo como base para a teoriaque será desenvolvida. Pode-se dizer que se trata de um conceitoprimitivo.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 5 / 94

Page 6: Conceitos Basicos de Linguagens

Símbolos e Cadeias

Convenções

Ao longo deste texto será adotada a seguinte convenção para denotarsímbolos, cadeias e alfabetos:

I Símbolos: letras minúsculas do início do alfabeto romano:(a,b,c...).

I Cadeias: letras minúsculas do final do alfabeto romano(r,s,x,w...), ou letras minúsculas do alfabeto grego (α ,β ,γ ...).

I Alfabetos: letras maiúsculas do alfabeto grego (Σ,Γ,∆...).

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 6 / 94

Page 7: Conceitos Basicos de Linguagens

Símbolos e Cadeias

Exemplo

Exemplo 1.1Como exemplo de alfabeto podemos mencionar o conjuntoΣ dos dígitoshexadecimais, em que cada elemento (dígito) desse conjuntocorresponde a umdeterminado símbolo:

Σ = {0,1,2,3,4,5,6,7,8,9,a,b,c,d,e, f}

Naturalmente, as cadeias que podem ser construídas a partirdos símbolos dessealfabeto correspondem aos numerais hexadecimais: 123,a0b56, fe5dc,b,abc,55efff ...

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 7 / 94

Page 8: Conceitos Basicos de Linguagens

Símbolos e Cadeias

Comprimento de uma cadeia

O comprimento de uma cadeia é um número natural que designa aquantidade de símbolos que a compõem. O comprimento de umacadeia α é denotado por |α |.

Exemplo 1.2Considerem-se as cadeiasα = 1,β = 469,χ = bce60 eφ = df , também construídassobre o alfabetoΣ do Exemplo 1.1. Então,|α| = 1, |β | = 3, |χ | = 5 e |φ | = 2.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 8 / 94

Page 9: Conceitos Basicos de Linguagens

Símbolos e Cadeias

Cadeia unitária

Dá-se o nome de cadeia elementar (ou unitária ) a qualquer cadeiaformada por um único símbolo, como é o caso da cadeia α doExemplo 1.2. Naturalmente, toda cadeia unitária tem comprimento 1.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 9 / 94

Page 10: Conceitos Basicos de Linguagens

Símbolos e Cadeias

Cadeia vazia

O conceito de cadeia vazia é especialmente importante na teoria daslinguagens formais. Denota-se por ε a cadeia formada por umaquantidade nula de símbolos, isto é, a cadeia que não contémnenhum símbolo. Formalmente,

|ε | = 0

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 10 / 94

Page 11: Conceitos Basicos de Linguagens

Símbolos e Cadeias

Concatenação de cadeias

Duas cadeias, sejam elas elementares ou não, podem ser anexadas,formando uma só cadeia, através da operação de concatenação .Essa operação fornece como resultado uma nova cadeia, formadapela justaposição ordenada dos símbolos que compõem os seusoperandos separadamente. Observe-se que a operação deconcatenação entre uma cadeia e um símbolo é realizada através daconcatenação da cadeia em questão com a cadeia elementarcorrespondente ao símbolo.Denota-se a concatenação de duas cadeias α e β como α ·β ou,simplesmente, αβ .

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 11 / 94

Page 12: Conceitos Basicos de Linguagens

Símbolos e Cadeias

Exemplos

Exemplo 1.3Considere o alfabetoΣ = {a,b,c,d}, e as cadeiasα = abc, β = dbaca eσ = a.A concatenação da cadeiaα com a cadeiaβ é assim obtida:α ·β = αβ = abcdbaca, e |αβ | = |α|+ |β |= 3+5= 8Da mesma forma, obtém-se a concatenação deβ comα:β ·α = β α = dbacaabc, e, |β α| = |β |+ |α|= 5+3= 8Note-se que, neste exemplo,αβ 6= β α.A concatenação da cadeiaα com a cadeia elementarσ é dada por:α ·σ = ασ = abca, e |ασ | = |α|+ |σ |= 3+1= 4Finalmente, a concatenação da cadeia elementarσ com a cadeiaβ é obtida como:σ ·β = σβ = adbaca, e |σβ | = |σ |+ |β |= 1+5= 6

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 12 / 94

Page 13: Conceitos Basicos de Linguagens

Símbolos e Cadeias

Propriedades da concatenação de cadeias

Como se pode perceber, a operação de concatenação, emboraassociativa, não é comutativa. Dadas três cadeias α ,β ,γ quaisquer,pode-se sempre afirmar que (αβ )γ = α(βγ).Por outro lado, dependendo dos particulares α e β considerados,pode ser que ou αβ 6= βα ou αβ = βα (por exemplo, se α e/ou βforem cadeias vazias ou, ainda, se α = β ).No caso da cadeia vazia ε (elemento neutro em relação ao operadorde concatenação) são válidas as seguintes relações:

1 αε = εα = α2 |αε | = |εα | = |α |

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 13 / 94

Page 14: Conceitos Basicos de Linguagens

Símbolos e Cadeias

Prefixos e sufixos

Diz-se que uma cadeia α é um prefixo de outra cadeia β se forpossível escrever β como αγ . A cadeia α é dita sufixo de β se βpuder ser escrita como γα . Em ambos os casos, admite-se apossibilidade de γ = ε . Nos casos em que γ 6= ε , diz-se que α é,respectivamente, prefixo próprio ou sufixo próprio da cadeia β .Note que a cadeia vazia ε pode ser considerada simultaneamenteprefixo ou sufixo de qualquer cadeia.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 14 / 94

Page 15: Conceitos Basicos de Linguagens

Símbolos e Cadeias

Subcadeias

Dadas quatro cadeias α ,β ,γ e δ , uma cadeia α é chamadasubcadeia de uma cadeia β sempre que β = γαδ . Note-se que, se γou δ ou ambos forem vazios, a definição também se aplica. Note-setambém que prefixos e sufixos são casos particulares de subcadeias.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 15 / 94

Page 16: Conceitos Basicos de Linguagens

Símbolos e Cadeias

Cadeia reversa

Uma cadeia α é dita o reverso de uma cadeia β , denotando-se o fatopor α = β R, se α contiver os mesmos símbolos que β , porémjustapostos no sentido inverso, ou seja:

se α = σ1σ2...σn−1σn então β = σnσn−1...σ2σ1

Por definição, εR = ε .

Exemplo 1.4Considerem-se as cadeiasα = 123abc eβ = d. Então,αR = cba321 eβ R = d.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 16 / 94

Page 17: Conceitos Basicos de Linguagens

Símbolos e Cadeias

Repetição de símbolos

Finalmente, convenciona-se que σ i representa a cadeia formada por“i” símbolos σ concatenados. Por definição, σ0 = ε .

Exemplo 1.5Considere-se o símboloa. Então:

I a0 = ε;

I a1 = a;

I a2 = aa;

I a3 = aaa;

I etc.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 17 / 94

Page 18: Conceitos Basicos de Linguagens

Linguagens

Linguagem formal

Uma linguagem formal é um conjunto, finito ou infinito, de cadeias decomprimento finito, formadas pela concatenação de elementos de umalfabeto finito e não-vazio. Além das operações previamente definidaspara conjuntos, como união, diferença, intersecção etc., outrasoperações, tais como a concatenação e os fechamentos, também sãofundamentais para a definição e o estudo das linguagens formais.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 18 / 94

Page 19: Conceitos Basicos de Linguagens

Linguagens

Cadeia vazia e conjunto vazio

Convém notar a distinção que há entre os seguintes conceitos:I cadeia vazia ε ;I conjunto vazio /0;I conjunto que contém apenas a cadeia vazia {ε};I conjunto que contém apenas o conjunto vazio { /0}.

O primeiro deles, ε , denota a cadeia vazia, ou seja, uma cadeia decomprimento zero, ao passo que os demais são casos particulares deconjuntos: /0 denota uma linguagem vazia, ou seja, uma linguagemque não contém nenhuma cadeia, {ε} denota uma linguagem quecontém uma única cadeia (a cadeia vazia), e { /0} denota um conjuntoque contém um único elemento, o conjunto vazio. Observe-se que|ε | = | /0| = 0 e |{ε}| = |{ /0}| = 1.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 19 / 94

Page 20: Conceitos Basicos de Linguagens

Linguagens

Alfabetos, linguagens e cadeias

Note-se a diferença conceitual que há entre alfabetos, linguagens ecadeias. Alfabetos são conjuntos, finitos e não-vazios, de símbolos,através de cuja concatenação são obtidas as cadeias . Linguagens,por sua vez, são conjuntos, finitos (eventualmente vazios) ou infinitos,de cadeias. Uma cadeia é também denominada sentença de umalinguagem, ou simplesmente sentença, no caso de ela pertencer àlinguagem em questão. Linguagens são, portanto, coleções desentenças sobre um dado alfabeto.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 20 / 94

Page 21: Conceitos Basicos de Linguagens

Linguagens

Símbolos, alfabeto, cadeias, linguagem

A Figura 1 ilustra a relação entre os conceitos de símbolo, alfabeto,cadeia e linguagem.

Figura 1: Símbolo, alfabeto, cadeia e linguagem

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 21 / 94

Page 22: Conceitos Basicos de Linguagens

Linguagens

Símbolos, alfabeto, cadeias, linguagem

Outra maneira de associar significados aos termos “símbolo”,“alfabeto”, “cadeia” e “linguagem” é apresentada na Figura 2, quetambém ilustra o conceito de “sentença”.

Figura 2: Símbolo, alfabeto, cadeia, sentença e linguagemMarcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 22 / 94

Page 23: Conceitos Basicos de Linguagens

Linguagens

Exemplo

Exemplo 2.1O símboloa é elemento do alfabeto{a} e também um item da cadeiaaaa, que porsua vez é elemento da linguagem{aaa}. Por outro lado, a linguagem{aaa} é umconjunto que contém a cadeiaaaa, a cadeiaaaa é uma seqüência de símbolosa e oalfabeto{a} contém o símboloa. A Figura 3 ilustra esses conceitos, conforme aFigura 1.

Figura 3: a,{a},aaa,{aaa}

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 23 / 94

Page 24: Conceitos Basicos de Linguagens

Linguagens

Exemplo

Exemplo 2.2A Figura 4 ilustra uma aplicação dos conceitos da Figura 2 ao alfabeto{a,b}. Alinguagem apresentada é, naturalmente, apenas uma das inúmeras que podem sercriadas a partir desse alfabeto.

Figura 4: Símbolos a e b, cadeias, sentenças e linguagem

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 24 / 94

Page 25: Conceitos Basicos de Linguagens

Linguagens

Concatenação de linguagens

A concatenação de duas linguagens X e Y, denotada por X ·Y ousimplesmente XY, corresponde a um conjunto Z formado pela coleçãode todas as cadeias que possam ser obtidas pela concatenação decadeias x ∈ X com cadeias y ∈ Y, nesta ordem. Formalmente,

Z = X ·Y = XY = {xy | x ∈ X e y ∈ Y}

A concatenação ΣΣ, que gera cadeias de comprimento 2 formadassobre um alfabeto Σ, é também representada por Σ2. Analogamente, aconcatenação ΣΣΣ, que gera cadeias de comprimento 3 sobre oalfabeto Σ, é representada como Σ3, e assim sucessivamente.Generalizando-se:

Σi = ΣΣi−1, i > 0

Por definição, Σ0 = {ε}

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 25 / 94

Page 26: Conceitos Basicos de Linguagens

Linguagens

Exemplo

Exemplo 2.3Considere-seΣ = {a,b,c}. Então,

Σ0 = {ε}Σ1 = {a,b,c}

Σ2 = {aa,ab,ac,ba,bb,bc,ca,cb,cc}

Σ3 = {aaa,aab,aac,aba,abb,abc, ...,ccc}

etc.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 26 / 94

Page 27: Conceitos Basicos de Linguagens

Linguagens

Fechamento reflexivo e transitivo

O fechamento reflexivo e transitivo (às vezes chamadofechamento recursivo e transitivo ) de um alfabeto Σ é definido comoo conjunto (infinito) que contém todas as possíveis cadeias quepodem ser construídas sobre o alfabeto dado, incluindo a cadeiavazia. Esse conjunto, denotado por Σ∗, contém, naturalmente, todasas cadeias que podem ser definidas sobre o alfabeto Σ. Formalmente,o fechamento reflexivo e transitivo de um conjunto Σ é definido como:

Σ∗ = Σ0∪Σ1∪Σ2∪Σ3∪ ... =∞⋃

i=0

Σi

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 27 / 94

Page 28: Conceitos Basicos de Linguagens

Linguagens

Fechamento reflexivo e transitivo

A definição de uma linguagem pode, portanto, ser formulada demaneira mais rigorosa com o auxílio da operação de fechamentoreflexivo e transitivo: sendo uma linguagem qualquer coleção decadeias sobre um determinado alfabeto Σ, e como Σ∗ contém todas aspossíveis cadeias sobre Σ, então toda e qualquer linguagem L sobreum alfabeto Σ sempre poderá ser definida como sendo umsubconjunto de Σ∗, ou seja, L ⊆ Σ∗.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 28 / 94

Page 29: Conceitos Basicos de Linguagens

Linguagens

“Maior” linguagem

Diz-se que a maior linguagem que se pode definir sobre um alfabetoΣ, observando-se um conjunto qualquer P de propriedades,corresponde ao conjunto de todas as cadeias w ∈ Σ∗ tais que wsatisfaz simultaneamente a todas as propriedades pi ∈ P.De uma forma geral, sempre que for feita uma referência a umadeterminada linguagem L cujas cadeias satisfaçam a um certoconjunto de propriedades P, estará implícita (a menos de ressalva emcontrário) a condição de que se trata da maior linguagem definidasobre L, cujas cadeias satisfaçam o conjunto de propriedades P.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 29 / 94

Page 30: Conceitos Basicos de Linguagens

Linguagens

“Maior” linguagem

Um caso particular importante a se considerar é a linguagem cujoconjunto P de propriedades seja o menos restritivo possível,considerando toda e qualquer cadeia de qualquer comprimento (finito)como sendo válida. Assim, a maior linguagem dentre todas as quepodem ser definidas sobre um alfabeto Σ qualquer é L = Σ∗ (note-se,neste caso, que a única propriedade a ser satisfeita pelas cadeias deL é que elas “sejam definidas sobre Σ”, ou seja, obtidas a partir dasimples justaposição de símbolos de Σ). Qualquer outra linguagemdefinida sobre esse mesmo alfabeto corresponderá obrigatoriamentea um subconjunto (eventualmente próprio) de Σ∗.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 30 / 94

Page 31: Conceitos Basicos de Linguagens

Linguagens

“Menor” linguagem

Por outro lado, a menor linguagem que pode ser definida sobre umalfabeto Σ qualquer é /0, ou seja, a linguagem vazia ou a linguagemcomposta por zero sentenças.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 31 / 94

Page 32: Conceitos Basicos de Linguagens

Linguagens

Todas as linguagens

Finalmente, como o conjunto de todos os subconjuntos possíveis deserem obtidos a partir de Σ∗ é 2Σ∗

, tem-se que 2Σ∗representa o

conjunto de todas as linguagens que podem ser definidas sobre oalfabeto Σ.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 32 / 94

Page 33: Conceitos Basicos de Linguagens

Linguagens

Menor, maior, todas

Em resumo:

I /0 é o conjunto constituído por zero cadeias e corresponde àmenor linguagem que se pode definir sobre um alfabeto Σqualquer;

I Σ∗ é o conjunto de todas as cadeias possíveis de seremconstruídas sobre Σ e corresponde à maior de todas aslinguagens que pode ser definida sobre Σ;

I 2Σ∗é o conjunto de todos os subconjuntos possíveis de serem

obtidos a partir de Σ∗, e corresponde ao conjunto formado portodas as possíveis linguagens que podem ser definidas sobre Σ.Observe-se que /0∈ 2Σ∗

, e também que Σ∗ ∈ 2Σ∗.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 33 / 94

Page 34: Conceitos Basicos de Linguagens

Linguagens

Exemplos

Exemplo 2.4SejaΣ = {a,b,c} e P o conjunto formado pela única propriedade “todas as cadeiassão iniciadas com o símboloa”. Então:

I A linguagemL0 = /0 é a menor linguagem que pode ser definida sobreΣ;

I A linguagemL1 = {a,ab,ac,abc,acb} é finita e observaP;

I A linguagemL2 = {a}{a}∗{b}∗{c}∗ é infinita e observaP;

I A linguagemL3 = {a}{a,b,c}∗ é infinita, observaP e, dentre todas as queobservamP, trata-se da maior linguagem, pois não existe nenhuma outracadeiaemΣ∗ que satisfaça aP e não pertença aL3;

I L0 ⊆ Σ∗, L1 ⊆ Σ∗, L2 ⊆ Σ∗, L3 ⊆ Σ∗;

I L0 ∈ 2Σ∗, L1 ∈ 2Σ∗

, L2 ∈ 2Σ∗, L3 ∈ 2Σ∗

;

I Além deL0,L1,L2 e L3, existem inúmeras outras linguagens que podem serdefinidas sobreΣ.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 34 / 94

Page 35: Conceitos Basicos de Linguagens

Linguagens

Fechamento transitivo

O fechamento transitivo de um alfabeto Σ, denotado por Σ+, édefinido de maneira análoga ao fechamento reflexivo e transitivo,diferindo deste apenas por não incluir o conjunto Σ0:

Σ+ = Σ1∪Σ2∪Σ3∪ ... =∞⋃

i=1

Σi

Como se pode perceber, Σ∗ = Σ+∪{ε}. Observe-se ainda que,embora aparentemente seja conseqüência da anterior, a afirmaçãoΣ+ = Σ∗−{ε} só será válida nos casos em que Σ não contiver acadeia vazia.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 35 / 94

Page 36: Conceitos Basicos de Linguagens

Linguagens

Exemplo

Exemplo 2.5SejaΣ = {n,(,),+,∗,−,/}. Neste caso:

I Σ∗ = {ε,n,n + n,−n),∗/,n()),n− (n ∗n), ...}

I Σ+ = {n,n + n,−n),∗/,n()),n− (n ∗n), ...}

I Σ+ = Σ∗−{ε}, poisε /∈ Σ

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 36 / 94

Page 37: Conceitos Basicos de Linguagens

Linguagens

Complementação de uma linguagem

A complementação de uma linguagem X definida sobre um alfabetoΣ é definida como:

X = Σ∗−X

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 37 / 94

Page 38: Conceitos Basicos de Linguagens

Linguagens

Reverso de uma linguagem

Diz-se que uma linguagem L1 é o reverso de uma linguagem L2,denotando-se o fato por L1 = LR

2 (ou L2 = LR1), quando as sentenças de

L1 corresponderem ao reverso das sentenças de L2. Formalmente:

L1 = LR2 = {xR | x ∈ L2}

Exemplo 2.6SejaL2 = {ε,a,ab,abc}. Então,L1 = LR

2 = {ε,a,ba,cba}.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 38 / 94

Page 39: Conceitos Basicos de Linguagens

Linguagens

Exemplo

Conforme já mencionado, o conjunto Σ∗ contém todas as possíveislinguagens que podem ser definidas sobre o alfabeto Σ. Na prática, aslinguagens de interesse costumam ser definidas como umsubconjunto próprio de Σ∗, para um dado alfabeto Σ.

Exemplo 2.7Considere-se o alfabetoΣ1 = {n,(,),+,∗,−,/}. Uma linguagemL1, passível de serdefinida sobre o alfabetoΣ1, e que corresponde a um subconjunto próprio deΣ∗

1, éaquela em que as cadeias se assemelham, do ponto vista estrutural, às cadeias querepresentam expressões aritméticas bem-formadas em muitas linguagens popularesde programação de alto nível.A seguir estão relacionadas algumas das cadeias que fazem parte deL1, de acordocom esse critério.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 39 / 94

Page 40: Conceitos Basicos de Linguagens

Linguagens

Exemplo

I n

I n+n

I (n*n)

I n*(n/(n+n+n))

Portanto,L1 = {n,n + n,(n ∗ n),n ∗ (n/(n+n+n)), ...}⊂ Σ∗1. São exemplos de

cadeias pertencentes aΣ∗1−L1:

I n++

I nn*

I (n*n)))

I n*-(n(+n+/))

I ε

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 40 / 94

Page 41: Conceitos Basicos de Linguagens

Linguagens

Métodos e notações

As linguagens de interesse prático, como é o caso das linguagens deprogramação, normalmente correspondem a um subconjunto própriodo fechamento reflexivo e transitivo do alfabeto sobre o qual as suascadeias são construídas. Assim, tornam-se necessários métodos enotações que permitam, dentro do conjunto fechamento, identificar ascadeias que efetivamente pertencem à linguagem que estiver sendodefinida, descartando-se as demais.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 41 / 94

Page 42: Conceitos Basicos de Linguagens

Linguagens

Métodos e notações

Um outro aspecto importante, referente à definição rigorosa daslinguagens formais, diz respeito ao fato de que, em sua maioria, aslinguagens de interesse contêm, se não uma quantidade infinita, aomenos um número finito, porém muito grande, de cadeias.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 42 / 94

Page 43: Conceitos Basicos de Linguagens

Linguagens

Métodos e notações

Por esses dois motivos, há um interesse muito grande em relação amétodos que permitam especificar linguagens, sejam elas finitas ounão, através de representações finitas. Por outro lado, nem todas aslinguagens podem ser representadas por meio de uma especificaçãofinita. Apesar do reduzido interesse prático que recai sobre taislinguagens, é possível comprovar a existência de linguagens para asquais é impossível se obter uma representação finita.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 43 / 94

Page 44: Conceitos Basicos de Linguagens

Linguagens

Gramáticas

1 Gramáticas : correspondem a especificações finitas dedispositivos de geração de cadeias. Um dispositivo desse tipodeve ser capaz de gerar toda e qualquer cadeia pertencente àlinguagem definida pela gramática, e nada mais. Assim, ascadeias não pertencentes à linguagem não devem poder sergeradas pela gramática em questão. Essa forma de especificaçãoé aplicável para linguagens finitas e infinitas.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 44 / 94

Page 45: Conceitos Basicos de Linguagens

Linguagens

Reconhecedores

2 Reconhecedores : correspondem a especificações finitas dedispositivos de aceitação de cadeias. Um dispositivo desse tipodeverá aceitar toda e qualquer cadeia pertencente à linguagempor ele definido, e rejeitar todas as cadeias não-pertencentes àlinguagem. O método é aplicável para a especificação formal delinguagens finitas e infinitas.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 45 / 94

Page 46: Conceitos Basicos de Linguagens

Linguagens

Enumerações

3 Enumerações : relacionam, de forma explícita e exaustiva, todasas cadeias pertencentes à particular linguagem a serespecificada. Toda e qualquer cadeia pertencente à linguagemdeve constar desta relação. As cadeias não pertencentes àlinguagem não fazem parte dessa relação. Aplicam-se apenaspara a especificação de linguagens finitas e preferencialmentenão muito extensas.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 46 / 94

Page 47: Conceitos Basicos de Linguagens

Linguagens

Usos

Na prática, as gramáticas e os reconhecedores, além de ofereceremuma grande concisão na representação de linguagens decardinalidade elevada, também podem ser empregados na definiçãode linguagens infinitas, ao contrário das enumerações. Em contrastecom o que ocorre com as enumerações, as gramáticas e osreconhecedores geralmente possibilitam uma percepção melhor daestrutura sintática inerente às sentenças das linguagens por elesdefinidas.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 47 / 94

Page 48: Conceitos Basicos de Linguagens

Linguagens

Equivalências

Diz-se que uma gramática é equivalente a um reconhecedor se asduas seguintes condições forem simultaneamente verificadas (lembrarque os formalismos devem definir todas as sentenças da linguagemdesejada, e nenhuma outra cadeia):

1 Toda cadeia gerada pela gramática é também aceita peloreconhecedor.

2 Toda cadeia aceita pelo reconhecedor é também gerada pelagramática.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 48 / 94

Page 49: Conceitos Basicos de Linguagens

Linguagens

Exemplo

Exemplo 2.8Considerem-se a gramática G e o reconhecedor M, respectivamente definidos atravésdas linguagens gerada e aceita:

I G | L1(G) = {α ∈ {a,b}∗ | o primeiro símbolo deα é “a”}

I M | L2(M) = {β ∈ {a,b}∗ |o primeiro símbolo deβ é “a” e o último símbolo é “b”}

Portanto:

I L1 = {a,aa,ab,aaa,aab,aba,abb,aaa...}

I L2 = {ab,aab,abb,aaab,aabb,abab,abbb...}

É fácil perceber que a condição (2) acima é verificada, mas a condição (1) não. Porexemplo, a cadeiaab ∈ L2 e ab ∈ L1. Por outro lado, a cadeiaaba ∈ L1, porémaba /∈ L2. Logo,L1 ⊂ L2 e não se pode dizer queG eM sejam equivalentes.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 49 / 94

Page 50: Conceitos Basicos de Linguagens

Linguagens

Metalinguagem

Conforme discutido mais adiante, as gramáticas e os reconhecedoressão formas duais de representação de linguagens, ou seja, para cadagramática é possível obter um reconhecedor que aceite a linguagemcorrespondente e vice-versa. À particular notação utilizada pararepresentar uma linguagem, seja através de gramáticas ou dereconhecedores, dá-se o nome de metalinguagem .

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 50 / 94

Page 51: Conceitos Basicos de Linguagens

Gramáticas

Conceito

Também conhecidas como dispositivos generativos , dispositivosde síntese , ou ainda dispositivos de geração de cadeias, asgramáticas constituem sistemas formais baseados em regras desubstituição, através dos quais é possível sintetizar, de formaexaustiva, o conjunto das cadeias que compõem uma determinadalinguagem.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 51 / 94

Page 52: Conceitos Basicos de Linguagens

Gramáticas

Conceito

Assim como ocorre no caso das linguagens naturais, as linguagensformais também podem ser especificadas através de “gramáticas” aelas associadas. No caso das gramáticas das linguagens formais, queconstituem o objeto deste estudo, a analogia com as “gramáticas” daslinguagens naturais é muito grande. Tratam-se, as primeiras, deconjuntos de regras que, quando aplicadas de forma recorrente,possibilitam a geração de todas as cadeias pertencentes a umadeterminada linguagem.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 52 / 94

Page 53: Conceitos Basicos de Linguagens

Gramáticas

Metalinguagens

Diferentemente das gramáticas das linguagens naturais, que sãodescritas por intermédio de linguagens também naturais (muitas vezesa mesma que está sendo descrita pela gramática), as gramáticas daslinguagens formais são descritas utilizando notações matemáticasrigorosas que visam, entre outros objetivos, evitar dúvidas na suainterpretação. Tais notações recebem a denominação demetalinguagens — linguagens que são empregadas para definiroutras linguagens.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 53 / 94

Page 54: Conceitos Basicos de Linguagens

Gramáticas

Definição

Formalmente, uma gramática G pode ser definida como sendo umaquádrupla:

G = (V,Σ,P,S)

onde:

I V é o vocabulário da gramática; corresponde a um conjunto(finito e não-vazio) de símbolos;

I Σ é o conjunto (finito e não-vazio) dos símbolos terminais dagramática; também denominado alfabeto ;

I P é o conjunto (finito e não-vazio) de produções ou regras desubstituição da gramática;

I S é a raiz (ou símbolo inicial ) da gramática, S ∈ V.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 54 / 94

Page 55: Conceitos Basicos de Linguagens

Gramáticas

Definição

Adicionalmente, define-se N = V −Σ como sendo o conjunto dossímbolos não-terminais da gramática. Σ corresponde ao conjunto dossímbolos que podem ser justapostos para compor as sentenças dalinguagem que se está definindo, e N corresponde ao conjunto dossímbolos intermediários (classes sintáticas) utilizados na estruturaçãoe na geração de sentenças, sem no entanto fazer parte das mesmas.Σ,N e P são conjuntos finitos e não-vazios. P é o conjunto dasproduções gramaticais, que obedecem à forma geral:

α → β , com α ∈ V∗NV∗ e β ∈ V∗

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 55 / 94

Page 56: Conceitos Basicos de Linguagens

Gramáticas

Definição

De fato, “→” é uma relação sobre os conjuntos V∗NV∗ e V∗, uma vezque:

P = {(α ,β ) | (α ,β ) ∈ V∗NV∗×V∗}

ou seja, P é um subconjunto de V∗NV∗×V∗.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 56 / 94

Page 57: Conceitos Basicos de Linguagens

Gramáticas

Exemplo

Exemplo 3.1SejaG1 = (V1,Σ1,P1,S), com:

V1 = {0,1,2,3,S,A}

Σ1 = {0,1,2,3}

N1 = {S,A}

P1 = {S → 0S33,S → A,A → 12,A → ε}

É fácil verificar queG1 está formulada de acordo com as regras gerais acimaenunciadas para a especificação de gramáticas.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 57 / 94

Page 58: Conceitos Basicos de Linguagens

Gramáticas

Forma sentencial

Denomina-se forma sentencial qualquer cadeia obtida pela aplicaçãorecorrente das seguintes regras de substituição:

1 S (a raiz da gramática) é por definição uma forma sentencial;2 Seja αρβ uma forma sentencial, com α e β cadeias quaisquer de

terminais e/ou não-terminais da gramática, e seja ρ → γ umaprodução da gramática. Nessas condições, a aplicação dessaprodução à forma sentencial, substituindo a ocorrência de ρ por γ ,produz uma nova forma sentencial αγβ .

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 58 / 94

Page 59: Conceitos Basicos de Linguagens

Gramáticas

Derivação direta

Denota-se a substituição acima definida, também conhecida comoderivação direta , por:

αρβ ⇒G αγβ

O índice “G” designa o fato de que a produção aplicada, no casoρ → γ , pertence ao conjunto de produções que define a gramática G.Nos casos em que a gramática em questão puder ser facilmenteidentificada, admite-se a eliminação de referências explícitas a ela.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 59 / 94

Page 60: Conceitos Basicos de Linguagens

Gramáticas

→ e ⇒

Note-se a distinção gráfica e de significado que se faz entre o símboloempregado na denotação das produções da gramática (→) e osímbolo utilizado na denotação das derivações (⇒).

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 60 / 94

Page 61: Conceitos Basicos de Linguagens

Gramáticas

Derivação e derivação não-trivial

Uma seqüência de zero ou mais derivações diretas, como, porexemplo, α ⇒ β ⇒ ... ⇒ µ é chamada simplesmente derivação , epode ser abreviada como α ⇒∗ µ .Derivações em que ocorre a aplicação de pelo menos uma produçãosão denominadas derivações não-triviais , e são denotadas porα ⇒+ µ .

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 61 / 94

Page 62: Conceitos Basicos de Linguagens

Gramáticas

Sentença

Se, pela aplicação de uma derivação não-trivial à raiz S de umagramática, for possível obter uma cadeia w formada exclusivamente desímbolos terminais, diz-se que w, além de ser uma forma sentencial, étambém uma sentença , e denota-se a sua derivação por:

S ⇒+ w

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 62 / 94

Page 63: Conceitos Basicos de Linguagens

Gramáticas

Substituições

Gramáticas são sistemas formais baseados na substituição, em umaforma sentencial, de uma cadeia, coincidente com o lado esquerdo deuma regra de produção, pela cadeia correspondente ao lado direito damesma regra, visando com isso, ao final de uma seqüência desubstituições, a obtenção de uma cadeia sobre Σ. O processo desubstituição tem início sempre a partir da raiz S da gramática, e éfinalizado assim que for obtida uma forma sentencial isenta desímbolos não-terminais, isto é, assim que se obtiver uma sentença.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 63 / 94

Page 64: Conceitos Basicos de Linguagens

Gramáticas

Exemplo

Exemplo 3.2Considere-se a gramáticaG1, definida no Exemplo 3.1.

I S é por definição uma forma sentencial;

I 0S33 é uma forma sentencial, poisS ⇒ 0S33;

I S ⇒ 0S33 é uma derivação direta;

I 00S3333 e 00A3333 são formas sentenciais, pois 0S33⇒ 00S3333⇒ 00A3333através das produçõesS → 0S33 eS → A, aplicadas nesta ordem;

I S ⇒+ 00A3333 eS ⇒+ 0S33 são exemplos de derivações não-triviais;

I 00S3333⇒∗ 00S3333 e 0S33⇒∗ 00A3333 são exemplos de derivações;

I 12 e 00123333 são exemplos de sentenças, pois ambas são formadasexclusivamente por símbolos terminais eS ⇒ A ⇒ 12, ou seja,S ⇒+ 12, eS ⇒ 0S33⇒ 00S3333⇒ 00A3333⇒ 00123333, ou seja,S ⇒+ 00123333.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 64 / 94

Page 65: Conceitos Basicos de Linguagens

Gramáticas

Linguagem definida por uma gramática

Ao conjunto de todas as sentenças w geradas por uma gramática Gdá-se o nome de linguagem definida pela gramática G, ousimplesmente L(G). Formalmente,

L(G) = {w ∈ Σ∗ | S ⇒+ w}

Exemplo 3.3Pela inspeção das produções da gramáticaG1 do Exemplo 3.1, pode-se concluir que:

L1(G1) = {0m1n2n32m | m > 0 e(n = 0 oun = 1)}

São exemplos de sentenças pertencentes aL1 : ε,12,033,01233,003333,00123333etc.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 65 / 94

Page 66: Conceitos Basicos de Linguagens

Gramáticas

Linguagem definida por uma gramática

Como se pode perceber, diferentes seqüências de produçõesaplicadas à (única) raiz da gramática possibilitam a geração dasdiferentes (em geral, infinitas) sentenças da linguagem. Por outro lado,muitas vezes há mais de uma alternativa de substituição para ummesmo trecho de uma forma sentencial, ou, ainda, pode haver maisde um trecho em uma mesma forma sentencial que pode ser objetode substituição pelo lado direito de alguma produção. Assim, aidentificação correta das sentenças de uma dada linguagem deve serfeita levando-se em conta a possibilidade de ocorrência de todosesses fatores durante o processo de síntese de cadeias.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 66 / 94

Page 67: Conceitos Basicos de Linguagens

Gramáticas

Linguagem definida por uma gramática

A completa identificação da linguagem gerada por uma determinadagramática é uma tarefa que exige abstração e alguma prática namanipulação das produções. Algumas gramáticas, como é o caso deG1, podem ser analisadas sem dificuldade. Contudo, na prática,podem ocorrer gramáticas consideravelmente mais complexas.Observe-se, a título de ilustração, o caso da gramática G2

apresentada no Exemplo 3.4.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 67 / 94

Page 68: Conceitos Basicos de Linguagens

Gramáticas

Exemplo

Exemplo 3.4ConsidereG2 = (V2,Σ2,P2,S), com:

V2 = {a,b,c,S,B,C}

Σ2 = {a,b,c}

P2 = {S → aSBC,S → abC,CB → BC,bB → bb,bC → bc,cC → cc}

A linguagem gerada porG2 é{anbncn | n > 1}. De fato, a seqüência de derivaçõesiniciada com a regraS → abC conduz à geração da sentençaabc (S ⇒ abC ⇒ abc).Por outro lado, seqüências iniciadas com a aplicação repetidai vezes da regraS → aSBC conduzem à geração da seguinte forma sentencial subseqüente:

S ⇒i aiS(BC)i

A posterior aplicação da regraS → abC faz com que:

aiS(BC)i ⇒ aiabC(BC)i = ai+1b(CB)iC

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 68 / 94

Page 69: Conceitos Basicos de Linguagens

Gramáticas

Exemplo

Através da aplicação sucessiva da regraCB → BC, obtém-se agora:

ai+1b(CB)iC ⇒∗ ai+1bBiCiC = ai+1bBiCi+1

Finalmente, a aplicaçãoi vezes da regrabB → bb faz com que todos os símbolosBsejam substituídos por símbolosb:

ai+1bBiCi+1 ⇒i ai+1bbiCi+1 = ai+1bi+1Ci+1

A aplicação uma única vez da regrabC → bc substitui o primeiro símbolo da cadeiade símbolosC pelo símboloc:

ai+1bi+1Ci+1 ⇒ ai+1bi+1cCi

Para terminar, a aplicaçãoi vezes da regracC → cc substitui todos os demaissímbolosC por símbolosc:

ai+1bi+1cCi ⇒i ai+1bi+1cci = ai+1bi+1ci+1

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 69 / 94

Page 70: Conceitos Basicos de Linguagens

Gramáticas

Exemplo

A forma sentencial:ai+1bi+1ci+1

gera, portanto, as sentençasaabbcc, aaabbbccc etc. A sentençaaabbcc, por exemplo,é derivada da seguinte forma nessa gramática:

S ⇒ aSBC ⇒ aabCBC ⇒ aabBCC ⇒ aabbCC ⇒ aabbbcC ⇒ aabbcc

pela aplicação, respectivamente, das produções:

S → aSBC,S → abC,CB → BC,bB → bb,bC → bc ecC → cc

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 70 / 94

Page 71: Conceitos Basicos de Linguagens

Gramáticas

Exercício

1 Obter gramáticas que geram as linguagens cujas sentençassatisfazem às regras apresentadas a seguir. ConsiderarΣ = {a,b};

2 Repetir, considerando Σ = {a,b,c}.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 71 / 94

Page 72: Conceitos Basicos de Linguagens

Gramáticas

Exercício

I Começam com aa;

I Não começam com aa;

I Terminam com bbb;

I Não terminam com bbb;

I Contém a subcadeia aabbb;

I Não contém a subcadeia aaa;

I Possuem comprimento maior ou igual a 3;

I Possuem comprimento menor ou igual a 3;

I Possuem comprimento diferente de 3;

I Possuem comprimento par;

I Possuem comprimento ímpar;

I Possuem comprimento múltiplo de 4;

I Possuem quantidade par de símbolos a;

I Possuem quantidade ímpar de símbolos b.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 72 / 94

Page 73: Conceitos Basicos de Linguagens

Gramáticas

Gramáticas equivalentes

É possível definir uma mesma linguagem através de duas ou maisgramáticas distintas. Quando isso ocorre, diz-se que as gramáticasque definem a linguagem em questão são sintaticamente equivalentesou, simplesmente, equivalentes uma à outra.

Exemplo 3.5As gramáticasG3 eG4 a seguir definidas são equivalentes:

G3 = ({a,b,S},{a,b},{S→ aS,S → a,S → bS,S → b,S → aSb},S)

G4 = ({a,b,S,X},{a,b},{S→ XS,S → X,X → a,X → b},S)

Uma rápida análise deG3 e G4 permite concluir queL3(G3) = L4(G4) = {a,b}+.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 73 / 94

Page 74: Conceitos Basicos de Linguagens

Gramáticas

Notação algébrica

São muitas as notações (metalinguagens) utilizadas na definiçãogramatical das linguagens formais e de programação. Nos exemplosacima, bem como na maior parte do presente texto, utiliza-se anotação algébrica . No entanto, diversas outras metalinguagens sãolargamente empregadas para representar dispositivos generativos. Aescolha de uma ou outra metalinguagem varia de acordo com o tipoda linguagem que estiver sendo definida, com o uso que se pretendafazer de tal representação formal e com as próprias preferênciaspessoais de quem a estiver elaborando.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 74 / 94

Page 75: Conceitos Basicos de Linguagens

Gramáticas

Outras notações

À exceção da notação algébrica, empregada para representardiversos tipos de linguagens e utilizada com especial ênfase noestudo teórico das propriedades das linguagens formais, outrasnotações, como, por exemplo, as Expressões Regulares, o BNF(Backus-Naur Form ou Notação de Backus-Naur), a Notação de Wirth(ou Expressões Regulares Estendidas) e os Diagramas de Sintaxe(também conhecidos como Diagramas Ferroviários), são bastantepopulares e amplamente utilizadas na definição de linguagens deprogramação de alto nível.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 75 / 94

Page 76: Conceitos Basicos de Linguagens

Linguagens, Gramáticas e Conjuntos

Linguagens como conjuntos

Linguagens são conjuntos. Conjuntos que formam linguagens sãocoleções de cadeias construídas sobre um alfabeto, por exemplo,através de gramáticas. A fim de explicitar e facilitar o entendimento delinguagens vistas como conjuntos, é conveniente considerar-se umacoleção finita de linguagens distintas, todas infinitas, definidas sobreum mesmo alfabeto qualquer. Analisando-se as respectivasgramáticas, sugere-se que o leitor procure compreender de que modoas linguagens foram definidas e, principalmente, verifique a relaçãoque existe entre elas.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 76 / 94

Page 77: Conceitos Basicos de Linguagens

Linguagens, Gramáticas e Conjuntos

Linguagens como conjuntos

Linguagens são conjuntos. Conjuntos que formam linguagens sãocoleções de cadeias construídas sobre um É interessante verificar:estas linguagens possuem elementos (sentenças) em comum? Qual éa sua intersecção? Alguma dessas linguagens é subconjunto deoutra? Superconjunto? Subconjunto próprio? São inúmeras aspossibilidades. O importante é desenvolver a percepção de quelinguagens são conjuntos. Isso facilitará o estudo de novas operaçõessobre linguagens, e também de suas propriedades.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 77 / 94

Page 78: Conceitos Basicos de Linguagens

Linguagens, Gramáticas e Conjuntos

Exemplo

Exemplo 4.1A gramáticaG0 = ({a,b,S},{a,b},{S→ aS,S → bS,S → ε},S) é tal que

L0(G0) = Σ∗.Substituindo a regraS → ε pelas regrasS → a e S → b, emG, obtém-se uma novagramáticaG1 = ({a,b,S},{a,b},{S→ aS,S → bS,S → a,S → b},S), de tal formaque agoraL1(G1) = Σ+.A linguagemL2, formada por cadeias sobreΣ = {a,b}, de tal modo que todas elassejam iniciadas pelo símboloa, é gerada pela gramáticaG2 = ({a,b,S,X},{a,b},{S→ aX,X → aX,X → bX,X → ε},S). São exemplos decadeias pertencentes aL2 : a, abb, abaaa, aabbbba, aaa etc.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 78 / 94

Page 79: Conceitos Basicos de Linguagens

Linguagens, Gramáticas e Conjuntos

Exemplo

Por outro lado, considere-se a linguagemL3, composta por cadeias sobreΣ = {a,b},de tal forma que todas elas sejam iniciadas com o símboloa e terminadas com osímbolob. Uma possível gramática que geraL3 éG3 = ({a,b,S,X},{a,b},{S→ aX,X → aX,X → bX,X → b},S). Perceba a sutildiferença que existe entreG2 eG3.Em seguida, considere-se a linguagemL4 que compreende todas as cadeias sobreΣ = {a,b} que possuam exatamente dois símbolosb (nem mais, nem menos). Sãoexemplos:bb, bab, abb, aaaaabaab etc.L4 é gerada pela gramáticaG4 = ({a,b,S,X},{a,b},{S→ XbXbX,X → aX,X → ε},S).Finalmente, a linguagemL5 é definida pelas cadeias sobreΣ = {a,b}, de tal formaque todas elas sejam iniciadas com o símbolob e contenham um único símbolob.São exemplosb,ba,baa,baaa etc. A linguagemL5 é gerada porG5 = ({a,b,S,X},{a,b},{S→ bX,X → aX,X → ε},S).Esquematicamente, a relação entre as linguagensL0,L1,L2,L3,L4 eL5 pode serobservada na Figura 5 (é bom ter em mente que linguagens são conjuntos).

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 79 / 94

Page 80: Conceitos Basicos de Linguagens

Linguagens, Gramáticas e Conjuntos

Exemplo

Figura 5: As linguagens do Exemplo 4.1 como conjuntos

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 80 / 94

Page 81: Conceitos Basicos de Linguagens

Linguagens, Gramáticas e Conjuntos

Exemplo

Observe-se a relação de inclusão própria entre as linguagens estudadas. A cadeiaεilustra a inclusão própria deL1 emL. A cadeiabbba, deL2 emL1. Através da cadeiaabaa, exemplifica-se a inclusão própria deL3 emL2. SobreL4 pode-se apenas dizerque está incluída propriamente emL1.A cadeiaabb pertence simultaneamente às linguagensL0,L1,L2,L3 e L4. A cadeiaabaabab pertence aL0,L1,L2 e L3 apenas. A cadeiaababa, somente às linguagensL0,L1,L2 e L4, e assim por diante.Cumpre, novamente, notar que:

I A maior linguagem que pode ser definida sobre{a,b} é{a,b}∗, que, nestecaso, corresponde aL0;

I O conjunto detodas as linguagens que podem ser definidas sobre{a,b} é dadopor 2{a,b}∗ . Assim,L0,L1,L2,L3,L4 eL5 pertencem, todas, a 2{a,b}∗. Em outraspalavras, cada uma dessas linguagens é um elemento de 2{a,b}∗, que por sua vezé um conjunto infinito.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 81 / 94

Page 82: Conceitos Basicos de Linguagens

Reconhecedores

Conceito

Conhecidos também como dispositivos cognitivos , dispositivos deaceitação , aceitadores sintáticos ou simplesmente autômatos , osreconhecedores são sistemas formais capazes de aceitar todas assentenças que pertençam a uma determinada linguagem, rejeitandotodas as demais. Por esse motivo, constituem uma forma alternativaàs gramáticas para a representação finita de linguagens.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 82 / 94

Page 83: Conceitos Basicos de Linguagens

Reconhecedores

Organização geral

Os reconhecedores — esboçados em sua forma geral na Figura 6 —apresentam quatro componentes fundamentais: uma memória (fita)contendo o texto de entrada do reconhecedor, um cursor, que indica opróximo elemento da fita a ser processado, uma máquina de estadosfinitos, sem memória, e uma memória auxiliar opcional.

Figura 6: Organização de um reconhecedor genérico

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 83 / 94

Page 84: Conceitos Basicos de Linguagens

Reconhecedores

Fita de entrada

A fita de entrada contém a cadeia a ser analisada pelo reconhecedor.Ela é dividida em células, e cada célula pode conter um único símboloda cadeia de entrada, pertencente ao alfabeto de entrada escolhidopara o reconhecedor. A cadeia de entrada é disposta da esquerdapara a direita, sendo o seu primeiro símbolo colocado na posição maisà esquerda da fita.Dependendo do tipo de reconhecedor considerado, a fita (ou oconjunto de fitas) de entrada pode apresentar comprimento finito ouinfinito. Neste último caso, a fita pode ter ou não limitação à esquerdae/ou à direita. A cadeia de entrada registrada na fita de entrada podeestar delimitada por símbolos especiais, não pertencentes ao alfabetode entrada, à sua esquerda e/ou à sua direita, porém isso não éobrigatório.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 84 / 94

Page 85: Conceitos Basicos de Linguagens

Reconhecedores

Cursor

A leitura dos símbolos gravados na fita de entrada é feita através deum cabeçote de acesso, normalmente denominado cursor , o qualsempre aponta o próximo símbolo da cadeia a ser processado. Osmovimentos do cursor são controlados pela máquina de estados, epodem, dependendo do tipo de reconhecedor, ser unidirecionais(podendo deslocar-se para um lado apenas, tipicamente para adireita) ou bidirecionais (podendo deslocar-se para a esquerda e paraa direita). Determinados tipos de reconhecedores utilizam o cursornão apenas para lerem os símbolos da fita de entrada, mas tambémpara escreverem sobre a fita, substituindo símbolos nela presentespor outros, de acordo com comandos determinados pela máquina deestados.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 85 / 94

Page 86: Conceitos Basicos de Linguagens

Reconhecedores

Máquina de estados

A máquina de estados funciona como um controlador central doreconhecedor, e contém uma coleção finita de estados , responsáveispelo registro de informações colhidas no passado, mas consideradasrelevantes para decisões futuras, e transições , que promovem asmudanças de estado da máquina em sincronismo com as operaçõesefetuadas através do cursor sobre a fita de entrada. Além disso, amáquina de estados finitos pode utilizar uma memória auxiliar paraarmazenar e consultar outras informações, também coletadas aolongo do processamento, que sejam eventualmente necessárias aocompleto reconhecimento da cadeia de entrada.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 86 / 94

Page 87: Conceitos Basicos de Linguagens

Reconhecedores

Memória auxiliar

A memória auxiliar é opcional, e torna-se necessária apenas emreconhecedores de linguagens que apresentam uma certacomplexidade. Normalmente, ela assume a forma de uma estrutura dedados de baixa complexidade, como, por exemplo, uma pilha (no casodo reconhecimento de linguagens livres de contexto). As informaçõesregistradas na memória auxiliar são codificadas com base em umalfabeto de memória , e todas as operações de manipulação damemória auxiliar (leitura e escrita) fazem referência apenas aossímbolos que compõem esse alfabeto. Os elementos dessa memóriasão referenciados através de um cursor auxiliar que, eventualmente,poderá coincidir com o próprio cursor da fita de entrada. Seu tamanhonão é obrigatoriamente limitado e, por definição, seu conteúdo podeser consultado e modificado.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 87 / 94

Page 88: Conceitos Basicos de Linguagens

Reconhecedores

Características dos componentes

O diagrama abaixo resume os componentes de um reconhecedorgenérico e as diversas formas como cada um deles pode seapresentar:

Reconhecedor

Máquina de Estados{

Finita

Fita de entrada + Cursor

Limitada / Não limitadaLeitura apenas / Leitura e escritaDireita apenas / Direita e esquerda

Memória auxiliar + Cursor{

Não limitadaLeitura e escrita

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 88 / 94

Page 89: Conceitos Basicos de Linguagens

Reconhecedores

Configuração

A operação de um reconhecedor baseia-se em uma seqüência demovimentos que o conduzem, de uma configuração inicial única, paraalguma configuração de parada, indicativa do sucesso ou do fracassoda tentativa de reconhecimento da cadeia de entrada.Cada configuração de um autômato é caracterizada pela quádrupla:

1 Estado;2 Conteúdo da fita de entrada;3 Posição do cursor;4 Conteúdo da memória auxiliar.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 89 / 94

Page 90: Conceitos Basicos de Linguagens

Reconhecedores

Configuração inicial

A configuração inicial de um autômato é definida como sendoaquela em que as seguintes condições são verificadas:

1 Estado: inicial, único para cada reconhecedor;2 Conteúdo da fita de entrada: com a cadeia completa a ser

analisada;3 Posição do cursor: apontando para o símbolo mais à esquerda da

cadeia;4 Conteúdo da memória auxiliar: inicial, predefinido e único.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 90 / 94

Page 91: Conceitos Basicos de Linguagens

Reconhecedores

Configuração final

A configuração final de um autômato é aquela na qual as seguintescondições são obedecidas:

1 Estado: algum dos estados finais, que não são necessariamenteúnicos no reconhecedor;

2 Conteúdo da fita de entrada: inalterado ou alterado, em relação àconfiguração inicial, conforme o tipo de reconhecedor;

3 Posição do cursor: apontando para a direita do último símbolo dacadeia de entrada ou apontando para qualquer posição da fita,conforme o tipo de reconhecedor;

4 Conteúdo da memória auxiliar: final e predefinido, nãonecessariamente único ou idêntico ao da configuração inicial, ouapenas indefinido.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 91 / 94

Page 92: Conceitos Basicos de Linguagens

Reconhecedores

Movimentação

A especificação de uma possibilidade de movimentação entre umaconfiguração e outra é denominada transição . A movimentação doautômato da configuração corrente para uma configuração seguinte éfeita, portanto, levando-se em conta todas as transições passíveis deserem aplicadas pelo reconhecedor à configuração corrente.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 92 / 94

Page 93: Conceitos Basicos de Linguagens

Reconhecedores

Movimentação

Uma transição mapeia triplas formadas por:

I Estado corrente;I Símbolo correntemente apontado pelo cursor da fita de entrada;I Símbolo correntemente apontado pelo cursor da memória auxiliar;

em triplas formadas por:I Próximo estado;I Símbolo que substituirá o símbolo correntemente apontado pelo

cursor da fita de entrada e o sentido do deslocamento do cursor;I Símbolo que substituirá o símbolo correntemente apontado pelo

cursor da memória auxiliar.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 93 / 94

Page 94: Conceitos Basicos de Linguagens

Reconhecedores

Linguagem

Diz-se que um autômato aceita (ou reconhece) uma cadeia se lhe forpossível atingir alguma configuração final a partir de sua configuraçãoinicial única, através de movimentos executados sobre tal cadeia.Caso contrário, diz-se que o autômato rejeita a cadeia. A maneiracomo tais configurações sucedem umas às outras durante oreconhecimento (ou aceitação) da cadeia de entrada define umacaracterística fundamental dos autômatos, conforme explicado aseguir.Seja o autômato determinístico ou não-determinístico, a linguagempor ele aceita (ou definida) corresponde ao conjunto de todas ascadeias que ele aceita.

Marcus Ramos (UNIVASF) LFA 2010-1 9 de junho de 2013 94 / 94