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

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

Capítulo II Gramáticas

Capítulo II Gramáticas

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

Linguagens Formais e Autômatos P. Blauth Menezes

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

Linguagens Formais e Autômatos P. Blauth Menezes

Linguagens, Reconhecedores e Gramáticas

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

Gramática. Gramática. Gramática

Teoria da Computação Aula 02 Introduçã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

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

Linguagens Livres de Contexto

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

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

Compiladores Aula 4. Celso Olivete Júnior.

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

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

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

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

Hierarquia de Chomsky Exemplos de gramáticas

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

Gramáticas Livres de Contexto

IBM1088 Linguagens Formais e Teoria da

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

Definições Exemplos de gramáticas

Python e sua sintaxe LNCC UFRJ

IV Gramáticas Livres de Contexto

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos

Gramáticas e Linguagens independentes de contexto

Linguagens e Gramáticas. Linguagens Formais Hierarquia de Chomsky

Introdução à Programação

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

Gramáticas Livres de Contexto Parte 1

Linguagens Regulares. Prof. Daniel Oliveira

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

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

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

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

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

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

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

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

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

15/03/2018. Professor Ariel da Silva Dias Aspectos sintáticos e semânticos básicos de linguagens de programação

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

TEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO

Linguagens Formais e Autômatos. Simplificação de Gramáticas Livre do Contexto (GLC)

V Análise Sintática. V.1.1 Gramáticas Livres de Contexto Definições de GLC

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

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

Linguagens Formais - Preliminares

Automata e Linguagens Formais

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

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

Linguagens Livres de Contexto

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

Linguagens Formais e Autômatos

Análise Sintática. Fabiano Baldo

Compiladores Analisador Sintático. Prof. Antonio Felicio Netto Ciência da Computação

Conceitos Básicos. Vocabulário Cadeias Linguagens Problema

Capítulo 3: Gramáticas

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

Expressões Regulares e Gramáticas Regulares

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

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

Linguagens Formais e Autômatos P. Blauth Menezes

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

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

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

Se o símbolo inicial não fizer parte do conjunto de símbolos férteis, a linguagem gerada pela gramática é vazia.

Gramá3ca Livre de Contexto (GLC)

Linguagens Formais e Autômatos P. Blauth Menezes

Universidade Federal de Alfenas

Histórico e motivação

Linguagens Livres de Contexto

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

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

Programação em Lógica. UCPEL/CPOLI/BCC Lógica para Ciência da Computação Luiz A M Palazzo Maio de 2010

Linguagens de Programação Aula 4

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

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

Conceitos de Linguagens de Programação

1 INTRODUÇÃO E CONCEITOS BÁSICOS

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

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

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

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

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

Construção de Compiladores

Linguagens de Programação

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

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

Transcrição:

UNIVERSIDADE FEDERAL DO PARÁ INSTITUTO DE CIÊNCIAS EXATAS E NATURAIS FACULDADE DE COMPUTAÇÃO CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais Email: jmorais@ufpa.br

Agenda Visão Geral O que é uma Linguagem Conceitos Básicos 2

Visão Geral Teoria das Linguagens Formais originariamente desenvolvida na década de 1950 objetivo inicial desenvolver teorias relacionadas com as linguagens naturais hoje importante para o estudo de linguagens artificiais (em especial, para as linguagens originárias da Ciência da Computação) 3

Visão Geral Enfoques análise de linguagens de programação léxica sintática modelos de sistemas biológicos desenho de hardware relacionamentos com linguagens naturais Recentemente linguagens não-lineares planares espaciais n-dimensionais. 4

Visão Geral Linguagens Formais preocupa-se com os problemas sintáticos das linguagens Importante introduzir conceitos de sintaxe e semântica Historicamente o problema sintático foi reconhecido antes do problema semântico foi o primeiro a receber um tratamento adequado é de tratamento mais simples que os semânticos 5

Visão Geral Consequência grande ênfase à sintaxe ao ponto de levar à idéia de que questões das linguagens de programação resumiam-se às questões da sintaxe 6

Visão Geral Atualmente teoria da sintaxe possui construções matemáticas bem definidas e universalmente reconhecidas. Por exemplo: Gramáticas de Chomsky. Linguagem de Programação (ou qq modelo matemático) pode ser vista livremente sem qualquer significado associado juntamente com uma interpretação do seu significado 7

Visão Geral Sintaxe trata das propriedades livres da linguagem "forma" exemplo: verificação gramatical de programas Semântica fornece uma interpretação para a linguagem exemplo: um significado ou valor para um determinado programa 8

Visão Geral Sintaticamente "errado" não existe uma noção de programa "errado" neste caso, simplesmente não é um programa Sintaticamente "Correto" pode não ser o programa que o programador esperava escrever Programa "Correto" ou "Errado deve considerar se modela adequadamente o comportamento desejado 9

