Plano da aula. Compiladores. Top-Down x Bottom Up. Redução Exemplo 1. Redução Exemplo 1. Redução Exemplo 1. A Abc b B d.



Documentos relacionados
Analisadores Ascendentes ou Empilha-Reduz. Mais um exemplo... Mais um exemplo... Top-Down x Bottom Up. Conteúdo da aula. Analisadores Ascendentes

Compiladores. A seção das regras. Especificação (F)lex. Plano da aula. Escolha das regras. Compilação típica com FLEX

Revisão de GLC e Analisadores Descendentes

Análise semântica. Análise Semântica. Estrutura de um compilador. Anotação da árvore sintática. Tipos de comunicação de atributos?

Compiladores Aula 5. Celso Olivete Júnior.

Compiladores. Top-Down x Bottom Up. Plano da aula. Redução exemplo 1. Redução exemplo 1. Lembrando: construir a tabela de análise LL(1) A Abc b B d

6.3 Equivalência entre Autômatos com Pilha Não-Determinísticos e Gramáticas Livre do Contexto

Compiladores. Análise léxica. Plano da aula. Vocabulário básico. Motivação para análise léxica. Estrutura de um compilador

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

Análise sintática. Análise sintática ascendente. Parte-se dos símbolos terminais em direção ao símbolo inicial da gramática. Derivação mais à direita

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Compiladores - Análise Ascendente

Compiladores - Análise Ascendente

Análise Sintática (Cap. 04) Analisador Sintático LR canônico e LALR

Análise Sintática Bottom-up

Autômatos a pilha. UFRN/DIMAp/DIM0330 Linguagens formais. David Déharbe. david/enseignement/2003.

Resumo da última aula. Compiladores. Tipos. Regras semânticas. Expressões de tipos. Análise Semântica e checagem de tipos.

Linguagens Livres de Contexto e Autômatos a Pilha (Push- Down) Um Modelo de Computação de Força Intermediária. Gramática Livre de Contexto

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

Linguagens Formais e Compilação Ficha de exercícios

Compiladores I. Caracterizar um método de análise bottom-up. Compreender os mecanismos básicos envolvidos no processo de análise LR.

Sintaxe e Semântica. Fases da Compilação. programa fonte

Geração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO

Reduce: reduz o que está imediatamente à esquerda do foco usando uma produção

Compiladores - Análise Preditiva

Síntese. Compiladores. Geração de código intermediário. Linguagens Intermediárias. Modelo Clássico. Linguagens Intermediárias. Código intermediário

FUNDAÇÃO EDUCACIONAL DE ITUIUTABA

Automata e Linguagens Formais

V Teoria de Parsing. Termos Básicos: Parser Analisador Sintático Parsing Analise Sintática Parse Representação da analise efetuada

Análise Sintática II. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 34

Identificação das variáveis de entrada; resultados/variáveis de saída e método ou solução. (procedimentos e funções)

Geração de código intermediário. Novembro 2006

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

Compiladores. Exemplo. Caraterísticas de Gramáticas. A αβ 1 αβ 2. A αx X β 1 β 2. Lembrando... Gramáticas Livres de Contexto

Estruturas de Dados Pilhas, Filas e Deques

LL Parser ( TOP-DOWN)

Linguagem algorítmica: Portugol

Exemplo: programa --> regra; fato. Muito utilizada para definir gramáticas e para processamento de linguagem natural.

Análise sintática. Prof. Thiago A. S. Pardo. Análise sintática ascendente

Teoria da Computação Linguagens e Expressões Regulares, Autómatos de Estados Finitos

Capítulo 5. Linguagens livres de contexto

Analisadores Sintáticos. Análise Recursiva com Retrocesso. Análise Recursiva Preditiva. Análise Recursiva Preditiva 05/04/2010

Introdução à Lógica de Programação (cont.)

BNF (Backus-Naur Form) Gramática Livres de Contexto / Estruturas Recursivas

