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

Documentos relacionados
BCC242. Alfabeto, Strings, Linguagens. Registro aqui o agradecimento à Profa. Lucília por ceder slides que fazem parte deste material.

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

Linguagens Formais - Preliminares

Linguagens Formais e Autômatos P. Blauth Menezes

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

Linguagens Formais e Problemas de Decisão

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

Definições Exemplos de gramáticas

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

Universidade Federal de Alfenas

Compiladores Aula 4. Celso Olivete Júnior.

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

IBM1088 Linguagens Formais e Teoria da

Conceitos Preliminares

Conceitos Preliminares

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

Fundamentos da Teoria da Computação

Fundamentos da Teoria da Computação

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

Histórico e motivação

Linguagens, Reconhecedores e Gramáticas

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

LFA. Aula 04. Sintaxe e Semântica. Conceitos Básicos Alfabeto Palavra Linguagem

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

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

Alfabeto, Cadeias, Operações e Linguagens

Lista de exercícios 1

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

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

Expressões Regulares e Gramáticas Regulares

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

Gramática. Gramática. Gramática

BCC242. Auômato Finito Determinístico

AFNs, Operações Regulares e Expressões Regulares

Teoria de Linguagens 2 o semestre de 2017 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 19/9/2017 Valor: 10 pontos

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos

Capítulo II Gramáticas

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

Linguagens Regulares, Operações Regulares

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

Teoria das Linguagens. Linguagens Formais e Autómatos (Linguagens)

Capítulo II Gramáticas

Linguagens Formais e Autômatos. Conceitos Básicos Prof. Anderson Belgamo

Modelos de Computação

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

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

Prof. Adriano Maranhão COMPILADORES

Compiladores - Análise Léxica

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

Teoria de Linguagens 1 o semestre de 2018 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 17/4/2018 Valor: 10 pontos

Expressões regulares

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

Expressões Regulares. Tiago Alves de Oliveira

Teoria de Linguagens 2 o semestre de 2015 Professor: Newton José Vieira Primeira Lista de Exercícios Entrega: até 16:40h de 15/9.

Teoria da Computação

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

Python e sua sintaxe LNCC UFRJ

Complexidade de Tempo

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

Capítulo 1: Alfabetos, cadeias, linguagens

LINGUAGENS FORMAIS E AUTÔMATOS

Análise Sintática. Fabiano Baldo

AULA 2: INTRODUÇÃO A PYTHON. Luís Feliphe Silva Costa

Linguagens e Autômatos

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

LINGUAGENS FORMAIS E AUTÔMATOS

Compiladores - Análise Léxica

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

O que é Linguagem Regular. Um teorema sobre linguagens regulares. Uma aplicação do Lema do Bombeamento. Exemplo de uso do lema do bombeamento

Conceitos básicos de Teoria da Computação

Linguagem (formal) de alfabeto Σ

Linguagens Regulares, Operações Regulares

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

Linguagens de Domínio Específico

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

Aula 8: Gramáticas Livres de Contexto

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

Linguagens Formais e Autômatos P. Blauth Menezes

Apostila 05 Assunto: Linguagens dos tipos 0 e 1

Gramáticas e Linguagens Independentes de Contexto

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

Exercícios Associados à Aula 28 (27/11/2013) Feitos em sala e em equipes

Análise Léxica. O papel do analisador léxico

Linguagens Livres de Contexto

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

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

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

1 INTRODUÇÃO E CONCEITOS BÁSICOS

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

Construção de Compiladores

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

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Linguagens Formais e Autômatos

Transcrição:

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

Exemplo: Máquina de Venda A máquina de venda retorna uma cocacola por $0.45 Ela aceita apenas moedas de $0.25 (quarter) ou de $0.10 (dime) Come o seu dinheiro se você não inserir o valor correto Pode ser modelado pelo pseudo-código:

Exemplo: Máquina de Venda cocavend(){ int total = 0, coin; while (total!= 45){ receive(coin); if ((coin==10 && total==40) (coin==25 && total>=25)) reject(coin); else total += coin; } return new Coca(); }

Exemplo: Máquina de Venda Porque esse modelo é demasiadamente complicado?

