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

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

Licenciatura em Engenharia Informática DEI/ISEP Linguagens de Programação 2006/07

Hierarquia de Chomsky Exemplos de gramáticas

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

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

Gramática. Gramática. Gramática

Linguagens Livres de Contexto

Compiladores Aula 4. Celso Olivete Júnior.

TEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO

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

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

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

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

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

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

Apostila 03 - Linguagens Livres de Contexto Exercícios

Gramáticas Livres de Contexto

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

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)

Análise Sintática Introdução

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

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

Alfabeto, Cadeias, Operações e Linguagens

Gramáticas e Linguagens independentes de contexto

IV Gramáticas Livres de Contexto

Histórico e motivação

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

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

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

Linguagens e Programação Automátos Finitos. Paulo Proença

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

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

LINGUAGENS FORMAIS E AUTÔMATOS

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

Gramáticas e Linguagens Independentes de Contexto

Linguagens Formais e Autómatos

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

Automata e Linguagens Formais

Linguagens e Gramáticas. Linguagens Formais Hierarquia de Chomsky

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

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

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

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

Gramáticas Livres de Contexto Parte 1

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

Como construir um compilador utilizando ferramentas Java

Capítulo 1: Alfabetos, cadeias, linguagens

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

Linguagens Formais e Autômatos P. Blauth Menezes

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

Folha 3 - Análise léxica

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

Apostila 05 Assunto: Linguagens dos tipos 0 e 1

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

Definições Exemplos de gramáticas

Compiladores - Análise Léxica

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

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

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

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

Compiladores - Análise Léxica

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

Introdução à Programação

Conceitos de Linguagens de Programação

A. (Autómatos finitos determinísticos e não determinísticos AFD e AFND)

Construção de Compiladores

Linguagens Formais e Autômatos P. Blauth Menezes

Curso de Engenharia de Computação - UTFPR Teoria da Computação - Prof. Celso Kaestner Lista de exercícios

Expressões Regulares e Gramáticas Regulares

Linguagens Formais e Problemas de Decisão

Análise Sintática. Fabiano Baldo

Compiladores. Análise Sintática

Análise sintática. Análise sintática ascendente. Parte-se dos símbolos terminais em direção ao símbolo inicial da gramática. Derivação mais à direita

Prof. Adriano Maranhão COMPILADORES

Gramáticas Livres de Contexto

Folha 2 Autómatos e respectivas linguagens

Compiladores Ficha de exercícios

Capítulo 3: Gramáticas

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

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

Transcrição:

Linguagens e Programação Gramáticas

Gramáticas Ferramenta para a descrição e análise de linguagens; Baseada num conjunto de regras que especificam o modo de construção das frases válidas na linguagem; Assente nos vários tokens que são reconhecidos pelo analisador léxico.

Representação formal G = (V, Σ, P, S) V é um conjunto finito, não vazio, de símbolos não terminais é o alfabeto (conjunto finito, não vazio, de símbolos terminais) P é o conjunto de produções (regras da gramática) S é o símbolo inicial a partir do qual todas as frases são derivadas (axioma da gramática)

Notação BNF BNF Backus Naur Form (Backus Normal Form) Criada por John Backus e Peter Naur para descrever a linguagem ALGOL Meta símbolos utilizados: ::= - representa definido como - indica uma alternativa <> - define uma regra <numero> ::= <algarismo> <algarismo><numero> <algarismo> ::= 0 1 2 3 4 5 6 7 8 9

Notação EBNF Estende a notação BNF com a inclusão dos seguintes símbolos: [] - indica uma parte opcional {} - indica algo que se pode repetir 0 ou mais vezes () - define precedência dentro da regra "" - define um carater que deve ser tratado como terminal. Por exemplo: "<" <identificador> ::= (<letra> _){(<letra> <algarismo> _)} <letra> ::= a A b B z Z <algarismo> ::= 0 1 2 3 4 5 6 7 8 9

Hierarquia de Chomsky Tipo 0 recursivamente enumeráveis Tipo 1 dependentes de contexto Tipo 2 independentes de contexto Tipo 3 regulares

Notações e Convenções Seja G=(V n,v t,p,s) V n vocabulário não terminal Letras maiúsculas do alfabeto {A,B,,Z} V t vocabulário terminal Letras minúsculas do alfabeto {a,b, z}, dígitos e símbolos. V n V t = P produções S V n axioma da gramática V = V n V t Letras gregas minúsculas {,,, } Cada produção tem a forma onde V+ e V*

Hierarquia de Chomsky Tipo 3 Gramáticas regulares As produções são da forma: Lineares à direita A a A ab A ou onde A,B V n e a V t São os tipos de gramática mais restritas em termos de poder de representação G=({S}, {a,b}, P, S) P: { S as S b } L(G)={a n b n 0} Lineares à esquerda A a A Ba A

