linguagens formais jorge muniz barreto ufsc-ine 2000

30
Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Upload: internet

Post on 17-Apr-2015

111 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Linguagens Formais

Jorge Muniz Barreto

UFSC-INE

2000

Page 2: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Por que estudar Linguagens Formais?

• A resposta mais usual a esta pergunta é que o estudo das linguagens formais, sob a forma de gramáticas gerativas é a base da teoria da interpretação e compilação. Juntamente com a Teoria de Automata, como reconhecedores das palavras válidas definidas nestas linguagens tem-se um arcabouço teórico perfeito para a compreensão e estudo de compiladores.

Page 3: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Aplicações de Linguagens Formais• E será que estas gramáticas só serviriam

para isto? Claro que não, e serão apresentados exemplos distintos do uso de linguagens formais.

• Exemplos: Estudo de linguagens naturais, modelos de crescimento em biologia, modelos de evolução biológica, etc.

Page 4: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Linguística• Um sistema formal de grande interesse em

teoria da Computação é o das Gramáticas Gerativas. Estas Gramáticas apareceram inicialmente no estudo de Linguística para ajudar a melhor compreender as linguagens naturais.

• Chama-se Linguagem Natural aquela que é usada para comunicação entre seres vivos, em particular, seres humanos.

Page 5: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Uso em Linguagem Natural

• Os linguistas se preocupam não somente em definir precisamente o que é uma sentença correta mas também dar uma descrição da estrutura desta sentença. Inicialmente, os estudos se concentraram na Língua Inglesa a qual é atualmente talvez a mais bem estudada e conhecida.

Page 6: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

IA e Linguagem formal

• Para o pesquisador de Ciência da Computação, essas gramáticas gerativas tendo forma semelhante a um sistema formal, fazem crer que, quando se conseguir ter conhecimento completo da gramática formal de uma língua falada, tal como o português, um grande passo teria sido dado para o computador “entender” português.

Page 7: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Modelos Formais (1/2)• As gramáticas gerativas foram criadas por

Noam Chomsky. Existem ainda, para o estudo das linguagens naturais outras abordagens:

• Teoria da estratificação de Sydney

• Lamb que considera a linguagem constituida de mais de dois níveis (categorias gramaticais e vocabulário), (palavras não-terminais e terminais) e sim uma série de níveis ou estratos.

Page 8: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Modelos Formais (2/2)• A Teoria Tagmênica de Kenneth Pike para quem a

linguagem é uma variedade de comportamento humano, como comer, jogar tenis ou nadar. A principal colaboração desta teoria é a distinção entre diferenças êmicas e éticas. As éticas podem ser ignoradas pelo indivíduo que ouve ou produz o som como o “l'' final de “Brasil'’ freqüentemente pronunciado “u'', ou o ``th'' de ``tia'' do carioca. As êmicas tem valor semântico como “carro'' e “caro'' que para um francofone são sons idênticos.

• As gramáticas sistêmicas de Halliday.

Page 9: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Alfabetos

• Um alfabeto é um conjunto finito de símbolos.

• Algumas vêzes se fala de vocabulário, em lugar de alfabeto. Neste caso os símbolos são palavras. Par o objetivo seguido aqui, esta diferença é irrelevante pois uma palavra pode ser considerada representada por um símbolo, como na escrita hieroglífica.

Page 10: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Exemplos de Alfabetos

• {a,e,i,o,u} é o alfabeto constituido pelas vogais de nosso alfabeto.

• {I,V,X, L,C, M} é o alfabeto formado pelos símbolos usados na numeração romana.

• {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} é o alfabeto formado pelos símbolos usados na numeração arábica.

Page 11: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Definição de Linguagem

• Ao conjunto de todos as seqüências de elementos do alfabeto que se podem formar denota-se por A*.

Uma linguagem L sobre um alfabeto A, também escrita LA é todo

subconjunto de A*.

Page 12: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Exemplo de Linguagem dos Números Romanos

• Seja o alfabeto R = {I,V,X,L,C,M} do exemplo 2. R* é um conjunto de cardinalidade 0. Abaixo mostram-se alguns elementos:

R* = {I,II,III,IIII,V,VV,VVV,VVVV,VXL,XL,...}

que em termos dos símbolos usados no alfabeto 3 significam: 1,2,3,?,5,?,?,?,?,40,...

• As sequencias às quais não corresponde valor, expresso pelo correspondente número arábico, não são números romanos, isto é, não pertencem à linguagem dos números romanos.

Page 13: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Modos de Definir uma Linguagem (1/3)

• Essencialmente existem três modos de definir uma linguagem:

• Por enumeração de seus elementos,

• Por um modo construtivo chamado gramática gerativa, ou

• Por propriedades.

Page 14: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Modos de definir uma Linguagem (2/3)• Definir uma linguagem por enumeração de

seus elementos só é possível no caso de linguagem com número finito de palavras.

• A definição por propriedades é uma definição declarativa, em que certas formas especiais são ditas pertencer à linguagem.