Exemplo: Máquina de Venda Porque esse modelo é complicado demais? 1) Máquinas de venda já existiam muito antes dos primeiros computadores, ou de Java! 2) Não precisa de fato de int s. Cada int introduz 2 32 possibilidades multiplicativamente! 3) Não é necessário saber como somar inteiros para modelar uma máquina de venda (total += coin) 4) if/else, gramática da linguagem Java são artifícios que apenas complicam a essência do problema

Exemplo: Máquina de Venda

Exemplo: Máquina de Venda Input: DQQD Vai inserir um dime

Exemplo: Máquina de Venda Input: DQQD Vai inserir um quarter

Exemplo: Máquina de Venda Input: DQQD Vai inserir um quarter

Exemplo: Máquina de Venda Input: DQQD Vai inserir um dime

Exemplo: Máquina de Venda Input: DQQD PRONTO! DINHEIRO ACEITO.

Exemplo: Máquina de Venda O que tornou esse exemplo mais simples do que o pseudocódigo Java?

Vending Machine Example 1. São necessários apenas de 2 tipos de moedas D and Q símbolos/letras do alfabeto 2. São necessários apenas 7 possíveis valores totais correntes estados/nodos/vertices 3. Muito mais claro e esteticamente agradável Podemos agora generalizar e abstrair

Alfabetos, Strings, Linguagens DEF: Um alfabeto Σ é um conjunto de simbolos (caracteres, letras). Um string (ou palavra) sobre Σ é uma sequencia de símbolos. O string vazio é um string que não contém nenhum símbolo, e é denotado por ε. Q1: O que é Σ no exemplo da máquina de venda? Q2: Quais strings são aceitos/não aceitos pela máquina de venda do exemplo? Q3: O que significa ε no nosso exemplo?

Alfabetos, Strings, Linguagens R1: Σ = { D, Q } R2: Aceito: QDD, DQD, DDQ, QQQQDD, etc. Não aceito: Q, D, DD, etc. DDD você se ferrou! R3: ε significa tentar obter uma coca sem pagar nada (Não inserindo qq. moeda).

Alfabetos, Strings, Linguagens DEF: O comprimento de um string é o número de símbolos que ele contém (repetições são permitidas). EX: Os comprimentos dos strings (QDD, DQD, DDQ, QQQQDD) são: 3, 3, 3, 6 Q: Qual é o comprimento de ε?

Alfabetos, Strings, Linguagens R: ε = 0

Alfabetos, Strings, Linguagens DEF: A concatenação de dois strings é o string resultante de colocar o segundo depois (à direita) do primeiro. Dados os strings u e v, denotamos sua concatenação por u v, ou simplesmente uv. EX: aba cate = abacate, QQ DD = QQDD, DDD u não é aceito, qualquer que seja u! Q1: Porque se pode afirmar isso? Q2: Defina concatenação recursivamente. Q3: Obtenha uma fórmula para u v.

Alfabetos, Strings, Linguagens R1: Você já perdeu o seu dinheiro, não importa que outras moedas vá inserir. R2: ε v = v au v = a(u v) R3: u v = u + v

Alfabetos, Strings, Linguagens DEF: O reverso de um string u é denotado por u R. EX: (banana) R = ananab DEF: Se Σ é um alfabeto, Σ denota o conjunto de todos os strings sobre Σ. Uma linguagem sobre Σ é um subconjunto de Σ, i.e. um conjunto de strings cada um sendo uma seqüência de símbolos de Σ.

Alfabetos, Strings, Linguagens EX: Σ = { D, Q } Σ = {ε, D, Q, DD, DQ, QD, QQ, DDD, DDQ, DQD, DQQ, QDD, QDQ, QQD, QQQ, DDDD, DDDQ, } Defina L = { u Σ u resulta em uma venda } Exercicio: Quais são os strings de L com comprimento 1? E comprimento 2? 3? 4? 5?

Linguagens formais Tem uma sintaxe bem befinida Tem uma semântica precisa Exemplos: Java, C, Pascal, HTML

Exemplos Seja Σ={0,1}. São exemplos de linguagens: {ε} {0} {ε, 0} {w Σ* 1 w 5} {0 n 1 n n N }

União, interseção e diferença Como linguagem é um conjunto podemos usar as operações de conjunto para definir linguagens. Sejam L 1 e L 2 linguagens sobre Σ 1 e Σ 2. L 1 L 2, uma linguagem sobre L 1 L 2, uma linguagem sobre L 1 - L 2, uma linguagem sobre Σ 1 Σ 1 Σ 2 Σ 1 Σ 2