Hierarquia de Chomsky Tipo 2 Gramáticas independentes de contexto As produções são da forma: A α onde A V n e V+ O lado esquerdo da regra possui apenas uma símbolo não terminal (uma variável) G=({S,A,B}, {a,b}, P, S) P: { S ab ba A a as baa B b bs abb } L(G)={palavras sobre {a,b} com o mesmo número de a's e de b's}

Hierarquia de Chomsky Tipo 1 Gramáticas dependentes de contexto Imposta a restrição de que nenhuma substituição reduz o comprimento da frase à qual a substituição é aplicada As produções são da forma: αaβ αγβ com αaβ αγβ onde α,β,γ V*, γ e A V n G=({A,B,C}, {a,b,c}, P, A) P: { A abc A abbc Bb bb Bc Cbcc bc Cb ac aab ac aa }

Hierarquia de Chomsky Tipo 0 Gramáticas livres ou sem restrições As produções são da forma: α β onde V+ e V* Não há restrições nas regras de produção. G=({S,A,B,C,D,E}, {a}, P, S) P: { S ACaB Ca aac CB DB CB E ad DA AD AC ae Ea AE } L(G)={a 2n n é um inteiro positivo}

Exercício Classifique a seguinte gramática segundo a hierarquia de Chomsky G = ({S,C,D,E}, {a,$,#}, P, S) P = {S $Ca# a Ca aac $D $C C# D# E ad Da ae Ea $E } Gramática Livre ou Recursivamente enumerável

Exercício Classifique a seguinte gramática segundo a hierarquia de Chomsky G = ({A,B,C}, {a,b,c}, P, A) P = {A abc abbc Bb bb Bc Cbcc bc Cb ac aab ac aa } Gramática Dependente de contexto

Exercício Classifique a seguinte gramática segundo a hierarquia de Chomsky G = ({S,A,B}, {a,b}, P, S) P = { S ab ba A a as baa B b bs abb } Gramática Independente de contexto

Exercício Classifique a seguinte gramática segundo a hierarquia de Chomsky G = ({S}, {a, +, *, (, )}, P, S) P = { } S S * S S S + S S (S) S a Gramática Independente de contexto

Exercício Classifique a seguinte gramática segundo a hierarquia de Chomsky G = ({S,A}, {a, b, c}, P, S) P = { S as ba A c } Gramática Regular à direita

Reconhecedores Tipo de gramática Tipo 0 livres Tipo 1 dependente de contexto Tipo 2 independente de contexto Tipo 3 regulares Reconhecedor Máquina de Turing Máquina de Turing com memória limitada Autómato de pilha Autómato finito

Exercícios Propostos 1. Considere a seguinte gramática S (L) a L L,S S a) Identifique os símbolos terminais e não terminais desta gramática Símbolos terminais: "a" "," "(" ")" Símbolos não terminais: b) Determine uma árvore de derivação desta gramática para (a,a) S S L ( L ) L S, S a a

Exercícios Propostos 1. Considere a seguinte gramática S (L) a L L,S S c) Crie um autómato finito equivalente a esta gramática Impossível. Só as gramáticas tipo 3 podem ser representadas por um AF. d) Caracterize formalmente a linguagem representada por esta gramática Qualquer regra da gramática é do tipo X onde X V n e V +. Isto é, qualquer ocorrência de X pode ser substituído por independentemente do contexto. Logo a gramática é Tipo 2 independente de contexto.

Exercícios Propostos 2. Escreva uma gramática capaz de reconhecer cada uma das seguintes linguagens a) Palavras no ={a,b} que terminam em b e começam em a b) Palavras no ={a,b,c,d} em que b é sempre precedido por um a c) Palavras no ={a,b,c,d} que são capicuas e têm um comprimento maior que 1 S atb T at bt ε S at T at bt b

Exercícios Propostos 2. Escreva uma gramática capaz de reconhecer cada uma das seguintes linguagens a) Palavras no ={a,b} que terminam em b e começam em a b) Palavras no ={a,b,c,d} em que b é sempre precedido por um a c) Palavras no ={a,b,c,d} que são capicuas e têm um comprimento maior que 1 S T TS T a ab c d S as cs ds ab a c d B bs b

Exercícios Propostos 2. Escreva uma gramática capaz de reconhecer cada uma das seguintes linguagens a) Palavras no ={a,b} que terminam em b e começam em a b) Palavras no ={a,b,c,d} em que b é sempre precedido por um a c) Palavras no ={a,b,c,d} que são capicuas e têm um comprimento maior que 1 S ata btb ctc dtd T a b c d S