Page 15: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Modos de definir uma Linguagem (2/3)• As gramáticas gerativas consistem em um

algoritmo para gerar as palavras da linguagem.

• Neste caso faz-se uma partição no alfabeto, terminais e não terminais, da-se regras de reescrita, e um elemento não terminal para início da geração das palavras da linguagem.

Page 16: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Gramática gerativa• Uma gramática é a quadrupla:

<N,T,P,n0>

onde:

N: conjunto de símbolos ditos não terminais;

T: conjunto de símbolos terminais;

P: conjunto de regras de reescrita ou de produção;

n0: raiz ou fonte da linguagem n0 N.

Page 17: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Representacões de regras

• Representação funcional:

• A ABa

• Representação como em um sistema formal

A

ABa

Page 18: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Relação com Sistemas Formais

• A definição de uma linguagem por gramáticas gerativas tem grande relação com o estudo dos Sistemas Formais, podendo mesmo ser considerado como exemplo destes sistemas.

• Na realidade, a um dado sistema formal correspondem tantas linguagens geradas por gramáticas gerativas quantos são os elementos do vocabulário.

Page 19: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Como ter várias Gramáticas Gerativas de um Sistema Formal?• Note que no sistema formal temse um

vocabulário. Não foi ainda especificado o que é o elemento inicial gerador (algumas vêzes se faz isto nas regras), nem os terminais nem os não terminais. Escolhas diferentes produzem linguagens distintas.

Page 20: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Exemplo de Gramática Gerativa

• N={F,S,C,V,O}• T={Jó,Sô,casa,…}• P={• F SC• F SV• C VO ...• }

• N0 = F

• Se supõe o alfabeto não terminal significando categorias gramaticais, tem-se:

• F: Frase

• S: Sujeito

• C: complemento, etc…

• E tem-se uma representção do português.

Page 21: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Hierarquia de Chomsky

• A Hierarquia de Chomsky classifica as linguagens segundo o grau de complexidade das suas regras de reescrita.

• Assim as linguagens são classificadas como de tipo 0, 1, 2 e 3. As tipo 0 não tem restrições, as outras que são cada uma mais restrita que a outra são: sensíveis ao contexto, livres de contexto e regulares.

Page 22: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Linguagem Tipo 0

• Em uma linguagem tipo zero não há restrições quanto às regras de reescrita, ou de produção.

• São as mais difíceis de se tratar.

• Observação: serão usadas letras maiúsculas para não terminais e minúsculas para terminais.

Page 23: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Linguagem Tipo 1

• As Linguagens Tipo 1 são também chamadas sensíveis ao contexto. Nelas se exige apenas que em cada regra de produção, o comprimento da palavra original seja igual ou menor que o da palavra derivada.

• Assim: Aab Ac não é válida;• Mas: Ac Aab o é.

Page 24: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Linguagem Tipo 1:Exemplo• Seja a linguagem:

(N,T,P,S)

N={S,B,C}, T={a,b,c},

P{S aSBC,

S aBC,

CB BC,

aB ab, bB bb

bC bc, cC cc}

Usando P1 n-1 vezes:

S an-1 S(BC) n-1

Usando P2: a n (BC) n

P3 permite : an Bn Cn

P4: an b Bn-1 Cn

P5: an bn Cn

P6 1 vêz e P7 n-1 vêzes:

an bn cn

Prova-se que esta é forma geral de

palavras da linguagem.

Page 25: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Linguagem Tipo 2

• Linguagem Tipo 2 ou Livre de contexto são as mais usadas. Nelas todos os antecedentes de regras tem apenas 1 elemento, por exemplo:

A Ba

• Neste caso o resultado da transformação de A independe do que tem antes ou depois , isto é, do contexto.

Page 26: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Linguagem Tipo 2: Árvores

• As linguagens de tipo 2 podem ser representadas com facilidade por árvores de derivação:

• Existe 1 e apenas 1 nó sem ramo chegando, chamado raiz da árvore.

• Para cada nó existe uma seqüência de nós ligando este nó à raiz da árvore. O grafo é conexo.

• Somente um arco entra em cada nó.

Page 27: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Exemplo de árvore

Seja a gramática:

G=({S,A],{a,b}P,S)onde:

P={S aAS

S a

A SbA

A SS

A ba}

Page 28: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Linguagem Tipo 3

• Linguagem Tipo 3 ou Linguagem Regular ee aquela em que as Regras de produção, ou tem apenas como consequencia um terminal ou um terminal seguido de um não terminal. Ex:

A aB ou A a

Nota: Estas linguagens são reconhecidas por máquina de estados finita.

Page 29: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

Árvores para Linguagem T3

• As árvores das linguagens tipo 3 são todas mais simples que as do tipo 2.

• Árvores, servem para, partindo de suas folhas reconstruir a árvore. A esta ação chama-se parser, ou análise sintática,

Page 30: Linguagens Formais Jorge Muniz Barreto UFSC-INE 2000

E até curso mais aprofundado...

Será que sou como o animal ao lado?