Prefixo, sufixo e substring Seja uma palavra w=xzy, em que x, y, e z podem ser ε. z é uma substring de w x é um prefixo de w y é um sufixo de w Quais são os prefixos, sufixos e substrings de w=abc?

Concatenação de linguagens A concatenação de duas linguagens L 1 e L 2 é dada por: L 1 L 2 ={xy x L 1 e y L 2 } {0, 01}{00,11,ε} = Sejam as linguagens L 1 ={w {0,1}* w =5} e L 2 = { 0y y {0,1}*}. L 1 L 1 = L 1 L 2 = L 2 L 1 = L 2 L 2 =

Fecho de Kleene (Kleene star) Seja L uma linguagem. L n sejá usada para denotar L concatenada com L n vezes. L 0 = {ε} L n = L n-1 L, para N > 0 Fecho de Kleene de uma linguagem L, L*, pode ser definida por: ε L* Se x L* e y L, então xy L*

Fecho positivo de Kleene (Kleene L + = LL* L* = L + { ε } Exemplos: * = + = {ε}* = {ε} + = {0}* = {0} + = {ε, 00, 11}* = positivo)

Exercício Usando operadores de conjunto e linguagem defina sobre Σ={0,1}: a) A linguagem dos strings que começam com 0. b) A linguagem dos strings que possuem a substring 00. c) A linguagem dos strings que possuem 00 ou 11. d) A linguagem dos strings que possuem tamanho par. e) A linguagem dos strings que possuem tamanho ímpar. f) A linguagem dos strings que terminam com 0 seguido por um número ímpar de 1 s consecutivos. g) A linguagem dos strings de tamanho par que começam ou terminam com 0.

Exercício Forneça definições recursivas para: a) { 0 }* { 1 }* b) { 0 n 1 n n N } c) { w {0,1}* w contém 00 } d) { w {0,1}* w é par }

Gramática Uma gramática mostra como gerar os strings de uma linguagem. Elemento fundamental Regra é uma par ordenado (u, v), u v, onde u e v são strings formadas com símbolos de dois alfabetos distintos, variáveis e terminais. Variáveis (ou não terminais) são símbolos auxiliares para a geração dos strings de uma linguagem. Terminais são símbolos do alfabeto da linguagem.

Gramática Convenção Letras maiúsculas não terminais Letras minúsculas - terminais Exemplo de regra aab baa A partir de aabbaab pode-se derivar em baabaab. - representa a relação de derivação aabbaab baabaab bbaaaab

Gramática Uma gramática é uma quádrupla G=(V, Σ, R, P), onde: V é o conjunto de variáveis Σ é o conjunto de símbolos terminais R é o conjunto de regras P V é a variável de partida Exemplo G=({P, A, C}, {a,bc}, R, P), onde R possui as regras: 1. P aabc 2. A aabc 3. A ε 4. Cb bc 5. Cc cc abc L(G)? Aaabbbccc L(G)?

Gramática Formas sentenciais são strings gerados a partir da variável de partida, aplicandose regras gramaticais. Sentença é uma forma sentencial sem variáveis. A linguagem definida por uma gramática G, L(G), é o conjunto de sentenças geradas pela gramática.

Gramática n é definida por: para todo x (V Σ)*; x 0 x w n xuy e Se, então para todo w, x, y (V Σ)*, n 0. u v R w n+ 1 xvy x * y, x deriva y em zero ou mais passos. x + y, x deriva y em um ou mais passos. L ( G) = { w * * P w}

Gramática Exemplo: Seja G=({E, T, N, D}, {+,-, (, ), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, R, E), onde R é: 1. E E + T 2. E E T 3. E T 4. T (E) 5. T N 6. N DN 7. N D 8. D 0 9. D 1 Derive 1 + 2 3 e 12-31 10. D 2 11. D 3 12. D 4 13. D 5 14. D 6 15. D 7 16. D 8 17. D 9

Exercícios 1. Seja G=({S, L}, { (, ), a, ; }, R, S) uma gramática onde R é: R: S L, S L L (S) a a) a,a L(G)? b) (a, (a,a)) L(G)?

Exercícios 2. Defina gramáticas para: a) {x x = a n b n, n > 0} b) {x {0,1}* x = x R } c) {0} + {1} * d) Números binários pares e) {w0w R w {1, 2}*}