COMPILADORES E INTERPRETADORES

1.2 Uma linguagem de programação muito simples

Compiladores. Análise Sintática

Curso de C. Introdução by Arnaldo V. Moura e Daniel F. Ferber

Introdução à Programação. João Manuel R. S. Tavares

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 30. Instituto de C

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 12. Instituto de C

ESTRUTURA DE DADOS PILHA

Linguagem C: Estruturas de Controle. Prof. Leonardo Barreto Campos 1

Compiladores - Análise SLR

Compiladores - Análise LL(1)

Problemas decidíveis para LICs

Compiladores - Análise LL(1)

Compiladores. Análise Sintática

Árvores Binárias de Busca

Problemas decidíveis para LICs

Análise Sintática (Cap. 04) Análise Sintática Ascendente Analisador Sintático LR

Algoritmos e Linguagem de Programação I

Excel Básico e Avançado. Aula 3

Banco de Dados II Apresentação da Disciplina

Vantagens de uma Gramática. Sintaxe de uma Linguagem. Analisador Sintático - Parser. Papel do Analisador Sintático. Tiposde Parsers para Gramáticas

Pilhas. Profa Morganna Diniz

Projeto de Compiladores. FIR Faculdade Integrada do Recife João Ferreira 5 e 6 de março de 2007

Compilação: Erros. Detecção de Erros: * Analisadores Top-Down - Preditivo Tabular (LL) - Feito a mão. * Analisadores Botton-Up: - Shift-Reduce (SLR)

Estruturas de Dados. Parte dos slides a seguir são adaptações, extensões e traduções para C dos originais:

Sumário. INF01040 Introdução à Programação. Elaboração de um Programa. Regras para construção de um algoritmo

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

Análise Sintática I. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 42

Árvores. Algoritmos e Estruturas de Dados 2005/2006

COMPILADORES. Análise sintática. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática

ES-II. Diagrama de Fluxo de Dados. Elementos do DFD. Níveis de representação do DFD. Convenções para ES-II. TE p/ análise orient.

Prática 6 ActionScript

Avaliação de Expressões

FERRAMENTA DE APOIO A REESTRUTURAÇÃO DE CÓDIGO FONTE EM LINGUAGEM PL/SQL BASEADO EM PADRÕES DE LEGIBILIDADE

PYTHON LISTAS. Introdução à Programação SI2

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: Prof. Dr. Raimundo Moura

Árvores e Árvores Binárias

Figura 1 Busca Linear

EAD Árvore - representação usando listas ligadas

Análise sintática. Análise sintática. Top-down ou descendente. Com retrocesso: por tentativa e erro. Preditiva: para gramáticas LL(1) 09/04/2012

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

Árvore Binária de Busca

Análise sintática. Questão. E se a análise sintática pudesse ser modelada por autômatos?

Curso Técnico em Redes

ANÁLISE DE CIRCUITOS RESISTIVO DC (03/12/2013)

INE5317 Linguagens Formais e Compiladores. AULA 2: Es trutura geral dos Compiladores

Capítulo 2. VARIÁVEIS DO TIPO INTEIRO

Um Compilador Simples. Definição de uma Linguagem. Estrutura de Vanguarda. Gramática Livre de Contexto. Exemplo 1

ESTRUTURAS DE DADOS II MSc. Daniele Carvalho Oliveira

Ligação com Sage Retail XDPEOPLE

Planificação. Apreender conceitos sobre a lógica de programação. Aplicar instruções e sequências lógicas na resolução de problemas

Programação de Computadores I Pseudocódigo PROFESSORA CINTIA CAETANO

Transcrição:

Plano da aula Compiladores Análise bottom-up AKA: Analisador ascendente Analisador empilhar/reduzir Análise sintática (4) Análise Bottom-Up Autômatos mpilhar/reduzir xemplos Handle Operações básicas IQuestões a serem tratadas Gramática LR 1 Tabelas LR. 2 Top-Down x Bottom Up ε Top-Down AB cb ccbb ccbca AB A c B cbb B ca Bottom-Up ccbca Acbca AcbB AB A c B ca B cbb AB 3 4 5 6

