tó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. Construção de gramáticas formais 07. Hierarquia de Chomsky 08. Notações gramaticais 09. Transformação entre notações 10. Ambigüidade 11. Gramática de Transdução 01 terminologia básica Átomo Alfabeto Cadeia Sentença Linguagem terminologia • Elemento individual ou símbolo que será utilizado pela linguagem. • Menor parte que irá constituir os componentes de uma determinada linguagem. 01 terminologia básica Átomo Alfabeto Cadeia Sentença Linguagem terminologia • Conjunto de todos os átomos que serão utilizados para compor uma determinada linguagem. • Várias linguagens distintas podem utilizar o mesmo conjunto alfabeto. 01 terminologia básica Átomo Alfabeto Cadeia Sentença Linguagem terminologia • Qualquer combinação de átomos de um determinado conjunto alfabeto. 01 terminologia básica Átomo Alfabeto Cadeia Sentença Linguagem terminologia • Qualquer cadeia que tenha algum significado para a linguagem que está sendo definida. 01 terminologia básica Átomo Alfabeto Cadeia Sentença Linguagem terminologia • Coleção ou conjunto de sentenças específicas. 02 Comprimento operações básicas Funcionamento da operação de comprimento Tem apenas um operando. É aplicada em cadeias (ou sentenças). Gera como resultado um número inteiro. ||=n Definição da operação de comprimento: Cada cadeia é formada pela justaposição de átomos de um conjunto alfabeto. A operação de comprimento indica quantos átomos foram necessários para a construção daquela cadeia. Representação da operação de comprimento: Dada uma cadeia qualquer O comprimento da cadeia é um número n Representamos a operação de comprimento da forma. 02 Comprimento (cont) operações básicas Cadeias especiais: Cadeia vazia: É toda cadeia de comprimento zero. É formada de zero átomos do alfabeto. Representada pelo símbolo Cadeia elementar: É toda cadeia de comprimento um. É formada de apenas um átomo do alfabeto. Aplicada em cadeias (ou sentenças). 02 Concatenação operações básicas Funcionamento da operação de concatenação Tem dois operandos É aplicada entre dois átomos ou É aplicada entre um átomo e uma cadeia ou É aplicada entre duas cadeias Gera como resultado sempre uma cadeia Definição da concatenação: Cada cadeia é formada pela justaposição de átomos de um conjunto alfabeto. Concatenar significa juntar um átomo ou todos os átomos embutidos em uma cadeia a um outro átomo ou a todos os átomos embutidos numa outra cadeia. A ordem na qual os átomos estão dispostos influencia no resultado da operação. 02 Comprimento operações básicas Funcionamento da operação de comprimento Tem apenas um operando. É aplicada em cadeias (ou sentenças). Gera como resultado um número inteiro. ||=n Definição da operação de comprimento: Cada cadeia é formada pela justaposição de átomos de um conjunto alfabeto. A operação de comprimento indica quantos átomos foram necessários para a construção daquela cadeia. Representação da operação de comprimento: Dada uma cadeia qualquer O comprimento da cadeia é um número n Representamos a operação de comprimento da forma. 02 Comprimento (cont) operações básicas Cadeias especiais: Cadeia vazia: É toda cadeia de comprimento zero. É formada de zero átomos do alfabeto. Representada pelo símbolo Cadeia elementar: É toda cadeia de comprimento um. É formada de apenas um átomo do alfabeto. Aplicada em cadeias (ou sentenças). 02 Concatenação operações básicas Funcionamento da operação de concatenação Tem dois operandos É aplicada entre dois átomos ou É aplicada entre um átomo e uma cadeia ou É aplicada entre duas cadeias Gera como resultado sempre uma cadeia Definição da concatenação: Cada cadeia é formada pela justaposição de átomos de um conjunto alfabeto. Concatenar significa juntar um átomo ou todos os átomos embutidos em uma cadeia a um outro átomo ou a todos os átomos embutidos numa outra cadeia. A ordem na qual os átomos estão dispostos influencia no resultado da operação. 02 Concatenação (cont) operações básicas Representação da operação de concatenação Dadas duas cadeias quaisquer chamadas de e A concatenação entre estas duas cadeias gera uma terceira cadeia chamada de Representamos a operação de concatenação das formas: .= ou = Podemos considerar a concatenação entre átomos e entre átomo e cadeia como um caso particular do caso acima onde o átomo foi considerado como uma cadeia elementar 02 Concatenação (cont) operações básicas Características da operação de concatenação Operação associativa ( . ) . . ( . ) Operação não comutativa . ≠ . Elemento neutro é a cadeia vazia . = . = 02 Concatenação (cont) operações básicas Considerações em relação ao comprimento Na concatenação entre dois átomos o comprimento da cadeia resultante é sempre 2 Na concatenação entre um átomo e uma cadeia o comprimento da cadeia resultante é sempre o comprimento da cadeia original + 1 Na concatenação entre duas cadeias o comprimento da cadeia concatenada é sempre a soma dos comprimentos das cadeias operadas Em resumo: se .= então ||+||=|| 02 Fechamento operações básicas Funcionamento da operação de fechamento Tem apenas um operando. É aplicada sobre um conjunto finito e não vazio (normalmente o conjunto alfabeto). Gera como resultado um conjunto infinito. Tipos de fechamento existentes: Existem dois tipos diferentes de operação de fechamento 1. Fechamento recursivo e transitivo 2. Fechamento transitivo ou Fechamento transitivo puro e simples 02 Fechamento (cont) operações básicas Fechamento recursivo e transitivo Aplicado sobre um determinado conjunto produz um segundo conjunto com todas as possíveis combinações dos elementos do primeiro. Admite gerar qualquer cadeia formada por qualquer quantidade de elementos do primeiro conjunto, até nenhum elemento. Inclui a cadeia vazia no conjunto gerado Fechamento transitivo Aplicado sobre um determinado conjunto produz um segundo conjunto com quase todas as possíveis combinações dos elementos do primeiro. Admite gerar qualquer cadeia formada por pelo menos um elementos do primeiro conjunto. Exceto a cadeia vazia, possui todos os outros elementos do conjunto gerado pelo fechamento recursivo e transitivo. 02 Fechamento (cont) operações básicas Representação da operação de fechamento Dado um conjunto alfabeto finito e não vazio O fechamento recursivo e transitivo sobre este conjunto alfabeto () é representado da forma + O fechamento transitivo sobre este conjunto alfabeto () é representado da forma A diferença entre o conjunto gerado pelo fechamento recursivo e transitivo e o conjunto gerado pelo fechamento transitivo é apenas a cadeia vazia: * * = + U {} onde + * e + são conjuntos gerais e englobam toda a sorte de linguagens possíveis de se construir a parir do conjunto 02 Concatenação de linguagens operações básicas Funcionamento da operação de concatenação Tem dois operandos É aplicada entre duas linguagens Gera como resultado uma linguagem Se as duas linguagens operadas forem conjuntos finitos o resultado da operação de concatenação de linguagens é um conjunto finito. Caso contrário o resultado da operação de concatenação de linguagens é um conjunto infinito Definição da concatenação de linguagens: Cada linguagem é formada de um conjunto específico de cadeias (chamadas de sentenças) Concatenar linguagens significa juntar uma cadeia de uma linguagem a outra cadeia de outra linguagem, gerando um outro conjunto linguagem. A ordem na qual as cadeias estão dispostas influencia no resultado da operação. 02 Concatenação de linguagens (cont) operações básicas Representação da operação de concatenação Dadas duas linguagens quaisquer X e Y A concatenação entre estas duas linguagens gera uma terceira linguagem Z Representamos a operação de concatenação das formas: X.Y=Z ou XY = Z No conjunto das sentenças de Z temos todas as combinações possíveis entre uma sentença de X e outra sentença de Y, nesta ordem. 02 Concatenação de linguagens (cont) operações básicas Características da operação de concatenação Operação associativa (X . Y) . Z X . (Y . Z) Operação não comutativa X.Y ≠ Y.X Elemento neutro é a cadeia vazia qualquer linguagem que possua como conjunto de sentenças apenas a cadeia vazia se L = {} então X.L=L.X=X 03 Representação linguagens como formalizar Enumeração Gramáticas Reconhecedores Consiste em listar todas as sentenças da linguagem Representação válida apenas para linguagens finitas Para decidir se uma cadeia é ou não sentença da linguagem deve ser feita uma busca completa no conjunto de sentenças definidas. 03 Representação linguagens como formalizar Enumeração Gramáticas Reconhecedores É um dispositivo gerador de sentenças Define um conjunto de leis de formação para todas as sentenças de uma linguagem Pertence à linguagem? Deve-se tentar formar uma cadeia igual pela aplicação das leis de formação da gramática. Derivação: processo de obter uma sentença pelas regras de uma gramática formal Definição de linguagem por gramáticas: conjunto de todas as sentenças possíveis de serem geradas através das regras de formação definidas. 03 Representação linguagens como formalizar Enumeração Gramáticas Reconhecedores É um dispositivo testador de cadeias Define um conjunto de regras de aceitação para todas as sentenças de uma linguagem Pertence à linguagem? Deve-se aplicar as regras de aceitação a esta cadeia Reconhecimento: processo de aplicação das regras de aceitação de um reconhecedor a uma cadeia Definição de linguagem por reconhecedores: conjunto de todas as cadeias que passam com resultado positivo nas regras de aceitação (e portanto são sentenças). 04 Formalização gramáticas É definida através de uma quádrupla ordenada Os quatro elementos que formam a gramática: Conjunto Vocabulário, Conjunto Alfabeto, Conjunto das Produções Gramaticais e Símbolo Inicial. Representada da forma: G = ( V, , P, S ) 04 Vocabulário (V) gramáticas G = ( V, , P, S ) Conjunto de todos os elementos simbólicos utilizados para definir as leis de formação da gramática. Contém todos os elementos do conjunto alfabeto (os chamados símbolos terminais). Contém também os símbolos auxiliares criados para a montagem das regras de formação (os chamados símbolos não terminais). 04 Alfabeto () gramáticas G = ( V, , P, S ) Conjunto de todos os elementos simbólicos utilizados para definir as sentenças da linguagem Também chamado de conjunto dos símbolos terminais Conjunto finito e não vazio Define junto com o Vocabulário (V) outro conjunto Conjunto dos símbolos não terminais ( N ) Formado pelos outros elementos de V que são utilizados para definir construções intermediárias ou auxiliares São os elementos do Vocabulário (V) que não estão definidos no conjunto alfabeto (), ou seja: V=N onde N= 04 gramáticas Produções gramaticais (P) G = ( V, , P, S ) Conjunto das leis de formação de sentenças Principal elemento definidor da gramática Cada elemento deste conjunto é chamado de lei de formação ou de produção gramatical Toda produção gramatical segue um formato padrão. Utiliza uma cadeia (que chamaremos de ) gerando ou produzindo uma outra cadeia (que chamaremos de ). 04 Produções gramaticais (P) gramáticas G = ( V, , P, S ) Toda produção gramatical deve obedecer a duas restrições básicas. Restrição a ser seguida pela cadeia geradora (): V* . N . V* Restrição a ser seguida pela cadeia gerada (): V* 04 Símbolo Inicial (S) gramáticas G = ( V, , P, S ) Símbolo que inicia todo o processo de produção de sentenças da linguagem Único elemento definidor da gramática que não é um conjunto É um elemento que pertence ao conjunto Vocabulário (V) SV 05 definição derivação O que é derivação É um processo utilizado para obter uma sentença completa a partir das regras de formação definidas numa gramática formal. As produções gramaticais (conjunto de regras de formação de uma gramática), junto com os outros elementos de uma gramática formal, compõem um sistema de substituição de cadeias. A derivação é esta substituição acontecendo para uma sentença específica da linguagem 05 funcionamento derivação Como funciona a derivação Todo processo de derivação é iniciado pelo símbolo inicial da gramática (S). O símbolo inicial deve ser substituído utilizando alguma regra onde a cadeia geradora () seja o símbolo inicial. A aplicação desta regra coloca no lugar do símbolo inicial a cadeia gerada () pela regra. Sobre a cadeia resultante pode ser aplicada qualquer regra de substituição especificada no conjunto de produções gramaticais, em qualquer ordem e quantas vezes forem necessárias. Estas regras são aplicadas quantas vezes forem necessárias até que se tenha uma sentença da linguagem formada. 05 exemplo derivação A cadeia será uma sentença da linguagem: se existir uma seqüência de substituições definidas na gramática (usando as regras existentes no conjunto de produções gramaticais) que permita sair do símbolo inicial da linguagem e chegar até a cadeia : S 1 2 3 ... n Este processo inteiro é o que chamamos de derivação da sentença 05 derivação representação O símbolo que é usado para representar derivações É diferente do símbolo usado para construir as regras de substituição São operações diferentes As derivações (ou aplicações das regras) mapeiam o produto cartesiano + V x V* As regras de substituição mapeiam o produto cartesiano V* N V* x V* 05 tipos de derivação derivação Derivação direta A derivação direta é obtida pela aplicação de uma única regra de substituição. Utiliza o símbolo + Derivação não trivial A derivação não trivial é obtida pela aplicação de pelo menos uma regra de substituição (uma ou mais regras de * substituição aplicadas). Utiliza o símbolo Derivação (pura e simples) A derivação aplica todas as regras de substituição necessárias para partir do símbolo inicial para chegar a uma cadeia de símbolos do Vocabulário. Utiliza o símbolo 05 comprimento derivação Comprimento de uma derivação O comprimento de uma derivação é a quantidade de regras de produção gramatical que foram utilizadas em um passo de substituição (entre um e outro momento indicado durante o processo de derivação). n Utiliza o símbolo onde n representa um número inteiro que indica a quantidade de regras usadas 05 formas sentenciais derivação O que é uma forma sentencial Dada uma gramática formal É qualquer cadeia Formada de elementos do conjunto vocabulário (V). Obtida a partir do símbolo inicial (S). Pela aplicação das regras de substituição (elementos do conjunto de produções gramaticais) da gramática. 05 sentenças derivação O que é sentença É também uma forma sentencial É uma forma sentencial especial onde todos os elementos formadores de sua cadeia são elementos do conjunto alfabeto (). Cada sentença gerada faz parte da linguagem que está sendo definida pela gramática formal. 05 linguagem O que é linguagem A linguagem definida pela gramática formal (G) É indicada pela notação L(G) É definida como sendo o conjunto { * | S } derivação