Jorge Muniz Barreto UFSC-INE 2000

Slides:



Advertisements
Apresentações semelhantes
FAPE - Curso de Ciência da Computação
Advertisements

Software Básico Silvio Fernandes
Letramento: um tema em três gêneros
I - Noções dum compilador
Coloração Teoria dos Grafos (INF 5037/INF2781) 1.
Linguagem de Montagem Visão geral.
Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento de Sistemas e Computação – DSC Máquina de.
Prof. Yandre Maldonado e Gomes da Costa
Linguagens Formais e Autômatos
TEORIA DA COMPUTAÇÃO Parte II  Linguagens Livres de Contexto
Teoria da Computação FIC– Ciência da Computação
Deyvisson, Rafael M.P., Renato, Robson C.F., Rodolfo
2. O objecto de estudo da Linguística
Software Básico Silvio Fernandes
Forma Normal de Chomsky
Gramáticas Livres do Contexto Revisão
Lema do Bombeamento – Gramáticas Livres do Contexto
Linguagens Livres de Contexto
Teoria da Computação BCC 244
Lógica de Programação Módulo II
Q={s,q1,…,q10,t,r} ={a,b,c} ={├,■,} Função de transição:
Linguagens Livre de Contexto
autômatos finitos com transições e
Análise Dada uma cadeia de terminais w, queremos saber se wL(G) ou não. Se for o caso, poderemos querer achar uma derivação de w. Um algoritmo que pode.
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Análise Sintática Ascendente
Relações em uma Gramática
Linguagem de Prog. e Programas
Construção de Compiladores
Prof. Luiz A M Palazzo Pelotas, fevereiro de 2011
Exercícios Linguagens Formais.
A Lógica das Sentenças Abertas Profa. Ana Florencia Aula 9
Processamento da Informação BC-05045
MATEMÁTICA Prof. Carlos Alexandre.
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Compiladores, Aula Nº 5 João M. P. Cardoso
Histórico, exemplos e problemas
ENGENHARIA DE AUTOMAÇÃO INDUSTRIAL
Gramáticas Livres de Contexto
Informática Teórica Engenharia da Computação
Algoritmos 1º Semestre Materia: Informática Profº: Cristiano.
Teoria da Computação Aula 1 Prof. Fabiano Sabha.
Expressões Regulares e Gramáticas
Inteligência Artificial
Capítulo II Gramáticas e Linguagens
André Luiz da Costa Carvalho
Analise sintática aula-07-analise-sintática.pdf.
Oralidade e escrita.
Analise Semântica aula-10-analise-semântica.pdf.
Algoritmos e Estrutura de Dados I
RACIONALIDADE E COMUNICAÇÃO Parte II – pg. 16 a 30.
Programação Lógica com Prolog
Faculdade Pernambucana - FAPE Setembro/2007
Fundamentos de linguagens de programação
Computabilidade e Linguagens Formais
Métodos Formais Juan Andrés Mussini.
Engenharia/Ciência da Computação
Algoritmos e Programação I
Sintaxe de uma Linguagem
tópicostópicos itens 01. Terminologia 02. Operações básicas 03. Representação de linguagens 04. Formalização de gramáticas 05. Processo de derivação 06.
Paradigmas de Programação
Faculdade Pernambuca - FAPE Compiladores Abril/2007 Compiladores Abril/2007.
Informática Teórica Engenharia da Computação. Teoria da Computação Contexto do que vamos começar a estudar As linguagens também podem ser definidas formalmente.
COMPILADORES 03 Prof. Marcos.
Informática Teórica Engenharia da Computação
CONJUNTOS NUMÉRICOS Projeto INFO
Somos todos seres sociais
Aula 1- Parte I Somos todos seres sociais
Transcrição da apresentação:

Jorge Muniz Barreto UFSC-INE 2000 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,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.

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,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.

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 ... } 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.

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 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. 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}

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  aAS A  SbA A  SS A  ba}

Nota: Estas linguagens são reconhecidas por máquina de estados finita. 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.

Á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,

E até curso mais aprofundado... Será que sou como o animal ao lado?