Gramática. Gramática. Gramática

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

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos

Hierarquia de Chomsky Exemplos de gramáticas

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

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

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.

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

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

Linguagens Livres de Contexto

SCC Capítulo 1 Linguagens Regulares e Autômatos Finitos

Gramáticas Livres de Contexto Parte 1

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

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

Gramática Livre de Contexto

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

Definições Exemplos de gramáticas

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

Gramáticas Livres de Contexto

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

Alfabeto, Cadeias, Operações e Linguagens

Python e sua sintaxe LNCC UFRJ

Expressões Regulares e Gramáticas Regulares

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

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

Linguagens Formais e Autômatos P. Blauth Menezes

COMPILADORES. Revisão Linguagens formais Parte 02. Prof. Geovane Griesang

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

Transformação de AP para GLC

Como construir um compilador utilizando ferramentas Java

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

Gramática Livre de Contexto

Linguagens e Gramáticas. Linguagens Formais Hierarquia de Chomsky

Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Curso de Ciências de Computação

Análise Sintática. Fabiano Baldo

As linguagens regulares são I.C Proposição Qualquer linguagem regular é independente de contexto.

Linguagens Regulares. Prof. Daniel Oliveira

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)

Construção de Compiladores

SCC Capítulo 3 Linguagens Sensíveis ao Contexto e Autômatos Limitados Linearmente

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

Gramá3ca Livre de Contexto (GLC)

TEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO

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

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

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

Linguagens Formais e Autômatos 02/2015. LFA Aula 02. introdução 28/09/2015. Celso Olivete Júnior.

Aula 8: Gramáticas Livres de Contexto

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

Prof. Dr. Marcos Castilho. Departamento de Informática/UFPR. 22 de Fevereiro de 2018

Sintaxe e Semântica. George Darmiton da Cunha Cavalcanti.

Compiladores - Análise Léxica

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

SCC 205 Teoria da Computação e Linguagens Formais

Capítulo Métodos para transformar gramáticas ái Duas formas Normais (Chomsky e Greibach) ADC/TC/Cap.6/ /LEI/DEIFCTUC 268

Compiladores - Análise Léxica

IV Gramáticas Livres de Contexto

Automata e Linguagens Formais

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

LINGUAGENS FORMAIS E AUTÔMATOS

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

Apostila 01 Fundamentação da Teoria da Computação e Linguagens Formais

Revisão: linguagens de programação

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

Gramáticas e Linguagens independentes de contexto

Linguagens Formais e Autômatos P. Blauth Menezes

Exemplo preliminar. Considere a linguagem dos Palíndromos Lpal:

Teoria da Computação Gramáticas, Linguagens Algébricas e Autómatos de Pilha

Linguagens Formais - Preliminares

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

Análise Sintática II: Analisadores Descendentes Preditivos

Conceitos Básicos. Vocabulário Cadeias Linguagens Expressões Regulares Problema X Linguagem

IBM1088 Linguagens Formais e Teoria da

Linguagens Formais e Autômatos 02/2016. LFA Aula 01 24/10/2016. Celso Olivete Júnior.

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

Apostila 05 Assunto: Linguagens dos tipos 0 e 1

Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação

Análise Sintática Introdução

Introdução à Programação

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

Transcrição:

Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 2 Mecanismo gerador que permite definir formalmente uma linguagem; Através de uma gramática pode-se gerar todas as sentenças da linguagem definida por ela; Modelo muito aplicado na especificação de linguagens computacionais; Prof. Yandre Maldonado - 3 Formalmente, gramática é uma quádrupla G = (V, T, P, S), onde: V é um conjunto finito de símbolos não-terminais (ou variáveis); T é um conjunto finito de símbolos terminais disjunto de V; P é um conjunto finito de pares, denominados regras de produção tal que a primeira componente é palavra de (V T) + e a segunda componente é palavra de (V T) * ; S é um elemento de V, denominado símbolo inicial (ou símbolo de partida). 1

