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

Documentos relacionados
Linguagens Formais e Autômatos P. Blauth Menezes

IBM1088 Linguagens Formais e Teoria da

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

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

1 INTRODUÇÃO E CONCEITOS BÁSICOS

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

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

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

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

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?

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

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

Alfabeto, Cadeias, Operações e Linguagens

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

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos

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

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

Modelos de Computação

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

Lista de exercícios 1

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

Linguagens Formais e Problemas de Decisão

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

Teoria da Computação

Prof. Adriano Maranhão COMPILADORES

Linguagens Regulares. Prof. Daniel Oliveira

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

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

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

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

Compiladores Aula 4. Celso Olivete Júnior.

Linguagens Formais - Preliminares

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

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

Expressões Regulares e Gramáticas Regulares

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

LFA Aula 09. Gramáticas e Linguagens Livres de Contexto 18/01/2016. Linguagens Formais e Autômatos. 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

INE5317 Linguagens Formais e Compiladores AULA 5: Autômatos Finitos

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

Como construir um compilador utilizando ferramentas Java

LINGUAGENS FORMAIS E AUTÔMATOS

LINGUAGENS FORMAIS Modelos Determinísticos e Não Determinísticos. Usam-se modelos matemáticos para representar eventos (fenômenos) do mundo real.

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

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

Linguagens Formais e Autômatos P. Blauth Menezes

Definições Exemplos de gramáticas

Fundamentos da Teoria da Computação

Histórico e motivação

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

Linguagens Formais e Autômatos P. Blauth Menezes

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

Linguagens Formais e Autômatos P. Blauth Menezes

TEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO

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

Conceitos básicos de Teoria da Computação

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

LINGUAGENS FORMAIS E AUTÔMATOS

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

Aula 8: Gramáticas Livres de Contexto

Linguagens, Reconhecedores e Gramáticas

Gramáticas e Linguagens independentes de contexto

Linguagens Formais e Autômatos P. Blauth Menezes

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

Análise Léxica. Fundamentos Teóricos. Autômatos Finitos e Conjuntos Regulares (cap. III da apostila de Linguagens Formais e Compiladores)

Autómatos de pilha e GIC

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

Linguagens Formais e Autômatos P. Blauth Menezes

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

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

SCC 205 Teoria da Computação e Linguagens Formais

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

Expressões regulares

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

Capítulo 1: Alfabetos, cadeias, linguagens

EXPRESSÃO REGULAR PARA UMA FUNÇÃO EQUIVALENTE EM PASCAL, UTILIZANDO DOIS ALGORITMOS BASEADOS NO TEOREMA DE KLEENE RONALD GLATZ

Problemas decidíveis para LICs

Prova 1 de INF1626 Linguagens Formais e Autômatos

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

INE5317 Linguagens Formais e Compiladores AULA 9: Propriedades e Reconhecimento das Linguagens Livres do Contexto

Linguagens Livres do Contexto. Adaptado de H. Brandão

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

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

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

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

Conceitos Básicos. Vocabulário Cadeias Linguagens Problema

Linguagens Formais e Autômatos. Apresentação do Plano de Ensino

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?

Compiladores - Análise Léxica

Segunda Lista de Exercícios 2004/2...

Linguagem (formal) de alfabeto Σ

Gramáticas Livres de Contexto

Autômatos com Pilha: Reconhecedores de LLCs

Linguagens livres de contexto e autômatos de pilha

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

MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERALRURAL DO RIO DE JANEIRO Instituto Multidisciplinar Departamento de Ciência da Computação

Capítulo II Gramáticas

Transcrição:

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

Sumário Introdução à Linguagem Alfabeto Cadeias de Símbolos, Palavras Tamanho de Palavra Prefixo, Sufixo ou Subpalavra Concatenação de Palavras Concatenação Sucessiva de uma Palavra Linguagem Formal Gramática Hierarquia de Linguagens

Introdução à Linguagem Linguagem é um conceito fundamental em teoria da computação. A linguagem é uma forma precisa de expressar problemas. Segundo o dicionário Aurélio: Linguagem é o uso da palavra articulada ou escrita como meio de expressão e comunicação entre pessoas

Introdução à Linguagem A definição de Aurélio não é precisa para definir o desenvolvimento matemático de uma teoria de linguagens. As definições a seguir usam como base a noção de símbolo ou caractere. Um símbolo é uma unidade básica, sem definição. Por exemplo: letras e dígitos.

Alfabeto Um alfabeto é um conjunto finito de símbolos ou caracteres. Um conjunto infinito não é um alfabeto. O conjunto vazio é um alfabeto. Exemplos de alfabetos: {a, b, c}, conjunto vazio Não são exemplos de alfabetos: Conjunto dos números naturais {a, b, aa, ab, ba, bb, aaa,...}

Cadeias de Símbolos, Palavras Uma Cadeia de Símbolos sobre um conjunto é uma seqüência de zero ou mais símbolos (do conjunto) justapostos. Uma Cadeia de Símbolos Finita é usualmente denominada de Palavra.

Cadeias de Símbolos, Palavras O símbolo denota a cadeia vazia ou palavra vazia. Se Σ representa um conjunto de símbolos (um alfabeto). Σ* => o conjunto de todas as palavras possíveis sobre Σ. Σ + denota Σ* - {ɛ}.

Cadeias de Símbolos, Palavras Exemplos de palavras: abcb é uma palavra sobre o alfabeto {a, b, c}. Se Σ = {a, b}, então: Σ + = {a, b, aa, ab, ba, bb, aaa,...} Σ* = {ɛ, a, b, aa, ab, ba, bb, aaa,...}

