Capítulo II Gramáticas

Documentos relacionados
Capítulo II Gramáticas

INE5317 Linguagens Formais e Compiladores. AULA 4: Gramáticas

Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais

LINGUAGENS FORMAIS E COMPILADORES (Prof. Olinto José Varela Furtado)

Linguagens, Reconhecedores e Gramáticas

Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados.

IV Gramáticas Livres de Contexto

LINGUAGENS FORMAIS E AUTÔMATOS

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

Gramática. Prof. Yandre Maldonado e Gomes da Costa. Prof. Yandre Maldonado - 1

Gramática. Gramática. Gramática

Definições Hierarquia de Chomsky Exemplos de gramáticas. Gramáticas. Objetivo de ensinar o inglês pelo computador e conseguir um tradutor de línguas

Compiladores Aula 4. Celso Olivete Júnior.

TRANSFORMAÇÃO DE GRAMÁTICAS LIVRES DO CONTEXTO PARA EXPRESSÕES REGULARES ESTENDIDAS

COMPILADORES. Revisão Linguagens formais Parte 01. Geovane Griesang

Capítulo 3: Gramáticas

LFA Aula 09. Gramáticas e Linguagens Livres de Contexto 18/01/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior.

Hierarquia de Chomsky Exemplos de gramáticas

Linguagens Formais e Autômatos P. Blauth Menezes

Gramáticas Livres de Contexto

LINGUAGENS FORMAIS Definições. Desenvolveram-se na História em função da necessidade dos grupos humanos que as empregavam

Linguagens Livres de Contexto

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

Análise Sintática. Fabiano Baldo

Plano da aula. Compiladores. Os erros típicos são sintáticos. Análise Sintática. Usando Gramáticas. Os erros típicos são sintáticos

Definições Hierarquia de Chomsky Exemplos de gramáticas

Definições Exemplos de gramáticas

Linguagens e Gramáticas. Linguagens Formais Hierarquia de Chomsky

Definições Hierarquia de Chomsky Exemplos de gramáticas

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

Linguagens livres de contexto e autômatos de pilha

Análise Léxica. Fundamentos Teóricos. Autômatos Finitos e Conjuntos Regulares (cap. III da apostila de Linguagens Formais e Compiladores)

Linguagens Formais. Aula 01 - Conceitos Básicos. Prof. Othon Batista Mestre em Informática

Linguagens Formais e Autômatos P. Blauth Menezes

Construção de Compiladores Aula 16 - Análise Sintática

Gramáticas Sensíveis ao Contexto (GSC) Linguagens Sensíveis ao Contexto (LSC) Autômatos Linearmente Limitados (ALL)

Python e sua sintaxe LNCC UFRJ

V Análise Sintática. V.1.1 Gramáticas Livres de Contexto Definições de GLC

Autômatos com Pilha: Reconhecedores de LLCs

Gramáticas e Linguagens independentes de contexto

Automata e Linguagens Formais

Linguagens Livres de Contexto

Máquina de Turing Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente

Um alfabeto é um conjunto de símbolos indivisíveis de qualquer natureza. Um alfabeto é geralmente denotado pela letra grega Σ.

Gramáticas ( [HMU00], Cap. 5.1)

Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais

Aula de 28/10/2013. sticas; Implementação. em Ruby

Introdução Definição Conceitos Básicos de Linguagem

INE5318 Construção de Compiladores. AULA 4: Análise Sintática

Linguagens Formais e Autômatos P. Blauth Menezes

Gramá3ca Livre de Contexto (GLC)

Compiladores. Parser LL 10/13/2008

INE5317 Linguagens Formais e Compiladores. Ricardo Azambuja Silveira INE-CTC-UFSC URL:

Editor de Autômatos Finitos. Acadêmica: Josiane Patrícia Morastoni Orientadora: Joyce Martins

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos

Linguagens e Programação Gramáticas. Paulo Proença