Visão Geral Sintaticamente "errado" não existe uma noção de programa "errado" neste caso, simplesmente não é um programa Sintaticamente "Correto" pode não ser o programa que o programador esperava escrever Programa "Correto" ou "Errado deve considerar se modela adequadamente o comportamento desejado 10

O que é uma linguagem? 11

O que é uma linguagem de programação? 12

Conceitos Básicos Linguagem (1ª definição): é um meio de comunicação, formada por um conjunto de palavras e de regras gramaticais que permitem combinar as palavras em sentenças sintaticamente corretas. Uma linguagem é dita formal quando pode ser representada através de um sistema com sustentação matemática. A Linguística Formal compreende a representação da sintaxe (estrutura) e da semântica (significado) das sentenças de uma linguagem. Nesta disciplina será abordada somente a estrutura sintática das linguagens. 13

Conceitos Básicos Alfabeto ou vocabulário é um conjunto finito de símbolos ou caracteres. Exemplo: dígitos, letras, letras gregas, etc. Sentença, ou palavra definida sobre um alfabeto é qualquer sequência finita de símbolos do alfabeto. Exemplo: alfabeto V = { 0,1} sentenças válidas = 001010011 14

Conceitos Básicos O tamanho, ou comprimento, de uma sentença é dado pelo número de símbolos que compõem a sentença. Exemplo: alfabeto V = { a, b, c } sentença w = ab tamanho w = 2 Sentença vazia é a sentença que não contém símbolos, possuindo tamanho 0. É representada por ε. Seja V um alfabeto, representamos por: V* = conjunto de todas as sentenças compostas de símbolos de V incluindo a sentença vazia. V+ = V* -(ε). 15

Conceitos Básicos Exemplos: V = { 0,1} V* = { ε, 0, 1, 00, 01, 10, 11,...} V+ = { 0, 1, 00, 01, 10, 11,...} Linguagem (outra def.) é qualquer conjunto de sentenças sobre um alfabeto, ou seja uma linguagem L sobre um alfabeto V é um subconjunto de V*. Conforme o número de sentenças que possuem, as linguagens se classificam em: finitas vazias infinitas 16

Conceitos Básicos Como representar uma linguagem? listando as palavras (só para linguagem finita) através de uma descrição algébrica Exemplo: (an bn cn n >= 1) definindo um algoritmo que determina se uma sentença pertence ou não à linguagem: Reconhecimento Exemplo: autômato finito definindo um mecanismo que gera sistematicamente as sentenças da Linguagem Exemplo: Gramática 17

Gramáticas Uma gramát ica serve para definir qual o subconjunto desentenças que faz parte de uma determinada linguagem. É um dispositivo formal para especificar uma linguagem potencialmente infinita de uma forma finita. Existem diversas formas de representar a sintaxe das linguagens: BNF, diagramas de sintaxe, notação formal de gramática. Exemplo: Backus Naur Form (BNF) <programa> ::= <decl>; <bloco>. <bloco> ::= BEGIN <comando> END <comando> ::= <if> <atrib> <goto>... 18

Gramáticas Elementos: não-terminais ou variáveis = <programa> <bloco> símbolos terminais = BEGIN ; END produções = <comando> ::= <if> símbolo inicial = <programa> Notação Formal de Gramática Uma gramática G é definida por uma quádrupla G = ( N, T, P, S ) onde N - conjunto finito de não-terminais T -conjunto finito de terminais P -conjunto finito de regras de 19

Gramáticas Observações: N T = V = N T S N P = { α β α V+ e β V* } 20

Gramáticas Exemplo: G = ( N, T, P, I ) N = { I, D } T = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } P = { I D, D 0, D 1, D 2, D 3, D 4, D 5, D 6, D 7, D 8, D 9 ) 21

Gramáticas Convenções Para facilitar a compreensão das expressões, são adotadas sempre que possível as seguintes convenções: N = { A, B, C,... T } Letras maiúsculas do início do alfabeto para símbolos nãoterminais T = { a, b, c,... t } Letras minúsculas do início do alfabeto para símbolos terminais T* = { u, v,... z } Letras minúsculas do fim do alfabeto para sequências de terminais ( N T )* = { α, β, γ,... } Letras gragas para sequências de variáveis e terminais N T = { U, V,... Z } Letras maiúsculas do fim do alfabeto para um símbolo terminal ou não-terminal 22

Gramáticas Convenções Para facilitar a compreensão das expressões, são adotadas sempre que possível as seguintes convenções: N = { A, B, C,... T } Letras maiúsculas do início do alfabeto para símbolos nãoterminais T = { a, b, c,... t } Letras minúsculas do início do alfabeto para símbolos terminais T* = { u, v,... z } Letras minúsculas do fim do alfabeto para sequências de terminais ( N T )* = { α, β, γ,... } Letras gragas para sequências de variáveis e terminais N T = { U, V,... Z } Letras maiúsculas do fim do alfabeto para um símbolo terminal ou não-terminal 23

