Alfabeto, Cadeias, Operações e Linguagens

Documentos relacionados
Linguagem (formal) de alfabeto Σ

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

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

Modelos de Computação

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

Revisões de Conjuntos

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

Alfabeto e palavras. Alfabeto conjunto finito de símbolos (Σ).

1 INTRODUÇÃO E CONCEITOS BÁSICOS

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos P. Blauth Menezes

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

Linguagens Formais - Preliminares

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

Curso: Ciência da Computação Turma: 6ª Série. Teoria da Computação. Aula 3. Autômatos Finitos

Exercicios. 7.2 Quais das seguintes afirmações são verdadeiras? Justifica. (d) abcd L((a(cd) b) )

Capítulo 1: Alfabetos, cadeias, linguagens

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

Lista de exercícios 1

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

IBM1088 Linguagens Formais e Teoria da

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

Conceitos Básicos. Vocabulário Cadeias Linguagens Problema

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

Histórico e motivação

Problema A Codificação Símbolos Dado um inteiro n, n é N representação de inteiros 0,1,...,b - 1 numa base b Dado um grafo G, G é conexo?

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

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

Linguagens Formais e Autômatos

LINGUAGENS FORMAIS E AUTÔMATOS

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

Compiladores - Análise Léxica

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

Gramática. Gramática. Gramática

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

Autómatos de pilha e GIC

Autómatos de pilha e Gramáticas independentes de contexto

Prof. Adriano Maranhão COMPILADORES

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

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

Lista de Exercícios CT-200 Primeiro Bimestre Carlos Henrique Quartucci Forster Estagiário: Wesley Telles. Revisão de Teoria de Conjuntos

Outras Máquinas de Turing

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

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

Compiladores - Análise Léxica

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

Noções de grafos (dirigidos)

Teoria da Computação. Unidade 1 Conceitos Básicos. Referência Teoria da Computação (Divério, 2000)

1 introdução. capítulo. O que é uma solução computável? Quais são os limites do que pode ser computado? Existem problemas sem solução computacional?

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

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

Conceitos básicos de Teoria da Computação

Definições Exemplos de gramáticas

Modelos de Computação Folha de trabalho n. 8

Árvores (ordenadas) Departamento de Ciência de Computadores da FCUP MC Aula 11 1

Teoria da Computação Prof. Lucília Figueiredo Prova 03 - ENTREGA DIA 24/06/2015. (a) Descreva o programa da MT usando um pseudocódigo.

Apostila 05 Assunto: Linguagens dos tipos 0 e 1

Teoria da Computação

Aula 8: Gramáticas Livres de Contexto

formais e autómatos Linguagens g recursivas e recursivamente enumeráveis Gramáticas não-restringidas

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

CAPÍTULO 5 LINGUAGENS LIVRES DE CONTEXTO

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

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

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

Autómatos de Pilha. Cada transição é caracterizada pelo estado, símbolo que está ser lido e o elemento no topo da pilha. dados de entrada.

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

7.1. Autómatos de pilha não-determinísticos (NPDA) 7.3. Autómatos de pilha determinísticos e linguagens livres de contexto determinísticas.

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

Gramáticas Regulares

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

Linguagens Formais e Autômatos (LFA)

Linguagens Regulares. Prof. Daniel Oliveira

Fundamentos da Teoria da Computação

Problemas decidíveis para LICs

Compiladores Aula 4. Celso Olivete Júnior.

Aula1 Noções de matemática Discreta Técnicas de Demonstração. Prof. Dr. Ricardo Luis de Azevedo da Rocha

Linguagens e Gramáticas Livres de Contexto

Computação efectiva. Que linguagens podem ser reconhecidas por algum tipo de autómato?

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

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

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

Construção de Compiladores

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

Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros. Prof. Thiago A. S.

Capítulo A máquina de Turing (TM) padrão Combinações de máquinas de Turing A Tese de Turing. ADC/TC/Cap.9/ /LEI/DEIFCTUC 375

Expressões Regulares e Gramáticas Regulares

Linguaguens recursivamente enumeráveis e recursivas

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

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

13.2. Sistemas de Post Sistemas de rescrita Cálculo Lambda. ADC/TC/Cap.13/ /LEI/DEIFCTUC 497

Linguagens Formais e Autômatos. Alfabetos, Palavras, Linguagens e Gramáticas

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

LFA Aula 07. Equivalência entre AFD e AFND. Equivalência entre ER s e AF s Equivalência entre GR s e AF s. Linguagens Formais e Autômatos

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

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

