III – Análise sintáctica

Slides:



Advertisements
Apresentações semelhantes
Software Básico Silvio Fernandes
Advertisements

Tópicos em Compiladores
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.
Compiladores Claudio Benossi
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
Compiladores I Cristiano Damiani Vasconcellos
Prof. Yandre Maldonado e Gomes da Costa
Compiladores FIC– Ciência da Computação Professor: Ciro Meneses Santos
Análise Sintática Ascendente ­
Introdução Arquitectura com unidade de controlo uniciclo.
AULA DE MATEMÁTICA 1 Prof.: Fábio Barros CAPÍTULO 6 FUNÇÕES.
Associação de resistores
Profa. Heloise Manica Paris Teixeira
Árvore Binária de Busca
esquerda p/ direita,read only
Análise Sintática Ascendente
Relações em uma Gramática
*(+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
CONTROLE DE ACESSO A MEIOS (MAC)
Denis Pinheiro Teoria de Linguagens Prof. Newton José Vieira
Informática Teórica Engenharia da Computação
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
ASSOCIAÇÃO DE RESISTORES.
Gramáticas Livres de Contexto
Aula 17 1 Análise Sintáctica Compiladores, Aula Nº 17 João M. P. Cardoso.
Teoria e Implementação de Linguagens Computacionais
Análise Léxica e Sintática
Aulão de Linguagens Formais e Compiladores
Analise sintática aula-07-analise-sintática.pdf.
Associação de resistores
Análise Sintática LR Prof. Alexandre Monteiro
Análises léxica e sintática
Análise Sintática Prof. Alexandre Monteiro
CES-41 COMPILADORES Aulas Práticas Capítulo II A Ferramenta Yacc.
Aula 18 1 Análise Sintáctica Compiladores, Aula Nº 18 João M. P. Cardoso.
Mas para que serve um analisador sintático? Verificar se a estrutura gramatical do programa está correta Escrito de outra forma: O texto segue as regras.
COMPILADORES 04 Prof. Marcos.
VII – Conceitos avançados Garbage Collection Linguagens orientadas a objectos Bibliografia aconselhada: –Apontamentos LFA 1999/ Jorge Morais.
Sintaxe de uma Linguagem
Teoria e Implementação de Linguagens Computacionais Revisão 1º EE André Ricardo Schäffer Lopes – Rodrigo Diego Melo Amorim–
Analisador sintático: Tipos de análises sintáticas
Estrutura de dados Pilhas e filas
Compilador Software que traduz o texto (linguagem fonte) que representa um programa para código máquina(linguagem alvo) capaz de ser executado pelo.
1 Decidibilidade continuação…. 2 Teorema: Para qualquer linguagem recursivamente enumerável é indecidível determinar se é finita Prova: Vamos reduzir.
Informática Teórica Engenharia da Computação. Teoria da Computação Contexto do que vamos começar a estudar As linguagens também podem ser definidas formalmente.
Transcrição da apresentação:

III – Análise sintáctica DEI Análise sintáctica ascendente LR Bibliografia aconselhada: Aho, Sethi e Ullman – secção 4.7 Crespo – secção 5.4 Appel – secção 3.3 Jorge Morais LFA 1999/2000 - 1

Vantagem dos parsers LR DEI Reconhecem praticamente todas as construções de linguagens de programação expressas por gramáticas independentes de contexto É o melhor método conhecido para parsers não recursivos com instruções shift-reduce, mantendo o grau de eficiência Jorge Morais LFA 1999/2000 - 2

Vantagem dos parsers LR (cont.) DEI A classe das gramáticas que podem ser derivadas com parsers LR contém a classe das gramáticas que podem ser derivadas usando parser predictivos Pode detectar rapidamente erros, assim que seja possível numa pesquisa da entrada da esquerda para a direita Jorge Morais LFA 1999/2000 - 3

Modelo dum parser LR DEI Jorge Morais LFA 1999/2000 - 4

Elementos dum parser LR DEI Tabela de acções – acção(s, a), s estado actual e a o símbolo na entrada: shift s’, onde s’ é um estado reduce A   aceitação erro Tabela de salto (goto) – salto(s, X), s estado actual e X estado no topo da pilha: retorna o estado de destino Jorge Morais LFA 1999/2000 - 5

Configurações DEI Configuração inicial: Configuração final: Pilha: 0 Entrada: u $ Configuração final: Pilha: s0 X1 s1 ... Xmsm , com acção(sm,a)=aceit. Entrada: u’ $ Jorge Morais LFA 1999/2000 - 6

Algoritmo DEI Em cada passo, para a na entrada e s o estado actual: Se acção(s,a) = shift s’, trocar s por s’ na pilha Se acção(s,a) = reduce A  , retirar os elementos relativos a  do topo da pilha, inserindo A seguido de s’ = salto(a,s’’), onde s’’ é o estado que ficou anteriormente no topo Se acção(s,a) = aceitação, aceita a sequência Se acção(s,a) = erro, vai para rotina de erro Jorge Morais LFA 1999/2000 - 7

Exemplo DEI E  E + T E  T T  T * F T  F F  ( E ) F  id Sequência: id * id + id $ Jorge Morais LFA 1999/2000 - 8

Exemplo – Tabela DEI Jorge Morais LFA 1999/2000 - 9 S acção salto id + * ( ) $ E T F S5 S4 1 2 3 S6 Aceit. R2 S7 R4 4 8 5 R6 6 9 7 10 S11 R1 R3 11 R5 Jorge Morais LFA 1999/2000 - 9

Exemplo - Parser DEI Pilha Entrada Acção id*id+id$ Shift 0 id 5 id*id+id$ Shift 0 id 5 *id+id$ Reduce F  id 0 F 3 Reduce T  F 0 T 2 0 T 2 * 7 id+id$ 0 T 2 * 7 id 5 +id$ 0 T 2 * 7 F 10 Reduce TT*F Jorge Morais LFA 1999/2000 - 10

Exemplo – Parser (cont.) DEI Pilha Entrada Acção 0 T 2 +id$ Reduce E  T 0 E 1 Shift 0 E 1 + 6 id$ 0 E 1 + 6 id 5 $ Reduce F  id 0 E 1 + 6 F 3 Reduce T  F 0 E 1 + 6 T 9 Reduce EE+T Aceita Jorge Morais LFA 1999/2000 - 11