Linguagens, Reconhecedores e Gramáticas

Documentos relacionados
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

Definições Exemplos de gramáticas

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

Hierarquia de Chomsky Exemplos de gramáticas

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

Linguagens e Gramáticas. Linguagens Formais Hierarquia de Chomsky

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

Linguagens e Gramáticas. Linguagens Formais Hierarquia de Chomsky

Compiladores Aula 4. Celso Olivete Júnior.

Linguagens e Gramáticas. Linguagens Formais Hierarquia de Chomsky

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

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

Capítulo II Gramáticas

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

Capítulo II Gramáticas

Exemplo preliminar. Considere a linguagem dos Palíndromos Lpal:

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

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

Conceitos Básicos. Vocabulário Cadeias Linguagens Problema

Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens

Gramáticas Sensíveis ao Contexto (GSC) Linguagens Sensíveis ao Contexto (LSC) Autômatos Linearmente Limitados (ALL)

Exemplo preliminar. Considere a linguagem dos Palíndromos Lpal:

Linguagens Formais - Preliminares

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

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

Gramáticas e Linguagens independentes de contexto

Gramática. Gramática. Gramática

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

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

Linguagens Livres de Contexto

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

TEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO

Linguagens Formais e Autômatos P. Blauth Menezes

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

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

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

IBM1088 Linguagens Formais e Teoria da

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

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

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

Apostila 05 Assunto: Linguagens dos tipos 0 e 1

Modelos de Computação

Linguagens Formais e Autômatos P. Blauth Menezes

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

Expressões Regulares e Gramáticas Regulares

Análise Sintática. Fabiano Baldo

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

Máquina de Turing. Controle finito

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

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

LINGUAGENS FORMAIS E AUTÔMATOS

Gramáticas Livres de Contexto

Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados.

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

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

Linguagens Formais e Problemas de Decisão

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

1 INTRODUÇÃO E CONCEITOS BÁSICOS

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

Automata e Linguagens Formais

a n Sistemas de Estados Finitos AF Determinísticos

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

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

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

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

I.2 Introdução a Teoria da Computação

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

SCC 205 Teoria da Computação e Linguagens Formais

Máquina de Turing. Controle finito

Teoria da Computação

Máquina de Turing Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente

Notas de aula: Cálculo e Matemática Aplicados às Notas de aula: Ciências dos Alimentos

Linguagem (formal) de alfabeto Σ

Construção de Compiladores

Linguagens Formais e Autômatos

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

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?

Alfabeto, Cadeias, Operações e Linguagens

Linguagens Regulares. Prof. Daniel Oliveira

Capítulo 3: Gramáticas

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

Linguagens livres de contexto e autômatos de pilha

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

Os movimentos do reconhecedor correspondem ao uso de derivações mais à esquerda; A árvore de sintaxe é montada de cima para baixo (da raiz em direção

Linguagens Livres de Contexto

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

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

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

Decidibilidade. Mário S. Alvim Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02)

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

Python e sua sintaxe LNCC UFRJ

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

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

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

Problemas Computáveis

Aula 8: Gramáticas Livres de Contexto

INE5317 Linguagens Formais e Compiladores AULA 3: Introdução a Teoria da Computação

Transcrição:

Linguagens, Reconhecedores e Gramáticas

Já vimos que Linguagem é um conjunto de cadeias de símbolos sobre um alfabeto/vocabulário, V. É um subconjunto específico de V*. Estas cadeias são denominadas sentenças da linguagem, e são formadas pela justaposição de elementos individuais, os símbolos da linguagem. Como representar uma linguagem?

Pode-se representar uma linguagem: (1) como um conjunto finito ou infinito de cadeias Ex: Linguagem dos números pares; L={ 0 n 1 n n 1} (2) por meio de um Reconhecedor de Linguagem (Autômato) (3) Por meio de um Gerador de Linguagem (Gramática) A Gramática é o formalismo gerativo de linguagens, enquanto que os autômatos (a MT é um autômato) são reconhecedores de linguagens.

Um Autômato para uma linguagem L, ou um Reconhecedor de L, é uma Máquina de Estados que recebe como entrada uma cadeia e, após uma sequência de mudanças de estado, fornece como resposta SIM, se a cadeia pertence à linguagem (i.e. se é sentença de L), ou, eventualmente, NÃO, se não pertence. A Máquina de Turing (MT) é um Autômato e as Linguagens para as quais é possível definir uma MT que as reconheça coincidem com as funções computáveis (Tese de Turing- Church). Falaremos mais adiante sobre as MT e outros autômatos.

Gramáticas Exemplo 1: Vn Vt G1 = ({S,A,B}, {a,b}, P,S) P = { 1. S -> ab 2. S -> ba 3. A -> a 4. A -> as 5. A -> baa 6. B -> b 7. B -> bs 8. B -> abb } Axioma Vt = Vocab. terminal Vn = Vocab. não-terminal P: Regras de Produção Como G1 gera uma linguagem? Por um processo de substituição ou derivação de símbolos. As cadeias Vt* geradas formam a linguagem L(G). S -> 1 ab -> 8 aabb -> 7 aabb -> 7 aabb S -> 2 ba -> 4 bas -> 1 baab -> 7 baab etc.

