Linguagens Formais Jorge Muniz Barreto UFSCINE 2000 Por
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.
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.
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.
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.
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.
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.
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.
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.
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.
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*.
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, III, IIII, V, VVV, VVVV, VXL, . . . } 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.
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.
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.
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.
Gramática gerativa • Uma gramática é a quadrupla: <N, T, P, n 0> 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; n 0: raiz ou fonte da linguagem n 0 N.
Representacões de regras • Representação funcional: • A ABa • Representação como em um sistema formal A ABa
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.
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.
Exemplo de Gramática Gerativa • • N={F, S, C, V, O} T={Jó, Sô, casa, …} P={ F SC F SV C VO. . . } N 0 = 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.
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.
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.
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 é.
Linguagem Tipo 1: Exemplo • Seja a linguagem: Usando P 1 n-1 vezes: n-1 S(BC) n-1 S a (N, T, P, S) n (BC) n Usando P 2: a N={S, B, C}, T={a, b, c}, n Bn Cn P 3 permite : a P{S a. SBC, n b Bn-1 Cn P 4: a S a. BC, n bn Cn P 5: a CB BC, a. B ab, b. B bb P 6 1 vêz e P 7 n-1 vêzes: n bn cn a b. C bc, c. C cc} Prova-se que esta é forma geral de palavras da linguagem.
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.
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ó.
Exemplo de árvore Seja a gramática: G=({S, A], {a, b}P, S)onde: P={S a. AS S a A Sb. A A SS A ba}
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 a. B ou A a Nota: Estas linguagens são reconhecidas por máquina de estados finita.
Árvores para Linguagem T 3 • 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,
E até curso mais aprofundado. . . Será que sou como o animal ao lado?
- Slides: 30