Linguagens Naturais LINGUAGENS FORMAIS Definições Desenvolveram-se na História em função da necessidade dos grupos humanos que as empregavam São muito ricas, mas também ambíguas e imprecisas. Ex.: João amarelou ao ver a silhueta na janela O homem nasceu livre; mas por toda a parte se vê acorrentado (Rousseau) Linguagens Formais (artificiais) Linguagens Formais são utilizadas por cientistas para evitar as imperfeições das linguagens naturais Ex.: Explicar a Teoria da Relatividade em inglês, francês ou com a simbologia da matemática? Linguagens Formais são apenas um instrumento a ser empregado, onde precisão e operacionalidade são desejáveis 1
Definições Linguagens Formais (artificiais) São sistemas simbólicos elaborados para fins científicos (práticos ou teóricos), para representar determinados domínios de conhecimento Os símbolos das LF são utilizados conforme regras rigorosas de manipulação estabelecidas previamente. Ex.: o quadrado da hipotenusa é o resultado da soma dos quadrados dos catetos de um triângulo retângulo H 2 = a 2 + b 2 2
Definições Semiótica É Qualquer tipo de investigação em torno de uma linguagem-objeto (linguagem de interesse de estudo). A linguagem objeto pode ser uma linguagem natural ou uma linguagem artificial Semiótica é o estudo (metalinguístico) de qualquer sistema simbólico. Semiótica = Sintáctica + Semântica + Pragmática Semiótica - Sintáctica = Sequência de ordenação dos símbolos de uma determinada linguagem Semiótica - Semântica = Sentidos e denotações de uma determinada expressão linguística Semiótica - Pragmática = Dimensão do sistema simbólico que o relaciona com o mundo nos contextos sociais, psicológicos, econômicos, políticos, etc 3
Definições Linguagens Formais (artificiais) Desenvolvida na 1 a metade do século XX com o objetivo de desenvolver teorias relacionadas com as linguagens naturais. Investigação inicial: Estrutura matemática das linguagens Áreas de aplicação Análise léxica e sintática de linguagens de programação Modelos de sistemas biológicos Projetos de circuitos ( chips ) Linguagens planares, espaciais e n-dimensionais 4
Definições Linguagem Sintáctica Semântica Pragmática Natural Sim Sim Sim Formal Sim Sim - Linguagens Formais (artificiais) Dimensão: SINTAXE = Apresenta construções matemáticas bem definidas e universalmente aceitas. Ex.: Gramáticas de Chomsky 5
Conceitos Básicos Alfabeto (Σ) Um conjunto finito de símbolos (um conjunto vazio também é considerado um alfabeto) Ex.: Letras, dígitos, operadores aritméticos, variáveis Sentença (palavra, cadeia de caracteres) Uma sequência finita de símbolos (do alfabeto) justapostos ε Σ * Σ + - sentença vazia - Todas as sentenças (palavras) possíveis sobre Σ - Todas as sentenças (palavras) possíveis sobre Σ excetuando-se a palavra vazia. Σ + = Σ * - { ε } Tamanho (comprimento) da sentença Seja a sentença simbolizada por w. Então w é o número de símbolos que compõem a sentença (palavra) 6
7 LINGUAGENS FORMAIS Conceitos Básicos
8
Prefixo, Sufixo, Subpalavra LINGUAGENS FORMAIS Conceitos Básicos Um prefixo (respectivamente sufixo) de uma sentença é qualquer sequência inicial (respectivamente final) da sentença. Uma subpalavra de uma palavra é qualquer sequência de símbolos contígua da palavra Concatenação Define-se concatenação β de duas cadeias (sentenças) α e α como sendo a cadeia formada pela justaposição das sequências de símbolos α e α nesta ordem β = α α ou β = αα β = α + α Concatenação é uma operação associativa: (αβ)γ = α(βγ) Cadeia ε é elemento neutro na concatenação: αε = εα = α 9
Linguagem Formal LINGUAGENS FORMAIS Conceitos Básicos Uma linguagem formal é um conjunto de sentenças (palavras) sobre um alfabeto 10
Conceitos Básicos Gramática Conjunto de leis de formação (justaposição) dos símbolos do alfabeto para formação das sentenças (palavras) da linguagem em questão Gramática É uma quádrupla ordenada G = (V, T, P, S) onde: V - Conjunto finito de símbolos variáveis ou nãoterminais T - Conjunto finito de símbolos terminais distintos de V P - Conjunto finito de pares do tipo α β denominados regras de produção S - Elemento de V denominado variável inicial V T = α (V T) + β (V T) * 11
Conceitos Básicos Derivação Seja G = (V, T, P, S) uma gramática. Uma derivação é um par da relação denotada por 12 α β, onde α (V T) + e β (V T) * Para todo par α β, onde β = β u β v β w, se β v β t é regra de P então: β = β u β t β w * é fecho transitivo e reflexivo: ou seja, zero ou mais passos de derivações sucessivos + é fecho transitivo: ou seja, um ou mais passos de derivações sucessivos i exatos i passos de derivações sucessivos onde i N Linguagem Gerada A linguagem gerada pela gramática G = (V, T, P, S) denotada por L(G) ou GERA(G) é composta por todos as sentenças (palavras) de símbolos terminais deriváveis a partir do símbolo inicial S L(G) = { w T * S + w }
13 LINGUAGENS FORMAIS Gramáticas - Exemplos
14
Gramáticas Gramáticas [ G = (V, T, P, S) ] Dispositivos GERADORES de SENTENÇAS de uma determinada linguagem 15
Gramáticas Lineares 16 LINGUAGENS FORMAIS Linguagens Regulares (Tipo 3) Seja G = (V, T, P, S) uma gramática e sejam: A V, B V e w é uma sentença (palavra) de T *. Então G é uma: a) Gramática Linear à Direita (GLD) se todas as regras de produção são da forma A wb ou A w b) Gramática Linear à Esquerda (GLE) se todas as regras de produção são da forma A Bw ou A w c) Gramática Linear Unitária à Direita (GLUD) se todas as regras de produção são como na GLD e adicionalmente: w 1 d) Gramática Linear Unitária à Esquerda (GLUE) se todas as regras de produção são como na GLE e adicionalmente: w 1
Linguagens Regulares (Tipo 3) Teorema: Equivalência das Gramáticas Lineares Seja L uma linguagem. Então: L é gerada por uma GLD se e somente se, L é gerada por uma GLE se e somente se, L é gerada por uma GLUD se e somente se, L é gerada por uma GLUE Gramática Regular Uma gramática regular (tipo 3) é qualquer gramática linear 17
18 LINGUAGENS FORMAIS Linguagens Regulares (Tipo 3)
Linguagens Regulares (Tipo 3) A gramática acima é gramática tipo 3?? 19
Linguagens Regulares (Tipo 3) Na gramática acima V N =? V T =? P =? A gramática acima é gramática tipo 3?? 20
Linguagens Regulares (Tipo 3) 1) Construa a gramática regular G sobre o alfabeto Σ={0,1} que gera SENTENÇAS da linguagem L onde L = { w w = 1 m 0, m = 1, 2, 3,... } 2) Construa a gramática regular G sobre o alfabeto Σ={0,1} que gera SENTENÇAS da linguagem L onde as sentenças iniciem, obrigatoriamente, com 00 ou 11 3) Construa a gramática regular G sobre o alfabeto Σ={0,1} que gera SENTENÇAS da linguagem L onde as sentenças tenham, obrigatoriamente, 00 ou 11 como subpalavras 4) Construa a gramática regular G sobre o alfabeto Σ={0,1} que gera SENTENÇAS da linguagem L onde as sentenças iniciem, obrigatoriamente, com 1 e terminem, obrigatoriamente com 0 5) Construa a gramática regular G sobre o alfabeto Σ={0,1} que gera SENTENÇAS da linguagem L onde as sentenças possuem um número par de bits 1 21
Linguagens Regulares (Tipo 3) 6) Construa a gramática regular G sobre o alfabeto Σ={0,1} que gera SENTENÇAS da linguagem L onde as sentenças possuem um número par de bits 1 e um número par de bits 0 7) Construa a gramática regular G sobre o alfabeto Σ={0,1} que gera SENTENÇAS da linguagem L onde as sentenças possuem ou um número par de bits 1 e um número ímpar de bits 0, ou um número ímpar de bits 1 e um número par de bits 0 8) Construa a gramática regular G sobre o alfabeto Σ={0,1} que gera SENTENÇAS da linguagem L onde as sentenças não possuem a subpalavra 11 9) Construa a gramática regular G sobre o alfabeto Σ={0,1} que gera SENTENÇAS da linguagem L onde as sentenças não possuem a subpalavra 101 10) Construa a gramática regular G sobre o alfabeto Σ={0,1} que gera SENTENÇAS da linguagem L onde as sentenças possuem no máximo um par da subpalavra 00 22
Sistema de Estados (status) Finitos Modelo matemático apresentando entradas e saídas discretas. Assume um número finito e pré-definido de estados Exemplos Status da vida escolar de um indivíduo Curso primário incompleto Curso primário completo e cursando o 1 o grau 1 o grau completo e cursando o 2 o grau 2 o grau completo e cursando 3 o grau 3 o grau completo e cursando pós-graduação Pós-graduação completo Status da vida civil de um indivíduo Solteiro Casado Divorciado Viúvo Outros Status do plano de viagem de um avião avião no pátio chegada confirmada para o horário previsto horário de chegada com atraso... 23
Sistema de Estados (status) Finitos - Exemplos Status do acesso a uma determinada home page Localizando web site Web site localizado... Carregando página Web site não localizado Concluído ( carregamento/apresentação da HP)... 24
25 LINGUAGENS FORMAIS Sistema de Estados (status) Finitos - Exemplos
Autômato Finito Autômato Finito Determinístico É uma máquina composta de 3 partes: a) Fita : dispositivo de entrada que contém a informação a ser processada b) Unidade de controle: Reflete o estado corrente da máquina. Possui uma unidade de leitura (cabeça da fita) a qual acessa uma célula da fita de cada vez e movimentase exclusivamente para a direita c) Programa ou função de transição: função que comanda as leituras e define o estado (status) da máquina 26
Autômato Finito Determinístico Um autômato finito determinístico (AFD) é uma 5-upla: Onde: Σ Q δ M = (Σ, Q, δ, q 0, F) Alfabeto de símbolo de entrada Conjunto de estados possíveis do autômato Função programa ou função de transição δ: Q x Σ Q q 0 Estado inicial do autômato (Obs.: q 0 Q ) F Conjunto de estados finais tal que F Q Processamento de um AFD M, para uma palavra (SENTENÇA) w de entrada Sucessiva aplicação da função programa para cada símbolo de w (da esquerda para a direita) até ocorrer uma condição de parada Após processar o último símbolo da palavra w escrita na fita, o AFD assume um estado que pode ser um estado final (quando w é aceita) ou um estado não-final (quando w não é aceita) 27
Autômato Finito Determinístico Convenções para a representação da função de transição 28
29 LINGUAGENS FORMAIS Autômato Finito Determinístico - Exemplo
Gramáticas X Autômatos Autômatos sentenças Dispositivos RECONHECEDORES de Gramáticas Dispositivos GERADORES de sentenças Construir a gramática G = (V, T, P, S) que gera sentenças w que tenham aa ou bb como subpalavra L1 = { w w possui aa ou bb como subpalavra } V = { S, A, A 2, B, B 2 } T = { a, b } P: (1) S aa 2 bb 2 ab ba (2) A 2 aa a ab (3) B 2 bb b bb (4) A aa 2 ab (5) B bb 2 ba Assim, L1(G) : G gera a linguagem L1 30
Linguagens Regulares (Tipo 3) Uma linguagem L aceita por um autômato finito determinístico (AFD) é uma Linguagem Regular ou Tipo 3 A linguagem aceita por um AFD M = (Σ, Q, δ, q 0, F), denotada por ACEITA(M) ou L(M) é o conjunto de todas as SENTENÇAS pertencentes a Σ * aceitas por M, ou seja: ACEITA(M) = L(M) = { w δ(q 0, w) F } Uma linguagem L gerada por uma gramática regular é uma Linguagem Regular ou Tipo 3 A linguagem gerada por G = (V, T, P, S), denotada por GERA(G) ou L(G) é o conjunto de todas as SENTENÇAS pertencentes a Σ * geradas por G, ou seja: GERA(G) = L(G) = { w S * w } 31
Compiladores Primeiras idéias Um compilador é um programa que lê um programa escrito numa linguagem - a linguagem fonte - e o traduz num programa equivalente numa outra linguagem - a linguagem alvo A compilação se divide em duas grandes fases: análise e síntese 32
Compiladores Primeiras idéias Compilador Fase de Análise 1) Análise linear - Um fluxo de caracteres constituindo um programa é lido da esquerda para a direita e agrupado em tokens, que são sequências de caracteres tendo um significado coletivo 2) Análise hierárquica - Os caracteres ou tokens são agrupados hierárquicamente em coleções aninhadas com significado coletivo 3) Análise semântica - Certas verificações são realizadas a fim de se assegurar que os componentes de um programa se combinam de forma significativa 33
Compiladores Primeiras idéias Análise léxica Num compilador, a análise linear é chamada de análise léxica ou esquadrinhamento (scanning) Exemplo: montante := deposito_inicial + taxa_de_juros * 60 Encontram-se os seguintes tokens: 1) identificador montante 2) símbolo de atribuição := 3) identificador deposito_inicial 4) sinal de adição 5) identificador taxa_de_juros 6) sinal de multiplicação 7) número 60 34
Compiladores Primeiras idéias Análise sintática É a análise hierárquica. Envolve o agrupamento de tokens do programa fonte em frases gramaticais que são usadas pelo compilador, a fim de sintetizar a saída. Usualmente, as frases gramaticais do programa fonte são representadas por uma árvore gramatical 35
Fases de um compilador LINGUAGENS FORMAIS Compiladores Primeiras idéias 36
37 montante := deposito_inicial + taxa_de_juros * 60
38
Linguagens Regulares (Tipo 3) 11) Construa um AFD sobre o alfabeto Σ={0,1} que reconheça SENTENÇAS da linguagem L onde L = { w w = 1 m 0, m = 1, 2, 3,... } 12) Construa um AFD sobre o alfabeto Σ={0,1} que reconheça SENTENÇAS da linguagem L onde as sentenças iniciem, obrigatoriamente, com 00 ou 11 13) Construa um AFD sobre o alfabeto Σ={0,1} que reconheça SENTENÇAS da linguagem L onde as sentenças tenham, obrigatoriamente, 00 ou 11 como subpalavras 14) Construa um AFD sobre o alfabeto Σ={0,1} que reconheça SENTENÇAS da linguagem L onde as sentenças iniciem, obrigatoriamente, com 1 e terminem, obrigatoriamente com 0 15) Construa um AFD sobre o alfabeto Σ={0,1} que reconheça SENTENÇAS da linguagem L onde as sentenças possuem um número par de bits 1 39
Linguagens Regulares (Tipo 3) 16) Construa um AFD sobre o alfabeto Σ={0,1} que reconheça SENTENÇAS da linguagem L onde as sentenças possuem um número par de bits 1 e um número par de bits 0 17) Construa um AFD sobre o alfabeto Σ={0,1} que reconheça SENTENÇAS da linguagem L onde as sentenças possuem ou um número par de bits 1 e um número ímpar de bits 0, ou um número ímpar de bits 1 e um número par de bits 0 18) Construa um AFD sobre o alfabeto Σ={0,1} que reconheça SENTENÇAS da linguagem L onde as sentenças não possuem a subpalavra 11 19) Construa um AFD sobre o alfabeto Σ={0,1} que reconheça SENTENÇAS da linguagem L onde as sentenças não possuem a subpalavra 101 20) Construa um AFD sobre o alfabeto Σ={0,1} que reconheça SENTENÇAS da linguagem L onde as sentenças possuem no máximo um par da subpalavra 00 40