Propriedades de Linguagens Livres de Contexto. Propriedades de Linguagens Livres de Contexto. Propriedades de Linguagens Livres de Contexto

Gramáticas Livres de Contexto Parte 1

Gramática regular. IBM1088 Linguagens Formais e Teoria da Computação. Evandro Eduardo Seron Ruiz Universidade de São Paulo

TEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO

Linguagens Formais e Autômatos. Simplificação de Gramáticas Livre do Contexto (GLC)

BCC244. Alfabeto, String, Linguagem, Gramática. Registro aqui o agradecimento à Profa. Lucília por ceder slides que fazem parte deste materal.

AF Não-determinísticos Equivalência entre AFND e AFD AFs e GRs Implementação de AFs

COMPILADORES. Análise sintática. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática

INE5416 Paradigmas de Programação. Ricardo Azambuja Silveira INE CTC UFSC E Mail: URL:

INE5317 Linguagens Formais e Compiladores. AULA 10: Anális e S intática

V Teoria de Parsing. Termos Básicos: Parser Analisador Sintático Parsing Analise Sintática Parse Representação da analise efetuada

Compiladores Analisador Sintático. Prof. Antonio Felicio Netto Ciência da Computação

Compiladores. Análise lexical. Plano da aula. Motivação para análise lexical. Vocabulário básico. Estrutura de um compilador

Gramática Livre de Contexto

Se o símbolo inicial não fizer parte do conjunto de símbolos férteis, a linguagem gerada pela gramática é vazia.

Marcos Castilho. DInf/UFPR. 21 de março de 2019

Modelagem e CLP Linguagens e Expressões Regulares

LINGUAGENS FORMAIS E AUTÔMATOS. Prova 2-10/06/ Prof. Marcus Ramos

INE5317 Linguagens Formais e Compiladores AULA 9: Propriedades e Reconhecimento das Linguagens Livres do Contexto

Análise Sintática Introdução

Teoria da Computação Aula 02 Introdução

Segunda Lista de Exercícios 2004/2...

Expressões Regulares e Gramáticas Regulares

Linguagens Formais e Autômatos P. Blauth Menezes

Universidade Federal de Alfenas

Construção de Compiladores Aula 3 - Analisador Sintático

Formas normais. Forma normal de Greibach (FNG) todas as produções são da forma

Analisadores Sintáticos LR

Transformações úteis para GLC: (1) eliminação de produções nulas; (2) eliminação de produções unitárias; (3) Eliminação de símbolos estéreis e

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO II Campus Rio Pomba

Apostila Compiladores I

Matemática Discreta para Ciência da Computação

Compiladores. Exemplo. Caraterísticas de Gramáticas. A αβ 1 αβ 2. A αx X β 1 β 2. Lembrando... Gramáticas Livres de Contexto

Linguagens Formais - Preliminares

FERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS

Behavioral Patterns - Interpreter

Linguagens Regulares. Prof. Daniel Oliveira

AF Não-determinísticos Equivalência entre AFDN e AFD Equivalência entre AF e GR (H&U, 1969 e 1979), (H;M;U, 2001) e (Menezes, 2002) 1

INE5317 Linguagens Formais e Compiladores AULA 5: Autômatos Finitos

SCC Capítulo 2 Linguagens Livres de Contexto e Autômatos de Pilha (versão 2)

Transcrição:

Capítulo II Gramáticas II.1 Motivação O que é uma Gramática? Um sistema gerador de linguagens; Um sistema de reescrita; Uma maneira finita de representar uma linguagem; Um dispositivo formal usado para especificar de maneira finita e precisa uma linguagem potencialmente infinita. Qual a finalidade de uma gramática? Definir o subconjunto de V* que forma uma determinada linguagem. Exemplo intuitivo de uma Gramática (um subconjunto da gramática da língua portuguesa) <sentença> :: = <sujeito> <verbo> <objeto> <sujeito> :: = <substantivo> <artigo> <substantivo> <artigo> <adjetivo> <substantivo> <substantivo> :: = compilador tradutor codigo interpretador programa resultado <artigo> :: = o um <adjetivo> :: = eficiente bom mau melhor pior <verbo> :: = gera traduz compila interpreta <objeto> :: = <substantivo> <artigo> <substantivo> <artigo> <adjetivo> <substantivo> ε (* vazio *) 1