Tamanho de Palavra O comprimento ou tamanho de uma palavra w, representado por w, é o número de símbolos que compõem a palavra. Por exemplo: abcb = 4 e ɛ = 0

Prefixo, Sufixo ou Subpalavra Um prefixo (respectivamente, sufixo) de uma palavra é qualquer seqüência inicial (respectivamente, final) de símbolos da palavra. Uma subpalavra de uma palavra é qualquer seqüência de símbolos contígua da palavra.

Prefixo, Sufixo ou Subpalavra Relativamente à palavra abcb, tem-se que: ɛ, a, ab, abc, abcb são os prefixos ɛ, b, cb, bcb, abcb são os respectivos sufixos Qualquer prefixo ou sufixo de uma palavra é uma subpalavra.

Concatenação de Palavras A concatenação de palavras é uma operação binária, definida sobre uma linguagem L, a qual associa a cada par de palavras uma palavra formada pela justaposição da primeira com a segunda. Por exemplo: Suponha o alfabeto Σ = {a, b}, v = baaaa e w = bb, tem-se que: vw = baaaabb e vɛ = v = baaaa

Concatenação de Palavras Propriedades da concatenação: a concatenação de duas palavras de uma linguagem não necessariamente resulta em uma palavra da linguagem (não fechamento). a concatenação é associativa; v(wt) = (vw)t = vwt a concatenação possui elemento neutro à esquerda e à direita, o qual é a palavra vazia. ɛw = w = wɛ

Concatenação Sucessiva de Uma Palavra A concatenação sucessiva de uma palavra ou simplesmente concatenação sucessiva, representada na forma de um expoente (suponha w uma palavra), w n, n é o número de concatenações sucessivas, é definida indutivamente a partir da operação de concatenação binária: w 0 = ɛ; w n = w n-1 w, para n > 0.

Concatenação Sucessiva de Uma Palavra Sejam w uma palavra e a um símbolo. Então: w 3 = www w 1 = w a 5 = aaaaa a n = aaa...a

Linguagem Formal Uma linguagem formal ou simplesmente linguagem é um conjunto de palavras sobre um alfabeto. Por exemplo, Suponha o alfabeto Σ = {a, b}. Então: O conjunto vazio e o conjunto formado pela palavra vazia são linguagens sobre Σ. Obviamente, { } {ɛ}. O conjunto de palíndromos sobre Σ é um exemplo de linguagem infinita.

Gramática Linguagem de Programação conjunto de todos os programas (palavras). Linguagens Usuais o conjunto de todos os programas é infinito! isso não é adequado para representar em um computador. Gramática um formalismo para especificar de forma finita linguagens infinitas.

Gramática Uma gramática é: um conjunto finito de regras; aplicadas sucessivamente geram palavras; o conjunto de todas as palavras geradas por uma gramática forma uma linguagem (eventualmente é um conjunto infinito). Não há distinção entre gramáticas: linguagens naturais; linguagens de programação.

Gramática Definição formal: G = (N, Σ, V, P, S), sendo: N é um conjunto finito e não vazio de símbolos não terminais; Σ é um conjunto finito e não vazio de símbolos terminais; V = N U Σ; P V* x V* é um conjunto finito e não vazio de regras de produção; S N é o símbolo inicial.

Gramática As regras de produção têm o formato: α β Isso significa que dada uma cadeia axαb, transforma-se em axβb, ao ser aplicada a regra α β. Exemplo: G 1 = ({S}, {0, 1}, {(S, 0S1), (S, ε)}, S) Como saber se 000111 faz parte da linguagem gerada por G 1?

Gramática Tentando gerar a cadeia 000111 a partir do símbolo inicial da gramática: S 0S1 com S 0S1 00S11 com S 0S1 000S111 com S 0S1 000111 com S ε

Gramática, se e somente se, α β. Quando há várias gramáticas, G deve ser utilizado para diferenciá-las. Além disso: i deriva em i passos; * deriva em 0 ou mais passos; + deriva em 1 ou mais passos. α é uma forma sentencial da gramática, se e somente se, S * α.

Gramática Com relação à G 1 : S 0S1; 0S1 00S11; 00S11 000S111; 0S1, 00S11, 000S111 e 000111 são formas sentenciais de G 1. 000111 é formada apenas por símbolos terminais. 000S111 000111, ou simplesmente S 0S1 00S11 000S111 000111, ou S 4 000111, ou ainda S * 000111

Hierarquia de Linguagens Hierarquia de Noam Chomsky

Hierarquia de Linguagens As linguagens são divididas em classes conforme a complexidade: das gramáticas que as geram; das máquinas que as reconhecem. As duas classes mais simples são importantes para o nosso estudo de compiladores. As outras têm grande importância na Teoria da Computação.

Hierarquia de Linguagens Linguagens regulares (tipo 3): a classe mais simples de linguagens; máquina: Autômato Finito Determinístico (AFD) ou Autômato Finito Não Determinístico (AFND). analisador léxico de um compilador!

Hierarquia de Linguagens Linguagens livres de contexto (tipo 2): uma classe um pouco mais complexa que as linguagens regulares; máquina: Autômato com Pilha Determinístico (APD) ou Autômato com Pilha Não Determinístico (APND). analisador sintático de um compilador!

Hierarquia de Linguagens Linguagens sensíveis do contexto (tipo 1): uma classe bem complexa de linguagens; máquina: máquina de Turing. não trabalhamos com essa classe em compiladores.

Hierarquia de Linguagens Linguagens irrestritas (tipo 0): a classe mais complexa de linguagens; máquina: máquina de Turing. não trabalhamos com essa classe em compiladores.