Transcrição:

Linguagens de Programação e Compiladores - Aula 3 1 Alfabeto, Cadeias, Operações e Linguagens 1.Conjuntos Para representar um determinado conjunto é necessário buscar uma notação para representá-lo e ter um padrão para trabalhar com esse conjunto. Alguns exemplos de conjuntos são: conjunto dos números naturais, inteiros, reais, etc. Denotando por N o conjunto dos números naturais, para cada n N, {n} representa o conjunto dos naturais menores ou iguais a n: {n} = {x N 0 < x <= n} Esse conjunto pode também ser representado por {1, 2, 3, 4,, n}. Sendo que se ocorrer n = 1, indica o conjunto unitário {1}. Ao trabalhar com conjuntos, trabalha-se também com o Produto Cartesiano. O Produto Cartesiano de dois conjuntos A e B é indicado por AxB e definido por: A B = {(y,z) y A e z B} Dessa forma, também pode-se indicar a potência de um conjunto. n A = A A A A (n vezes) = {(y1, y2, y3,, yn) j {n}, yj A}. Exemplos: A = {a, b, c} B = {d, e} A B = {(a, d), (a, e), (b, d), (b, e), (c, d), (c, e)} B A = {(d, a), (d, b), (d, c), (e, a), (e, b), (e, c)} 1 A 2 A = {a, b, c} = A A = {(a, a), (a, b), (a, c), (b, a), (b, b), (b, c), (c, a), (c, b), (c, c)} 2.Alfabeto e símbolos Um alfabeto é um conjunto finito de elementos que recebem o nome de símbolos ou caracteres. Então um alfabeto e um conjunto de símbolos; e um símbolo é um elemento de um alfabeto. Deve-se saber qual é o alfabeto adequado para cada situação, depois quais os símbolos desse alfabeto. Como exemplo didático, usa-se {0, 1} ou {a, b}, porém pode-se usar outros alfabetos, como por exemplo:

Linguagens de Programação e Compiladores - Aula 3 2 Alfabeto dos números naturais menores que 8: {1, 2, 3, 4, 5, 6, 7} Alfabeto da língua portuguesa: {a, b, c,, z} Alfabeto dos números binários: {0, 1} Um alfabeto é normalmente descrito por. Exemplos: 1={a, b, kkk}, 2={1, 2, 3} 3={00, 11}. 4= Ø (conjunto vazio) Um conjunto infinito não pode ser um alfabeto: - Exemplos: conjunto dos números naturais, inteiros,... - {a, b, aa, ab, ba, bb, aaa,... } Os símbolos de um alfabeto não precisam ter necessariamente ter um único caractere. Além disso, os símbolos de um alfabeto não precisam todos ter o mesmo número de caracteres. A única restrição é que o tamanho do símbolo seja finito. Dependendo do alfabeto, pode-se alterar/montar os símbolos de acordo com o interesse do usuário/programador. Por exemplo se for um alfabeto para uma determinada linguagem de programação, pode-se ter como símbolos: main, if, else, for, end, while Dessa forma os símbolos escolhidos poderiam ser limitados para determinada função. 3.Cadeias de Símbolos, Palavras ou Strings Uma Cadeia de Símbolos sobre um conjunto é uma sequência de zero ou mais símbolos (do conjunto) justapostos. Uma Palavra ou String é uma cadeia de símbolos finita. Uma cadeia sem símbolos é uma palavra válida e o símbolo ε denota uma cadeia vazia ou palavra vazia. Exponenciação de Alfabetos: Σ k é o conjunto de todas as cadeias com tamanho k, formadas sobre o alfabeto Σ. Exemplo: considere Σ = {0, 1} Σ 0 = { ε } Σ 1 = {0, 1} = Σ