II.2 Definição Formal de Gramática onde: G = (Vn, Vt, P, S) Vn conjunto finito de símbolos não-terminais. Vt conjunto finito de símbolos terminais. convenções: Vn Vt = ϕ e Vn Vt = V P conjunto finito de pares (α, β) denominados produções (ou regras gramaticais ou de sintaxe). P = { α :: = β α V * VnV * β V * } S símbolo Vn, é o símbolo inicial da gramática. Exemplo: Formalizando o subconjunto da gramática da língua portuguesa apresentado, teríamos: Gportugues = (Vn, Vt, P, S), onde: Vn = { <sentença>, <sujeito>, <substantivo>, <artigo>, <adjetivo>, <verbo>, <objeto>} Vt = { compilador, tradutor, código, interpretador programa, resultado, o, um, eficiente, bom, mau, melhor, pior, gera, traduz, compila, interpreta } P = é o conjunto das regras gramaticais apresentado S = <sentença> 2

Exemplos e exercícios: 1 - Construa gramáticas que representem as seguintes linguagens: a) Inteiros positivos menores que 1000 b) Inteiros positivos c) Inteiros positivos pares d) Números reais 2 Dado VT = { a, b }, construa uma gramática cuja linguagem gerada seja: a) O conjunto de sentenças cujo último símbolo seja igual o primeiro b) O conjunto de sentenças de tamanho ímpar c) O conjunto de sentenças com número par de b s d) O conjunto de sentenças com #a s divisível por 3 e) O conjunto de sentenças que não possuam a s consecutivos f) O conjunto de sentenças onde o #a s seja igual o #b s e todos os a s precedam todos os b s g) O conjunto de sentenças onde o #a s = #b s Notação a ser utilizada neste curso: ::= - V N Letras de A a T e palavras escritas com letras maiúsculas V T Letras de a a t, palavras escritas com letras minúsculas, dígitos e caracteres especiais V T * - u, v, x, y, w, z {V N V T } U, V, X, Y, W, Z {V N V T }* - α, β, γ, δ,...,ω ( exceto ε ) 3

II.3 Derivação e Redução Definição: São operações de substituição que formalizam o uso de gramáticas Seja G = (Vn, Vt, P, S) uma gramática Seja δαγ (Vn Vt) * Derivação em um passo (ou direta): δαγ δβγ α β P Derivação em zero ou mais passos α * β α α1 α2... αn β; p/ n 0 obs. Se α * β em 0 (zero) passos, então α = β. Derivação em um ou mais passos α β α α1 α2... αn β; p/ n 1 Redução em um passo (ou direta) δαγ δβγ Redução em zero ou mais passos δαγ δβγ Redução em um ou mais passos δαγ + * + δβγ 4

II.4 - Sentença, Forma Sentencial e Linguagem Seja G = (Vn, Vt, P, S) : Sentença seqüência de terminais produzida a partir do símbolo inicial de G x x Vt* S + x Forma Sentencial seqüência de terminais e/ou nãoterminais produzida a partir do símbolo inicial de G Se S α β γ então α, β,,γ, são formas sentenciais de G. α α V* S Linguagem conjunto de sentenças derivadas a partir do símbolo inicial de G L(G) = { x x Vt* S + x } * α Gramáticas Equivalentes Duas gramáticas G1 e G2 são equivalentes entre si, se e somente se L(G1) = L(G2). G1 G2 L(G1) = L(G2) 5