Prof. Yandre Maldonado - 4 Os símbolos de T equivalem aqueles que aparecem nos programas de uma linguagem de programação. É o alfabeto em cima do qual a linguagem é definida; Os elementos de V são símbolos auxiliares que são criados para permitir a definição das regras da linguagem. Eles correspondem à categorias sintáticas da linguagem definida: Português: sentença, predicado, verbo,...; Pascal: programa, bloco, procedimento,...; Prof. Yandre Maldonado - 5 Uma regra de produção (α, β) é representada por α β; As regras de produção definem as condições de geração das sentenças; A aplicação de uma regra de produção é denominada derivação; Uma regra α β indica que α pode ser substituído por β sempre que α aparecer; Enquanto houver símbolo não-terminal na cadeia em derivação, esta derivação não terá terminado; Prof. Yandre Maldonado - 6 O símbolo inicial é o símbolo através do qual deve iniciar o processo de derivação de uma sentença; Observações: V T = Os elementos de T são os terminais. Procuraremos representá-los por letras minúsculas (a, b, c, d,...) Os elementos de V são os não-terminais. Procuraremos representá-los por letras maiúsculas (A, B, C, D,...) As cadeias mistas, isto é, aquelas que contém símbolos de V e símbolos de T (cadeias pertencentes à (V T) * ) serão representadas por letras gregas (α, β, γ, δ,...) 2

Prof. Yandre Maldonado - 7 Exemplo: G 1 = ({S, A, B}, {a, b}, P, S) onde: P = { 1) S AB 2) A a 3) B b } Quais as cadeias terminais geradas por esta gramática? Prof. Yandre Maldonado - 8 Descrição de linguagens: G 1 = ({A, B}, {a, b, c}, P, A) onde: P = { 1) A ab 2)B bb 3)B c } G 2 = ({S, A, B, C}, {a, b, c}, P, S) onde: P = { 1) S A 2) A BaC 3) B bb 4) B b 5) C cc 6) C c } A linguagem gerada pela gramática G 1 descrita acima, poderia ser expressa da seguinte forma: L(G 1 )={ab n c, n 0} A linguagem gerada pela gramática G 2 descrita acima, poderia ser expressa da seguinte forma: L(G 2 )={b m ac n, m 1, n 1} Prof. Yandre Maldonado - 9 G 2 (subconjunto da língua portuguesa) V = {Sentença, Sn, Sv, Artigo, Verbo, Substantivo, Complemento} T = {peixe, isca, mordeu, o, a} P = { 1) Sentença Sn Sv 2) Sn Artigo Substantivo 3) Sv Verbo Complemento 4) Complemento Artigo Substantivo 5) Artigo o 6) Artigo a 7) Substantivo peixe 8) Substantivo isca 9) Verbo mordeu } S = Sentença 3

Prof. Yandre Maldonado - 10 G 3 - Eliminando os problemas de concordância de gênero V = {Sentença, Sn, Sv, ArtigoF, ArtigoM, Verbo, SubstantivoF, SubstantivoM, Complemento} T = {peixe, isca, mordeu, o, a} P = { 1) Sentença Sn Sv 2) Sn ArtigoF SubstantivoF 3) Sn ArtigoM SubstantivoM 4) Sv Verbo Complemento 5) Complemento ArtigoF SubstantivoF 6) Complemento ArtigoM SubstantivoM 7) ArtigoF a 8) ArtigoM o 9) SubstantivoF isca 10) SubstantivoM peixe 11) Verbo mordeu } S = Sentença Geração direta ( ): Prof. Yandre Maldonado - 11 Considere α, β, γ, δ (V T) * Uma cadeia αγβ gera diretamente ( ) uma cadeia αδβ sse: γ δ P Geração ( * ): Prof. Yandre Maldonado - 12 Considere α, β, γ, δ (V T) * Uma cadeia α gera ( *) uma cadeia β sse: γ 1, γ 2,..., γ n tal que α γ 1 γ 2... γ n β n 0 4

Prof. Yandre Maldonado - 13 Assim, em G 1 (slide 7) temos: S * ab S * ab AB * ab E em G 2, temos: <sentença> * o peixe mordeu a <subst.> <complemento> * o <substantivo> Prof. Yandre Maldonado - 14 Definições: Forma sentencial: uma cadeia α (V T) * é uma forma sentencial de uma gramática sse S * α, ou seja, α é um embrião para alguma sentença gerada pela gramática, ou a própria sentença. Sentença: uma forma sentencial α, é uma sentença de G sse α T *. Portanto, as cadeias terminais geradas pela gramática são as sentenças de G. Exemplo: dada a gramática G 4 = ({A, B}, {a, b, c}, P, A) onde: P = { 1) A ab 2)B bb 3)B c } Indique se as seguintes cadeias são sentenças ou formas sentenciais produzidas por G 4 : Prof. Yandre Maldonado - 15 abc A a abb abbbb abbbc Sentença Forma Sentencial 5