Gramáticas Derivação Derivação é uma operação de substituição efetuada de acordo com as regras de produção da gramática. Representa-se esta operação pelo símbolo Logo: x α y x β y se α β P e x e y V* Uma sequênciade derivações, de zero ou mais passos, é representada por * Isto é: α1* αmse α1 α2, α2 α3,..., αm-1 αm, α1, α2,..., αm V* 24

Gramáticas Derivação (cont) Para garantir que pelo menos uma derivação seja efetuada, a notação utilizada é +. Isto é: α1 + αm se α1 α2, α2 * αm, α1, α2,..., αm V* 25

Gramáticas Sentença e Forma Sentencial Uma sentença de uma linguagem é uma sequência formada de terminais, obtida a partir do símbolo inicial da gramática desta linguagem, através de derivações sucessivas. S + u {u= sequênciade terminais} Uma forma sentencial é uma sequênciaqualquer, composta de símbolos terminais e/ou de não terminais, obtida a partir do símbolo inicial da gramática através de derivações sucessivas. S *=> α {α=sequênciade variáveis e terminais} 26

Conceitos Básicos Linguagem (outra def.) A linguagem gerada por uma gramática G = ( N, T, P, S ) é o conjunto de todas as sentenças que podem ser geradas a partir do símbolo inicial desta gramática, através de derivações sucessivas. L(G) = { w w T* e S + w } 27

Conceitos Básicos Exemplo G = ( N, T, P, S ) G = ({S},{0,1}, P, S ) P = { S 0S1 S 01 } S 0S1 00S11 03S13... 0n-1S1n-1 0n1n L(G) = { 0n 1n n >= 1 } 28

Tipos de Gramáticas Segundo a hierarquia de Chomsky, as gramáticas podem ser de quatro tipos. Para G = ( N, T, P, S ) e V = N T, temos: Tipo 0 - Gramáticas Irrestritas (GI) São definidas pelas seguintes regras de produção: P = { α β α V+, β V* } Ou seja, do lado esquerdo da produção pode haver uma sequênciade quaisquer símbolos. Do lado direito da produção pode haver qualquer sequência de símbolos, inclusive a sentença vazia. 29

Tipos de Gramáticas Tipo 2 -Gramáticas Livres de Contexto (GLC) Quando as regras de produção são todas na seguinte forma: P = { α β α N e β ε } Ou seja, do lado esquerdo da produção deve, sempre, ocorrer um e apenas um não-terminal. A sentença vazia também não é aceita do lado direito da produção*. Ex: X abcx {não interessa o contexto em que X se encontra} 30

Tipos de Gramáticas Tipo 1 - Gramáticas Sensíveis ao Contexto (GSC) Para toda produção α β P α <= β Ou seja, o comprimento da sentença do lado esquerdo deve ser menor ou igual ao comprimento da sentença do lado direito da produção. Do lado direito não é aceita a sentença vazia*. Ex: α1aα2 α1bα2 Essa regra será relaxada postariormente 31

Tipos de Gramáticas Tipo 3 -Gramáticas Regulares (GR) Toda produção é da forma: A abou A a Ou seja: P = { A ax A N, a T, X N {ε} } Do lado esquerdo da produção deve, sempre, ocorrer um e apenas um não-terminal e do lado direito podem ocorrer ou somente um terminal, ou um terminal mais um não-terminal (a ordem não interfere na classificação da gramática). 32

Tipos de Gramáticas 33

Tipos de Gramáticas Exemplo de Gramática Livre de Contexto: G = ( N, T, P, S ) N = { S, A, B } T = { a, b } P = { S aba baa S bab b A a B bs A asb abb} L(G) é o conjunto de todas as palavras em T que tem o mesmo número de a se b s 34

Linguagens Linguagens geradas por gramáticas Conforme o tipo da gramática que dá origem a uma linguagem, estas se classificam em: LSC - Linguagem Sensível ao Contexto LLC -Linguagem Livre de Contexto LR -Linguagem Regular 35

Linguagens A sentença vazia Vamos estender as definições das gramáticas Tipo 1, 2 e 3 para permi r produções do po S ε, sendo S o símbolo inicial. Entretanto, isto só será possível se S não aparecer do lado direito de qualquer produção. a regra S ε somente será u lizada para dar origem à sentença vazia. A gramática que possuir o símbolo inicial aparecendo do lado direito de regras de produção, deverá ser transformada em outra equivalente que obedeça a esta restrição. Observação: gramáticas equivalentes devem gerar a mesma linguagem. Quando for necessário transformar a gramática, deverá ser incluído um novo símbolo não-terminal (S ) que passará a ser o novo símbolo inicial. Em seguida, deverão ser incluídas em P todas as regras que tinham o símbolo 36

Linguagens Exemplo: Modificar a gramática abaixo de modo a incluir a sentença vazia. G = { { S, A }, {a}, P, S } P: S aa A aa a Resposta: G = { { S, S, A }, {a}, P, S } P : S S ε S aa A aa a 37