III – Análise sintáctica

Slides:



Advertisements
Apresentações semelhantes
Linguagens Livre-de-contexto
Advertisements

FAPE - Curso de Ciência da Computação
Software Básico Silvio Fernandes
5.5 – Análise Bottom-Up Tentativa de construir uma árvore sintática para a sentença analisada, começando das folhas, indo em direção à raiz (pós-ordem.
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
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
I - Noções dum compilador
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
IV – Análise semântica DEI Associação de regras semânticas a produções
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
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,
III – Análise sintáctica Geradores de parsers Bibliografia aconselhada: –Aho, Sethi e Ullman – secção 4.9 LFA 1999/ Jorge Morais.
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.
Linguagens Formais e Autómatos
Prof. Yandre Maldonado e Gomes da Costa
Prof. Yandre Maldonado e Gomes da Costa
Compiladores FIC– Ciência da Computação Professor: Ciro Meneses Santos
Deyvisson, Rafael M.P., Renato, Robson C.F., Rodolfo
Análise Sintática Ascendente ­
3 AUTÓMATOS FINITOS.
Ling. Formais e Autômatos Autômatos finitos
Profa. Heloise Manica Paris Teixeira
Análise Sintática - Continuação
esquerda p/ direita,read only
autômatos finitos com transições e
Análise Sintática Ascendente
Relações em uma Gramática
Autômatos Finitos Determinísticos
*(+num) Expr Expr Op Expr Expr (Expr) Expr - Expr Expr num Op + Op - Op * Pilha Buffer com string de entrada.
Construção de Compiladores
Construção de Compiladores
Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira
Informática Teórica Engenharia da Computação
Ferramentas para a Construção de Compiladores: Lex & Yacc
Determinar o tipo de gramática
Compiladores, Aula Nº 7 João M. P. Cardoso
Compiladores, Aula Nº 19 João M. P. Cardoso
Compiladores, Aula Nº 9 João M. P. Cardoso
Aula 17 1 Análise Sintáctica Compiladores, Aula Nº 17 João M. P. Cardoso.
Ling. Formais e Autômatos AFN-ε
Análise Léxica e Sintática
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?
Aulão de Linguagens Formais e Compiladores
Análise Sintática LR Prof. Alexandre Monteiro
Análises léxica e sintática
Aula 12 1 Análise Sintáctica Compiladores, Aula Nº 12 João M. P. Cardoso.
Aula 18 1 Análise Sintáctica Compiladores, Aula Nº 18 João M. P. Cardoso.
LFA: Unidade 03 – Parte B Engenharia/Ciência da Computação
Revisão Compiladores – AP2
COMPILADORES 04 Prof. Marcos.
Computabilidade e Linguagens Formais
VII – Conceitos avançados Garbage Collection Linguagens orientadas a objectos Bibliografia aconselhada: –Apontamentos LFA 1999/ Jorge Morais.
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.
Analisador sintático: Tipos de análises sintáticas
1 CIn / UFPE Algoritmos de Parsing Gustavo Carvalho Março 2011.
Compilador Software que traduz o texto (linguagem fonte) que representa um programa para código máquina(linguagem alvo) capaz de ser executado pelo.
Reverso de uma Linguagem Regular
1 Decidibilidade continuação…. 2 Teorema: Para qualquer linguagem recursivamente enumerável é indecidível determinar se é finita Prova: Vamos reduzir.
Análise Sintática Botton Up Diomara M. R. Barros
Transcrição da apresentação:

III – Análise sintáctica DEI Construção de tabelas para parsers LR Bibliografia aconselhada: Aho, Sethi e Ullman – secção 4.7 Crespo – secção 5.5, 5.6 e 5.7 Appel – secção 3.3 Jorge Morais LFA 1999/2000 - 1

Gramáticas LR(0) DEI Podem ser derivadas usando apenas o símbolo no topo da pilha, fazendo instruções shift-reduce sem ler nenhum símbolo à frente Demasiado fracas, servem de base às outras formas de construções de tabelas Jorge Morais LFA 1999/2000 - 2

Itens LR(0) DEI Proução: Itens LR(0): A  X Y Z Itens LR(0): A  . X Y Z A  X . Y Z A  X Y . Z A  X Y Z . No caso A  , temos apenas o item A  . Jorge Morais LFA 1999/2000 - 3

Operação de fecho DEI Sendo I um conjunto de itens, fecho(I) é um novo conjunto construído usando as seguintes regras: Todos os itens em I pertencem a fecho(I) Se A   . B  está em fecho(I) e B   é uma produção da gramática, B  .  é adicionado ao fecho(I) Jorge Morais LFA 1999/2000 - 4

Operação de salto (goto) DEI goto(I,X) onde I é um conjunto de itens e X é um símbolo da gramática Fecho do conjunto de itens de todos os itens da forma A   X .  onde A   . X  pertence a I Jorge Morais LFA 1999/2000 - 5

Construção de conjuntos de itens Algoritmo: C = {fecho ({S’  . S})} Para cada I em C e cada X símbolo da gramática (até não haver mais itens a adicionar) Adicionar goto(I,X) a C Jorge Morais LFA 1999/2000 - 6

Exemplo DEI E’  E E  E + T E  T T  T * F T  F F  ( E ) F  id Jorge Morais LFA 1999/2000 - 7

goto(I0 , X) DEI I1=goto(I0 , E) = {E’  E . , E  E . + T} I2=goto(I0 , T) = {E  T . , T  T . * F} I3=goto(I0 , F) = {T  F .} I4=goto(I0 , ‘(‘ ) = {F  ( . E ) , E  . E + T, E  . T, T  . T * F, T  . F, F  . ( E ), F  . id} I5=goto(I0 , id ) = {F  id .} Jorge Morais LFA 1999/2000 - 8

Restantes conjuntos DEI I6=goto(I1 , +) = {E  E + . T, T  . T * F, T  . F, F  . ( E ), F  . id} I7=goto(I2 , *)={TT*.F,F.( E ),F . id} I8=goto(I4 , E) = {F  ( E . ) , E  E . + T} I9=goto(I6 , T) = {E  E + T . , T T .* F} I10=goto(I8 , F) = {T  T * F .} I11=goto(I8 , ‘)’) = {F  ( E ) .} Jorge Morais LFA 1999/2000 - 9

Autómato finito DEI Cada um dos Ik vai ser um estado dum autómato finito determinístico As transições são dadas por (I,X,goto(I,X)) O estado inicial será o que contém E’  E Este autómato pode ser construído usando a Construção de Thompson e a construção de subconjuntos, partindo das transições: ({A   . X }, X, {A  X . }) ({A   . X },  , {X . }) Jorge Morais LFA 1999/2000 - 10

SLR – Simple LR DEI Construir C={I0, I1, ..., In} Se {A   . a } pertence a Ii e goto(Ii,a) = Ij , então acção(i,a) = shift j Se {A   . } pertence a Ii, então para todo o a em FOLLOW(A), então acção(i,a) = reduce A  ; A não pode ser S’ Se {S’  S} pertence a Ii, então acção(i,$) = aceit. Se {A   . X } pertence a Ii, X variável (não terminal), então salto(i,X) = j Jorge Morais LFA 1999/2000 - 11

LR(1) DEI LR(1) – usa um símbolo de lookahead os itens LR(1) são da forma (A  . , a) onde a é um símbolo terminal se  não é , a não tem qualquer significado os itens(A  . , a) vão corresponder a uma redução A  se a for o próximo símbolo na entrada Jorge Morais LFA 1999/2000 - 12

LALR(1) – LookAhead LR(1) DEI LALR(1) – diminui número de estados relativamente a LR(1) e é mais forte que SLR Junta qualquer par de estados iguais que apenas tenham o símbolo de lookahead diferente Jorge Morais LFA 1999/2000 - 13

Hierarquia de gramáticas DEI Jorge Morais LFA 1999/2000 - 14