Tipos de A cada classe de linguagem da Hierarquia de Chomsky é associado um tipo de gramática: Linguagens Enumeráveis Recursivamente com Estrutura de Frase Tipo 0 Prof. Yandre Maldonado - 16 Linguagens Sensíveis ao Contexto Sensível ao Contexto Tipo 1 Linguagens Livres de Contexto Livre de Contexto Tipo 2 Linguagens Regulares Regular Tipo 3 Tipos de Prof. Yandre Maldonado - 17 com Estrutura de Frase GEF ou Tipo 0 São as gramáticas onde todas as regras de produção pertencentes ao conjunto P são da forma: α β onde β (V T) * α (V T) + Os próximos tipos de gramática são GEF s com restrições. Tipos de Prof. Yandre Maldonado - 18 Sensível ao Contexto GSC ou Tipo 1 São as gramáticas onde todas as regras de produção pertencentes ao conjunto P são da forma: α β tal que β α exceto quando β = λ onde β (V T) * α (V T) + Os próximos tipos de gramática são GSC s com restrições. 6

Tipos de Tipo 1 - exemplo: Prof. Yandre Maldonado - 19 S asbc S abc CB BC ab ab bb bb bc bc cc cc Qual é a linguagem gerada por esta gramática? L(G) = {a n b n c n n>0} Tipos de Prof. Yandre Maldonado - 20 Livre de Contexto - GLC ou Tipo 2 São as gramáticas onde todas as regras de produção pertencentes ao conjunto P são da forma: A β onde β (V T) * A V O próximo tipo de gramática é GLC com restrições. Tipos de Tipo 2 - exemplo 1: Prof. Yandre Maldonado - 21 S AB A 0A11 A λ B 0B B λ Qual é a linguagem gerada por esta gramática? L(G) = {0 n 1 2n 0 m n 0, m 0} 7

Tipos de Tipo 2 exemplo 2: Prof. Yandre Maldonado - 22 S ab S ba A a A as A baa B b B bs B abb Qual é a linguagem gerada por esta gramática? L(G) = {w {a,b} + w contém número de a s igual ao número de b s} ou L(G) = {w {a,b} + w a = w b } Tipos de Considere a seguinte linguagem: L(G) = {a m b n a m n 1, m 1} Prof. Yandre Maldonado - 23 Descreva uma GLC capaz de gerar esta linguagem. Tipo 2 - exemplo 3: S asa S aba B bb B b Tipos de Prof. Yandre Maldonado - 24 Regular GR ou Tipo 3 Uma linguagem regular é uma linguagem que pode ser descrita por uma gramática linear; Tipos de gramática linear: Linear à Direita GLD; Linear à Esquerda GLE; Linear Unitária à Direita GLUD; Linear Unitária à Esquerda GLUE. 8

Tipos de Prof. Yandre Maldonado - 25 Seja G = (V, T, P, S) e sejam A e B elementos de V, e w uma cadeia de T*, então: Uma gramática é uma GLD se as produções são da forma: A wb ou A w Uma gramática é uma GLE se as produções são da forma: A Bw ou A w Uma gramática é uma GLUD se as produções são da forma: A wb ou A w, com w 1 Uma gramática é uma GLUE se as produções são da forma: A Bw ou A w, com w 1 Tipos de Prof. Yandre Maldonado - 26 GLUD é o padrão mais empregado para a descrição de linguagens regulares; * Nos exemplos a serem estudados adotaremos este padrão. Alguns autores apresentam s Regulares da seguintes forma: com produções da forma: A ab A b ou onde A, B V a T b T {λ} Tipos de Tipo 3 exemplo 1: Prof. Yandre Maldonado - 27 S as S bc C c Qual é a linguagem gerada pela GR? L(G) = {a n bc n 0} 9

Tipos de Tipo 3 - exemplo 2: N +D -D D 0 1 2 3 4 5 6 7 8 9 0D 1D 2D 3D 4D 5D 6D 7D 8D 9D Prof. Yandre Maldonado - 28 Qual é a linguagem gerada pela GR? Números inteiros com sinal. Tipos de Tipo 3 - exemplo 3: Prof. Yandre Maldonado - 29 N +D -D D 0 1 2 3 4 5 6 7 8 9 1E 2E 3E 4E 5E 6E 7E 8E 9E E 0 1 2 3 4 5 6 7 8 9 0E 1E 2E 3E 4E 5E 6E 7E 8E 9E Números inteiros com sinal sem ocorrência de zeros à esquerda. Tipos de Tipo 2 - exemplo 4: Prof. Yandre Maldonado - 30 N SD S + - D ED E E 0 1 2 3 4 5 6 7 8 9 GLC equivalente ao exemplo 2 do tipo 3. 10