Exercícios Propostos 3. Defina uma gramática capaz de representar uma quantia monetária nas moedas apresentadas na tabela seguinte Euro Moeda Exemplo e12,23; e1,00; e2,35; 23,50EUR Libra 12.50; 22.12; 22.99 Dólar $25.13; $5.00; $0.30 Escudo 12$50; 25$00; 150$00; 0$50 <MOEDA> <EURO> <LIBRA> <DOLAR> <ESCUDO> <EURO> e<valor>,<cent> <VALOR>,<CENT>EUR <LIBRA> <VALOR>.<CENT> <DOLAR> $<VALOR>.<CENT> <ESCUDO> <VALOR>$<CENT> <VALOR> <NUM> <NUM><VALOR> <CENT> <NUM><NUM> <NUM> 1 2 3 4 5 6 7 8 9 0

Exercícios Propostos 4. Considere uma gramática G=(V,,P,S): S TyBT T xt x B zb a) Defina formalmente a gramática G G=({S,T,B},{x,y,z},P,S) P: { S TyBT T xt x B zb } b) Classifique G, segundo a hierarquia de Chomsky. Justifique. Tipo 2 independente de contexto c) Represente a gramática recorrendo a um AF. Impossivel! Só as gramáticas regulares podem ser representadas com AF

Exercícios Propostos 7. Considere uma gramática G tal que: S as Sb ab SS a) Escreva uma expressão regular para reconhecer a linguagem definida pela gramática G, ou seja, L(G). a(a b)*b b) Escreva uma sequência de derivação para aaabb. <S> a<s> aa<s> aa<s>b aaabb c) Classifique a gramática G quanto à ambiguidade. Como vimos de b), <S> a<s> aa<s> aa<s>b aaabb Mas, <S> <S>b a<s>b aa<s>b aaabb Isto é, aaabb tem mais do que uma sequência de derivação. Logo a gramática G é uma GRAMÁTICA AMBIGUA

Exercícios Propostos 8. Crie um programa em FLEX, que identifique os tokens presentes em expressões lógicas válidas na seguinte gramática. E E or E E and E E xor E not E (E) ID INT REAL Nota: Um ID representa um identificador (uma letra seguida de letras ou algarismos), INT um número inteiro e REAL um número real. Os espaços, tabs e mudanças de linha devem ser ignorados. Qualquer outro carácter deve originar um erro.

Exercícios Propostos 8. %% (OR or) {printf(" OR ");} (AND and) {printf(" AND ");} (XOR xor) {printf(" XOR ");} (NOT not) {printf(" NOT ");} \( {printf(" ABREPAR ");} \) {printf(" FECHAPAR ");} [0-9]+\.[0-9]+ {printf(" REAL ");} [0-9]+ {printf(" INT ");} [a-za-z]([0-9] [a-za-z])* {printf(" ID ");} [ \t] \n. {printf(" ERRO ");} %% main() { yylex(); }

Exercícios Propostos 9. Considere a seguinte gramática: S if b then S else S S if b then S S a a) Mostre que a gramática em questão é ambígua (p.e. encontre uma frase que tenha duas árvores sintáticas) Frase: if b then if b then a else a Derivação 1: S if b then S else S if b then if b then S else S if b then if b then a else a Derivação 2: S if b then S if b then if b then S else S if b then if b then a else a b) Escreva uma gramática equivalente não ambígua S A B A if b then A else A a B if b then S if b then A else B

Exercícios Propostos 10.Converta o seguinte AF numa gramática. Considere ={a,e,i,o,u} S A B C D E aa es is os us aa eb is os us aa es ic os us aa es is od us aa es is os ue ae ee ie oe ue ε

Exercícios Complementares 1. Escreva uma gramática capaz de reconhecer cada uma das seguintes linguagens: i. Palavras em = {a,b,c,d} que começam e terminam em a; S ata a T at bt ct dt ε S at a T at bt ct dt a ii. Números romanos menores que 50. S U D DU D x xx xxx xl U i ii iii iv v vi vii viii ix

Exercícios Complementares 2. Considere uma calculadora básica capaz de processar as quatro operações algébricas fundamentais representadas pelos símbolos +,-, *, /, parêntesis e o '-' unitário. I. Escreva uma sintaxe para expressões algébricas válidas nesta calculadora; II. III. Escreva uma árvore de derivação para a expressão: 2 + 3 *4. A árvore de derivação que obteve é única? Que problema está aqui em causa? Explique. Adicione as operações: ^ e % à gramática.

Exercícios Complementares 4. Converta o seguinte AF numa gramática A ae bb ce de B ac bc C bd D ac be ce dc E ab ε

Linguagens e Programação Gramáticas