II.5 Tipos de Gramáticas (Classificação ou hierarquia de CHOMSKY) Gramática Tipo 0: (ou gramática sem restrições) G = (Vn, Vt, P, S), onde: P = {α β α V * VnV * β V * } Gramática Tipo 1: (ou Gramática Sensível ao Contexto G.S.C.) G = (Vn, Vt, P, S), onde: P = {α β α β, α V*VnV* β V + } Gramática Tipo 2: (ou Gramática Livre de Contexto G.L.C.) G = (Vn, Vt, P, S), onde: P = {A β A Vn β V + } Gramática Tipo 3: (ou Gramática Regular G.R.) G = (Vn, Vt, P, S), onde: P = {A a X A Vn, a Vt X {Vn {ε}}} Observação: As linguagens representadas por G.S.C., G.L.C. e G.R. são denominadas, respectivamente, Linguagens Sensíveis ao Contexto (L.S.C.) Linguagens Livres de Contexto (L.L.C.) e Linguagens Regulares (L.R.). 6

II.6 Sentença Vazia Considerações: 1 - A motivação para o estudo de gramáticas foi à necessidade de se encontrar representações finitas para as linguagens. 2 - Se uma linguagem L possui uma descrição finita, então L1 = L {ε}, também deveria possuir descrição finita. 3 - Pela definição dada, as G.S.C., G.L.C. e G.R. não aceitam produções da forma S ε - logo, a sentença vazia (ε) não pode pertencer as L.S.C., L.L.C. ou L.R.. Redefinição de G.S.C. G.L.C. e G.R. G.S.C., G.L.C. e G.R., podem ter a produção S ε, desde que: 1 S seja o símbolo inicial da gramática; 2 S não apareça no lado direito de nenhuma produção da gramática em questão. Observação: segundo esta redefinição, a produção S ε só poderá ser usada na derivação de ε (a sentença vazia). Teorema II.1: Se L é SC, LC ou REGULAR, então L 1 = L {ε} e L 2 = L {ε} serão do mesmo tipo. 7

Lema II.1: Se G = (Vn, Vt, P, S) é uma GSC, então G 1 SC L(G 1 ) = L(G) o símbolo inicial de G 1 não apareça no lado direito de nenhuma produção de G 1. Prova: Seja G = (Vn, Vt, P, S) uma G.S.C.; Seja G 1 = (Vn {S 1 }, Vt, P1, S1), onde: P 1 = {S 1 α S 1 α S α P} P e S 1 é o símbolo inicial de G 1. Para completar a prova, precisamos mostrar que L(G 1 ) = L(G): L(G 1 ) = L(G) 1 - L(G) L(G 1 ) 2 - L(G 1 ) L(G) 1 Seja w L(G) S + w se S + w então S α * w se S α então S α P e, por definição, S 1 α P 1 Logo, S 1 α * w S 1 w L(G) L(G 1 ) 2 Seja w L(G 1 ) S 1 + w se S 1 + w então S 1 α * w se S 1 α então S 1 α P 1 e, para que esta produção exista, P contem a produção S α, portanto: S α * w S + w L(G 1 ) L(G) Conclusão: De 1 e 2, temos que L(G 1 ) = L(G). + 8

II.7 Recursividade das G.S.C. Definição: Uma gramática G é recursiva se existe um algoritmo que determine, para qualquer seqüência w, se w é ou não gerada por G. Teorema II.2: Se G = (Vn, Vt, P, S) é uma G.S.C., então G é RECURSIVA. Prova: (* através de algoritmo *) Seja G = (Vn, Vt, P, S) uma G.S.C. S ε P; Algoritmo II.1: 1 To = { S } 2 M 1 Seja w uma seqüência w = n; Seja T M o conjunto de formas sentenciais α α N S α em M passos. 3 T M T M-1 {α β α, onde β T M-1 α n} 4 se T M = T M-1 então fim senão M M+1; calcule novo T M (volte ao passo 3). 9