Prof. Yandre Maldonado - 31 BNF - Forma Normal de Backus Substitui o símbolo por ::= ; Os não-terminais são ladeados por < e > ; É usada para regras que apresentam um único símbolo não-terminal do lado esquerdo; Quando houverem repetições do lado esquerdo, do tipo: <A> ::= α 1 * Os símbolos <, >, :, = e não <A> ::= α 2 fazem parte da linguagem,... apenas ajudam a descrevê-la. <A> ::= α n escreve-se: <A> ::= α 1 α 2... α n Prof. Yandre Maldonado - 32 G 3 (slide 10) - Descrição em BNF 1) <Sentença> ::= <Sn> <Sv> 2) <Sn> ::= <ArtigoF> <SubstantivoF> <ArtigoM> <SubstantivoM> 4) <Sv> ::= <Verbo> <Complemento> 5) <Complemento> ::= <ArtigoF> <SubstantivoF> <ArtigoM> <SubstantivoM> 7) <ArtigoF> ::= o 8) <ArtigoM> ::= a 9) <SubstantivoF> ::= peixe 10) <SubstantivoM> ::= isca 11) <Verbo> ::= mordeu Prof. Yandre Maldonado - 33 BNF é um padrão muito utilizado para a descrição sintática de linguagens, especialmente as livres de contexto; Principais aplicações de descrição sintática de linguagens (BNF): Ajuda a entender como se escreve programas sintaticamente corretos; Pode ser usada para determinar se um programa está sintaticamente correto (papel do compilador). 11

Uma possível BNF para expressões aritméticas: Prof. Yandre Maldonado - 34 <expressão> ::= <valor> <valor><operador><expressão> <valor> ::= <número> <sinal><número> <número> ::= <semsinal> <semsinal>.<semsinal> <semsinal> ::= <dígito> <dígito><semsinal> <dígito>::= 0 1 2 3 4 5 6 7 8 9 <sinal> ::= + - <operador> ::= + - / * Prof. Yandre Maldonado - 35 EBNF Extended BNF Notação que acrescenta metasímbolos adicionais à notação BNF; [ ] opcionalidade; {} repetição; Seguindo esta notação, os Não-Terminais <expressão>, <valor>, <semsinal> e <número> (do slide anterior) poderiam ter suas regras descritas da seguinte forma: <expressão> ::= <valor> [<operador><expressão>] <valor> ::= [<sinal>] <semsinal> [.<semsinal>] <semsinal> ::= <dígito> {<dígito>} Descrição simplificada do Pascal em EBNF: Prof. Yandre Maldonado - 36 <programa> ::= PROGRAM <identificador> ; <bloco>. <bloco> ::= <declarações> BEGIN <comando> END BEGIN <comando> END <comando> ::= <variável> := <expressão> ; <comando> READ <variável> ; <comando> WRITE <expressão> ; <comando> IF <expressão> THEN <comando> ELSE <comando> FOR <identificador> := <expressão> TO <expressão> DO <comando> BEGIN <comando> END <declarações> ::= VAR <lista_identif.> : <tipo>; TYPE <identificador> = <tipo> ; <expressão> ::= <variável> <identificador> <constante> <expressão> <operador binário> <expressão> <variável> ::= <identificador> <operador_bin>::= + - * / = > < <> <= >= <tipo> ::= INTEGER REAL STRING <constante> ::= <identificador> <número> <lista_identif.> ::= <identificador> {, <identificador> } <identificador> ::= <letra> { <letra> <dígito> } <número> ::= <dígito> { <dígito> } <dígito> ::= 0 1 2 3 4 5 6 7 8 9 <letra> ::= a b c d e f... x y z A B C D... X Y Z 12

Bibliografia Prof. Yandre Maldonado - 37 MENEZES, Paulo Blauth. Linguagens Formais e Autômatos. Porto Alegre: Editora Sagra-Luzzatto, 1998; DELAMARO, Márcio Eduardo. Linguagens Formais e Autômatos. UEM, 1998; HOPCROFT, J. E. & ULLMAN, J. D. Formal Languages and Their Relation to Automata - Addison-Wesley, 1969. 13