Definição: Formalmente, as gramáticas são caracterizadas como quádruplas ordenadas G = ( Vn, Vt, P, S) onde: 1. Vn representa o vocabulário não terminal da gramática. Este vocabulário corresponde ao conjunto de todos os símbolos dos quais a gramática se vale para definir as leis de formação das sentenças da linguagem. 6

2. Vt é o vocabulário terminal, contendo os símbolos que constituem as sentenças da linguagem. Dá-se o nome de terminais aos elementos de Vt. 3. P representa o conjunto de todas as leis de formação utilizadas pela gramática para definir a linguagem. Para tanto, cada construção parcial, representada por um não-terminal, é definida como um conjunto de regras de formação relativas à definicão do nãoterminal a ela referente. A cada uma destas regras de formação que compõem o conjunto P dá-se o nome de produção da gramática. 7

Assumimos Vn Vt =. Convencionamos que Vn U Vt = V Cada produção P tem a forma: a -> b a V + ;(qualquer cadeia não nula de V) e b V* (qualquer cadeia de V, incluindo a nula) 4. S є Vn denota a principal categoria gramatical de G; é dito o símbolo inicial ou o axioma da gramática. Indica onde se inicia o processo de geração de sentenças. 8

Notação/Convenções Letras do alfabeto latino maiúsculas {A,B,..Z}: símbolos de Vn (ou variáveis) Letras do começo do alfabeto latino minúsculas {a,b,c,...}: símbolos de Vt (ou terminais) Letras do fim do alfabeto latino minúsculas {t,u,v,x,z}: cadeias de terminais Letras gregas minúsculas {a,b,,,,..., }: cadeias de terminais e não terminais - cadeias de (Vn Vt)*. Regras de produção com mesmo lado esquerdo são simplificadas com a notação (ou) G1 = ({S,A,B}, {a,b}, P,S) P = {S -> ab ba A -> a as baa B -> b bs abb } 9

Definida uma gramática G, qual é a linguagem gerada por ela? Sejam as relações => (deriva/gera diretamente) e => * (deriva/gera) definidas entre as cadeias de V* (V = Vn Vt) Def.1. Se a -> b é uma produção de P, e e são cadeias quaisquer de V*, então a => b Ou: a deriva/gera b (b é derivado de a) por uma única produção, não importa o contexto (, ) em que aparecem. No Ex.1.: S => ab, pois S -> ab; ab => aabb, pois B -> abb; aabb=>aabb=>aabb, pois B ->b ou S => ab =>aabb=> aabb=> aabb 10

Def.2. Suponha que a 1 a 2 a 3 a m são cadeias de V* e a 1 => a 2, a 2 => a 3,, a m-1 => a m Então dizemos que a 1 => * a m (a 1 deriva/gera a m aplicando-se um número qualquer de produções de P) Por convenção, a =>* a para toda cadeia a. No Ex.1.: S =>* ab; S =>* aabb; bas =>* baab; ab =>* abba 11

Def.3. Toda cadeia derivada/gerada do símbolo inicial S é chamada uma forma sentencial. Ou seja, uma cadeia a V* é uma forma sentencial se e só se S =>* a No Ex.1: ab, AB, S, ab são formas sentenciais. Def.4. Uma forma sentencial, a, é uma sentença de G se for composta apenas de símbolos terminais. Ou: a V* é uma sentença de G se e só se (a) S * a (for forma sentencial) e (b) a Vt* (só tem terminais). Assim, as sentenças são as cadeias de terminais geradas pela gramática (por seu símbolo inicial). 12

Def.5. A Linguagem L gerada por uma gramática G é definida como o conjunto de sentenças de G. Ou seja, L(G) = {x x є Vt * e S =>* x} ou {x x é sentença de G} 1. A cadeia consiste somente de terminais 2. A cadeia é derivada a partir do símbolo inicial da gramática Def.6. Duas gramáticas G1 e G2 são equivalentes sse L(G1) = L(G2) 13

Exemplos de Gramáticas G2 = ({S}, {0,1}, P1, S) P: { 1. S -> 0S1 2. S -> 01 } Qual é a linguagem gerada por G1? Aplicamos o processo de derivação para obter L(G1), que é o processo de obtenção de cadeias a partir de uma gramática. 14

G2 A menor cadeia gerada é 01: S -> 2 01 Se aplicarmos n-1 vezes a produção 1, seguida da produção 2 teremos: S -> 1 0S1 -> 1 00S11 -> 1 0 3 S1 3 =>* 0 n-1 S1 n-1 -> 2 0 n 1 n Portanto, L(G2) = {0 n 1 n n >= 1} ou S =>* 0 n 1 n 15

Voltaremos às gramáticas mais tarde... Próximo tópico: Máquinas de Turing