7 8 aabe aabe 9 10 11 12

+ id + id id 13 14 + id id + id id 15 16 Análise bottom-up Handle Considerando uma leitura da esquerda para a direita, a análise bottom-up procura a encontrar o inverso da derivação mais a direita. Deve-se identicar a forma sentencial corrente a ser reduzida para sua forma sentencial anterior. Noção de Handle Definição Um handle de uma forma sentencial mais a direita é uma produção A e uma posição de, onde o string pode ser encontrado e substituido por A para produzir a forma sentencial de. Ou seja: se A w 17 Handles: Análise bottom-up Handle É uma subcadeia que reconhece o lado direito de uma produção e cuja redução ao não terminal do lado esquerdo da produção representa um passo ao longo do percurso de uma derivação mais a direita. xemplo: = A w 18

Analisador bottom-up strutura Básica A análise Bottom-Up vai necessitar: Uma pilha para guardar os símbolos Um buffer de entrada para a sentença w a ser reconhecida. Cadeia de tokens de entrada a 1... a i... a n s m X m s m-1 X m-1. s 0 tc topo Análise LR Tabela sintática (ações e desvios) aída 19 Operações lícitas: empilha (sht): coloca no topo da pilha o símbolo que está sendo lido e avança o cabeçote de leitura na string reduz (reduce): substitui o handle no topo da pilha pelo não terminal correspondente aceita: reconhece que a sentença foi gerada pela gramática erro: ocorrendo erro de sintaxe, chama uma subrotina de atendimento a erros 20 ht-reduce Problemas na análise Motivados por: A gramática é ambígua e a entrada aponta uma situação A entrada não é ambígua, mas não é possível determinar a seqüencia da análise pela entrada dada. 21 Ocorre quando um handle foi obtido, mas o conteúdo da pilha e o próximo símbolo de entrada não permitem identicar a produção a ser utilizada na redução. xemplo: sintaxe similar para chaa de procedimentos e acesso arrays proccall id ( parlist ) parlist parlist, par par par id arrayexp id ( explist ) explist explist, exp exp exp id Produções elegíveis ntrada: id ( id, id ) id, id ) ( id ntrada 22 Ocorre quando um handle foi obtido, mas o conteúdo da pilha e o próximo símbolo de entrada não permitem identicar a produção a ser utilizada na redução. xemplo: sintaxe similar para chaa de procedimentos e acesso arrays proccall id ( parlist ) parlist parlist, procpar procpar procpar id arrayexp id ( explist ) explist explist, exp exp exp id ntrada: id ( id, id ) id, id ) ( ntrada ht-reduce Não é possível determinar se deve ser executada um sht ou uma redução. xemplo: --else else id Alternativa 23 24 else... ntrada

ht-reduce Não é possível determinar se deve ser executada um sht ou uma redução. xemplo: --else else Resolução do conflito mpilhar, associando o else ao sem else mais interno. Note que não é uma solução genérica. else... ntrada 25 xemplo de operação ntrada Ação sht Reduce id () sht id + id id sht ntrada: +id id Reduce id + id Reduce id sht id sht id Reduce id Reduce ACITA 26 Algoritmo Reduz e: está na pilha A existe um T tal que A ntão: Pode-se remover o handle ; Reduz-se para A na pilha é um prefixo viável le pode derivar numa seqüência de terminais ht (empilha) mpilhar o terminal, avançar entrada rro Livro do dragão, eção 4.5 Bibliografia Atenção, na edição em português há um erro. Na página 87, primeira coluna, no parágrafo que começa com Formalmente, um handle de uma forma... aparece: A w b w mas o correto é: A w w Price & Toscani, eção 3.3 (até página 58) Aceitar 27 28