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

Documentos relacionados
Gramática. Gramática. Gramática

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

Linguagens e Gramáticas. Linguagens Formais Hierarquia de Chomsky

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

Definições Exemplos de gramáticas

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

Capítulo II Gramáticas

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

Capítulo II Gramáticas

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, Reconhecedores e Gramáticas

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

15/03/2018. Professor Ariel da Silva Dias Aspectos sintáticos e semânticos básicos de linguagens de programação

Linguagens e Gramáticas. Linguagens Formais Hierarquia de Chomsky

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

Linguagens de Programação Aula 4

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.

Expressões e Gramáticas Regulares e Autómatos Finitos

Compiladores - Análise Léxica

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

SCC 205 Teoria da Computação e Linguagens Formais

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

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

Linguagens Formais e Autômatos

Linguagens e Gramáticas Livres de Contexto

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

SCC Capítulo 2 Linguagens Livres de Contexto e Autômatos de Pilha

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

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 (α, β, γ, δ,...)

Exemplo: Prof. Yandre Maldonado - 7 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

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

Assim, em G 1 (slide 7) temos: S * ab S * ab AB * ab Prof. Yandre Maldonado - 13 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

Tipos de Gramática A cada classe de linguagem da Hierarquia de Chomsky é associado um tipo de gramática: Linguagens Enumeráveis Recursivamente Gramática com Estrutura de Frase Tipo 0 Prof. Yandre Maldonado - 16 Linguagens Sensíveis ao Contexto Gramática Sensível ao Contexto Tipo 1 Linguagens Livres de Contexto Gramática Livre de Contexto Tipo 2 Linguagens Regulares Gramática Regular Tipo 3

Tipos de Gramática Prof. Yandre Maldonado - 17 Gramática 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 Gramática Prof. Yandre Maldonado - 18 Gramática 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.

Tipos de Gramática 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 Gramática Prof. Yandre Maldonado - 20 Gramática 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 Gramática 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}

Tipos de Gramática 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 Gramática 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 Gramática Gramática Regular GR ou Tipo 3 Prof. Yandre Maldonado - 24 Uma linguagem regular é uma linguagem que pode ser descrita por uma gramática linear; Tipos de gramática linear: Gramática Linear à Direita GLD; Gramática Linear à Esquerda GLE; Gramática Linear Unitária à Direita GLUD; Gramática Linear Unitária à Esquerda GLUE.

Tipos de Gramática 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 Gramática 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 Gramáticas Regulares da seguintes forma: Gramática com produções da forma: A ab A b ou onde A, B V a T b T {λ}

Tipos de Gramática 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}

Tipos de Gramática 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 Gramática 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 Gramática 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 Gramática GLC equivalente ao exemplo 2 do tipo 3.

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 <A> ::= α 2... <A> ::= α n escreve-se: <A> ::= α 1 α 2... α n * Os símbolos <, >, :, = e não fazem parte da linguagem, apenas ajudam a descrevê-la.

G 3 (slide 10) - Descrição em BNF Prof. Yandre Maldonado - 32 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).

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

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.