Linguagens de Programação e Compiladores - Aula 3 3 Σ 2 = {00, 01, 10, 11} Fechamento de um Alfabeto: Seja Σ um alfabeto, então o fechamento de Σ, descrito por Σ * é definido como Σ * = Σ 0 Σ 1 Σ 2 Σ 3... Σ n... Σ * é o conjunto de todas as cadeias possíveis de se formar sobre o alfabeto Σ. Fechamento positivo Σ + = Σ* - {ε}. Exemplo: se Σ = {a, b} - abcb é uma palavra do alfabeto {a, b, c} - Σ+ = {a, b, aa, ab, ba, bb, aaa,...} - Σ* = {ε, a, b, aa, ab, ba, bb, aaa,...} O Comprimento ou Tamanho de uma palavra w, representado por w, é o número de símbolos que compõe a palavra. Assim, por exemplo, se w = bbaba, w = 5. 4.Prefixos, Sufixo, Subpalavra Um Prefixo de uma palavra é qualquer seqüência inicial de símbolos da palavra. Um Sufixo de uma palavra é qualquer seqüência final de símbolos da palavra. Uma Subpalavra de uma palavra é qualquer sequência que compõe a palavra. Exemplo: Seja a palavra abcb - ε, a, ab, abc, abcb são os prefixos; - ε, b, cb, bcb, abcb são os sufixos; - ab, bcb, bc, cb são subpalabras; 5.Linguagem Formal de um alfabeto Uma Linguagem Formal ou simplesmente Linguagem é um conjunto de palavras sobre um alfabeto. Linguagem é qualquer subconjunto de *, isto é, qualquer conjunto de palavras de. Exemplo: Seja = {a,b}. São linguagens: i. O conjunto de palíndromos (palavras que tem a mesma leitura da esquerda para a direita e vice-versa) sobre Σ é um conjunto de linguagem infinita. Assim: ε, a, b, aa, bb, aaa, aba, bab, bbb, aaaa,... são palavras desta linguagem. ii. {aa,ab,ba,bb} ou {x/x {a,b}* e x = 2}

Linguagens de Programação e Compiladores - Aula 3 4 iii. {a,aa, ab,ba,aaa, aab, aba,...} ou {x/x {a,b}* com pelo menos um a} iv. v. vi. {,ab,ba,abab, aabb, baba, bbaa, abba, baab,...} ou {x/x {a,b}* com o mesmo número de a e b} n vii. * viii. ix. { ε } Dado o alfabeto, o conjunto de palavras L é uma linguagem sobre L *. A Figura 1, ilustra esta afirmação. Figura 1 Alfabeto e uma linguagem. As linguagens podem ser finitas ou infinitas. Busca-se representações finitas para linguagens infinitas: {w * / w tem a propriedade P}. Exemplos: {w w consiste em um número igual de 0 s e 1 s} {w w é um número inteiro binário primo} {w w é um programa em C sintaticamente correto} Também é comum substituir w por alguma expressão com parâmetros e descrever os strings na linguagem declarando condições sobre os parâmetros. Exemplos: {0 n 1 n n 1}. Lê-se o conjunto de 0 elevado a n 1 elevado a n tal que n maior ou igual a 1 ; essa linguagem consiste nos strings {01, 0011, 000111,...}. Note que, como ocorre com os alfabetos, podemos elevar um único símbolo a uma potência n para representar n cópias desse símbolo. {0 i 1 j 0 i j}. Essa linguagem consiste em strings com alguns 0 s (possivelmente nenhum) seguidos por um número igual ou superior de 1 s.

Linguagens de Programação e Compiladores - Aula 3 5 6.Operações sobre Linguagens Dadas as Linguagens L1 e L2, pode-se fazer as seguintes operações: Intersecção de L1 com L2 L1 L2 = {x/x L1 e x L2} União de L1 com L2 L1 L2 = {x/x L1 ou x L2} Diferença de L1 e L2 L1 - L2 = {x/x L1 e x L2} Concatenação L1 L2 = {xy /x L1 e y L2} Complemento L1(barra) = {x x Σ * x L1} Exemplo 1: se Σ {a, b, c}, L1 = {aa, bc, ca} e L2 ={ba, cc, bc} L1 L2 = {aa, bc, ca, ba, cc} L1 L2 = {bc} L1 L2 = {aa, ca} Exemplo 2: se Σ {a, b}, L1 = {a, ab} L2 ={b, ba}, L1 L2 = {ab, aba, abb, abba}. Normalmente, AB BA. 6.Linguagem Computacional Cada programa escrito numa linguagem computacional corresponde a uma cadeia de símbolos que podem ser: identificadores; palavras reservadas; símbolos especiais e operadores; constantes numéricas. A Figura 2 ilustra estes conceitos.

Linguagens de Programação e Compiladores - Aula 3 6 Figura 2 Código fonte de uma linguagem. Referências Bibliográficas - Notas de Aula do Prof. Nelson Augusto de Oliveira Aguiar USJT. - John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman. Introduction to Automata Theory, Languages and Computation. Addison Wesley, 3 nd edition, 2006.