I - Noções dum compilador

Slides:



Advertisements
Apresentações semelhantes
FAPE - Curso de Ciência da Computação
Advertisements

FAPE - Curso de Ciência da Computação
Linguagem Fabrício Dias
Teoria da Computação MÁQUINA DE TURING (Continuação) Fabrício Dias
II – Análise léxica DEI Papel do analisador léxico.
II – Análise léxica DEI Conversão de expressões regulares em autómatos finitos determinísticos mínimos Bibliografia aconselhada: Aho, Sethi e Ullman –
III – Análise sintáctica
III – Análise sintáctica
II – Análise léxica DEI lex: linguagem de especificação para analisadores léxicos Implementação de simuladores de autómatos finitos Bibliografia aconselhada:
III – Análise sintáctica
III – Análise sintáctica
III – Análise sintáctica Parsers ascendentes Instruções shift-reduce Bibliografia aconselhada: –Aho, Sethi e Ullman – secção 4.5 LFA 1999/ Jorge.
I - Noções dum compilador
III – Análise sintáctica
I - Noções dum compilador Partes dum compilador Ferramentas de construção de compiladores Bibliografia aconselhada: –Aho, Sethi e Ullman – Cap. 1 LFA 1999/2000.
III – Análise sintáctica
V – Geração de código Chamada de funções Organização de memória Passagem de parâmetros Representação de código intermédio Bibliografia aconselhada: –Aho,
IV – Análise semântica DEI Implementação da tabela de símbolos
I - Noções dum compilador
VI – Optimização de código Blocos básicos Optimização de ciclos Bibliografia aconselhada: –Apontamentos LFA 1999/ Jorge Morais.
Prof. Yandre Maldonado e Gomes da Costa
Linguagens Formais e Autômatos
Prof. Yandre Maldonado e Gomes da Costa
TEORIA DA COMPUTAÇÃO Parte III  Máquina de Turing
Análise Léxica (Parte 2)
TEORIA DOS AUTÓMATOS FINITOS E DAS SUAS LINGUAGENS
3 AUTÓMATOS FINITOS.
Ling. Formais e Autômatos Autômatos finitos
Equivalência de Autômatos
Linguagens Livres de Contexto
Strings, Linguagens, Autômatos
Linguagens e Máquinas WILSON ROSA DE OLIVEIRA DEPARTAMENTO DE INFORMÁTICA UFPE
autômatos finitos com transições e
Identificando Linguagens Não Regulares
Linguagem de Prog. e Programas
Autômatos Finitos Determinísticos
01(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
Alfabetos, Palavras e Linguagens
LISTAS Uma lista é uma estrutura de dados muito comum na programação não numérica (com particular destaque na computação simbólica onde representa quase.
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Compiladores, Aula Nº 5 João M. P. Cardoso
Compiladores, Aula Nº 7 João M. P. Cardoso
Compiladores, Aula Nº 9 João M. P. Cardoso
Erick Vagner Cabral Igor Lucena Vitor Baptista
Ling. Formais e Autômatos AFN-ε
Teoria da Computação Aula 1 Prof. Fabiano Sabha.
Expressões Regulares e Gramáticas
ÁRVORES TRIES Disciplina Estrutura de Dados
Autómatos de Pilha. UM NOVO MODELO PARA OS AUTÓMATOS FINITOS As linguagens regulares são aceites por autómatos finitos. E as linguagens não regulares?
1.
Máquina de Turing Universal
Nome alunos 1 Título UC. Título – slide 2 Conteúdo Conteúdo 2.
Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento de Sistemas e Computação – DSC Teoria da.
Espaços Vectoriais A – Conjunto não vazio
LFA: Unidade 03 – Parte B Engenharia/Ciência da Computação
Estado Final Único para NFAs e DFAs
Prof. André Luis Roland Tancredo Engenheiro da Computação e Pesquisador em Desenvolvimento Tecnológico para Semicondutores pelo CNPq Especialista em Microeletrônica.
Linguagens Formais - aula 02
Computabilidade e Linguagens Formais
Computabilidade e Linguagens Formais
VII – Conceitos avançados Garbage Collection Linguagens orientadas a objectos Bibliografia aconselhada: –Apontamentos LFA 1999/ Jorge Morais.
Engenharia/Ciência da Computação
tópicostópicos itens 01. Terminologia 02. Operações básicas 03. Representação de linguagens 04. Formalização de gramáticas 05. Processo de derivação 06.
Aula 6 1 Análise Lexical Compiladores, Aula Nº 6 João M. P. Cardoso.
Compiladores Análise Léxica
COMPILADORES 03 Prof. Marcos.
Transcrição da apresentação:

I - Noções dum compilador DEI Linguagens formais Autómatos finitos Expressões regulares Bibliografia aconselhada: Apontamentos Jorge Morais LFA 1999/2000 - 1

Monóide DEI Grupóide: Semigrupo: Monóide: Par (A, . ), onde A é um conjunto, e . Representa uma operação binária em A. Semigrupo: Grupóide em que . é associativa, isto é, a (b c) = (a b) c Monóide: Semigrupo com elemento neutro e: aA : a e = e a = a Jorge Morais LFA 1999/2000 - 2

Palavras DEI Alfabeto: Palavra (sequência finita de elementos de )  conjunto finito Palavra (sequência finita de elementos de )  é a palavra vazia a1 a2 ... an (ai  ) representa uma palavra não vazia Convenção: an = a a ... a (n vezes, n>0); a0 =  Jorge Morais LFA 1999/2000 - 3

Palavras (cont.) DEI Comprimento duma palavra Conteúdo duma palavra: |a1 a2 ... an| = n || = 0 Conteúdo duma palavra: cont(a1 a2 ... an) = {a1, a2, ..., an} cont() =  Jorge Morais LFA 1999/2000 - 4

Monóide livre DEI  * - Monóide livre em   * (conjunto das palavras em ) Concatenação (operação binária associativa) (a1 a2 ... an)(an+1 an+2 ... an+k)=a1 a2...an an+1 an+2...an+k  (elemento neutro) (a1 a2 ... an)  =  (a1 a2 ... an) = a1 a2 ... an  + =  * \{} - Semigrupo livre em  Jorge Morais LFA 1999/2000 - 5

Prefixo, sufixo, factor DEI Sejam u, v  * u é prefixo de v  v = uw  w  * u é sufixo de v  v = wu  w  * u é factor de v  v = wuz  w,z  * Jorge Morais LFA 1999/2000 - 6

Autómato finito DEI Um autómato é um vector (S, , i, F, ): S   - conjunto finito de estados  - alfabeto i  S - estado inicial F  S - conjunto de estados finais  : S x   S (função parcial) - conjunto de transições Jorge Morais LFA 1999/2000 - 7

Representação gráfica DEI Jorge Morais LFA 1999/2000 - 8

Tipos de autómatos DEI Seja A=(S, , i, F, ) um autómato finito. A diz-se autómato finito determinístico se, perante um símbolo x de , puder transitar, no máximo, para um único estado, isto é: ( (s, x, s’)   (s, x, s’’)  )  s’ = s’’ Caso contrário, A diz-se não determinístico A diz-se autómato finito  se é possível transitar de estado sem usar nenhum símbolo de , isto é:   S x ({}) x S Jorge Morais LFA 1999/2000 - 9

Caminho e rótulo DEI Seja A=(S, , i, F, ) um autómato finito. Um caminho não trivial é uma sequência (s0, a1, s1), (s1, a2, s2), ..., (sn-1, an, sn) onde (si-1, ai, si)   Um caminho trivial é uma tripla da forma (s, , s), com s  S O rótulo do caminho é a1 a2 ... an Jorge Morais LFA 1999/2000 - 10

Linguagem reconhecida DEI Seja A=(S, , i, F, ) um autómato finito. Um caminho diz-se bem sucedido se começa num estado inicial e termina num estado final Linguagem reconhecida por A: L(A) = {u  * : u é o rótulo de um caminho bem sucedido em A} Jorge Morais LFA 1999/2000 - 11

Exemplo de autómato DEI A=(S, , i, F, )  = {0, 1} S = {i,f} F={f}  = {(i,0,i), (i,1,i), (i,0,f)} Este autómato finito (não determinístico) reconhece todas as sequências terminadas em 0 (números binários pares) Jorge Morais LFA 1999/2000 - 12

Exemplo de autómato (cont.) DEI A=(S, , i, F, )  = {0, 1} S = {i,f} F={f}  = {(i,0,f), (i,1,i), (f,0,f), (f,1,i)} Este autómato finito também reconhece todas as sequências terminadas em 0, mas é determinístico Jorge Morais LFA 1999/2000 - 13

Expressões regulares DEI Uma expressão regular E representa um subconjunto de * que designamos por c(E) Sendo L  * uma linguagem. As seguintes condições são equivalentes: L é reconhecida por um autómato finito L é reconhecida por um autómato finito determinístico L é reconhecida por um autómato finito  L é reconhecida por uma expressão regular Jorge Morais LFA 1999/2000 - 14

Expressões regulares (cont.) DEI Uma expressão regular tem uma das seguintes formas:   c() =    c() = {} a    c(a) = {a} Sendo E1 e E2 expressões regulares: E1 + E2  c(E1 + E2) = c(E1)  c(E2) E1 E2  c(E1 E2) = c(E1) c(E2) E1*  c(E1*) = {a1 a2 ... an : n  0, a1, a2, ..., an  E1} Jorge Morais LFA 1999/2000 - 15

Exemplo de expressões regulares DEI Considerando  = {0, 1} (0 + 1)* 0 - sequências terminadas em 0 0* (100*)* (1 + ) - sequências em que não aparecem 1’s consecutivos (0 + 1)* 101 (0 + 1)* - sequência que contem o factor 101 10 (0 + 1)* - sequência com prefixo 10 Jorge Morais LFA 1999/2000 - 16