Análise Contextual Mauro Araújo Teoria e Implementação de Linguagens Computacionais - IF688 Centro de Informática – CIn Universidade Federal de Pernambuco.

Slides:



Advertisements
Apresentações semelhantes
Tópicos em Compiladores
Advertisements

gerador de código intermediário
Estruturas de Controle
Compiladores Claudio Benossi
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:
I - Noções dum compilador
Compiladores I Cristiano Damiani Vasconcellos
Software Básico Silvio Fernandes
Algoritmos e Programação Linguagens de Programação Teoria Aula (09/06)
Carlos R. M. Junior Eduardo Motta
Introdução à Compilação Prof. Leandro Magno Slides adaptados a partir do material cedido pelos professores Heloise Manica Paris Teixeira, Yandre M. G.
Prof. Heloise Manica Paris Teixeira
Linguagem C Estruturas de Controle de Fluxos
Análise Sintática Ascendente
Construção de Compiladores
Construção de Compiladores
Aula 4 Nomes, Vinculações, Tipos e Escopos
LINGUAGEM C Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo.
PROGRAMAÇÃO ou LINGUAGEM C?
Prof. Msc. Raul Paradeda Aula 3 Fundamentos
Tópicos Tipos de Dados Variáveis por Valor Variáveis por Referência
Análise Semântica e Representação Intermédia
PROGRAMAÇÃO I UNIDADE 1.
Análise léxica e sintática
Aula prática 13 Orientação a Objetos – C++ Parte 1
Aula prática – geração de código (.NET)
Aula prática - análise contextual
Eric, Fabrício, João Vicente
Linguagem C++ - Introdução
Introdução à Programação Orientada a Objetos com Java
Teoria e Implementação de Linguagens Computacionais
O Processo de Compilação
Teoria e Implementação de Linguagens Computacionais – IF688
Estudo dos Conceitos e Paradigmas de Programação
Expressões e Instrução de Atribuição
Semântica de Linguagens de Programação
Análises léxica e sintática
Paradigmas de Linguagens de Programação Linguagem Imperativa 1
SableCC José Francisco Pereira Equipe de Monitores
Linguagem de Expressões 2
Augusto Sampaio e Paulo Borba Centro de Informática
Augusto Sampaio e Paulo Borba Centro de Informática
Geração de Código Teoria e Implementação de Linguagens Computacionais – IF688 Jobson Ronan Jeronimo da Silva
Análise Léxica Primeira fase de um compilador
Análise Léxica e Sintática
Técnicas de Desenvolvimento de Programas
Análise Léxica.
Capítulo II Gramáticas e Linguagens
Analise sintática aula-07-analise-sintática.pdf.
Capítulo VIII Ambientes de Execução
Análises léxica e sintática
Analise Semântica aula-10-analise-semântica.pdf.
Projeto de Tradutor Preditivo. Introdução Introdução Esquemas L-atribuidos são reconhecidos por analisadores Top-Down. Entre estes analisadores, se encontra.
Geração de Código Equipe de Monitores Teoria e Implementação de Linguagens Computacionais – IF688.
Estruturas de Dados Aula 6: Cadeias de Caracteres
AST no ANTLR Teoria e Implementação de Linguagens Computacionais - IF688 Allan J. Souza
Semântica de Linguagens de Programação
Compiladores – IF688 Professor: André Santos
Paradigmas de Linguagens de Programação Conceitos da Linguagem Imperativa 1 Augusto Sampaio e Paulo Borba Centro de Informática Universidade Federal de.
SISTEMAS DE INFORMAÇÃO
PLP – JavaCC Java Compiler Compiler
Teoria e Implementação de Linguagens Computacionais Revisão 1º EE André Ricardo Schäffer Lopes – Rodrigo Diego Melo Amorim–
Padrão Visitor Paulo Mauricio Gonçalves Jr Rodrigo Teixeira Ramos Paradigmas de Linguagens de Programação Prof. Augusto Sampaio Julho de 2003.
Compilador Software que traduz o texto (linguagem fonte) que representa um programa para código máquina(linguagem alvo) capaz de ser executado pelo.
Faculdade Pernambuca - FAPE Compiladores Abril/2007 Compiladores Abril/2007.
COMPILADORES 03 Prof. Marcos.
Análise Contextual Tem o objetivo de verificar se o programa está de acordo com as restrições contextuais da linguagem fonte.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Transcrição da apresentação:

Análise Contextual Mauro Araújo Teoria e Implementação de Linguagens Computacionais - IF688 Centro de Informática – CIn Universidade Federal de Pernambuco – UFPE

Roteiro Visão Geral Introdução Identificação Ambiente Padrão Verificação de Tipos Decoração da AST Padrão Visitor

Visão Geral executável Análise sintática Código fonte AST Análise semântica Geração de código AST decorada Análise léxica Tokens

Introdução Fase da compilação responsável por verificar se o código fonte satisfaz as restrições contextuais de uma linguagem Identificação Verificação de tipos

Identificação Verifica o escopo dos identificadores de um programa Ocorrências de declaração Ocorrências de aplicação Pode representar um gargalo se mal implementado

Identificação Estrutura de blocos aninhada Definição de níveis de escopo Nenhuma variável pode ser declarada duas vezes no mesmo bloco void method(int a){ int b = 7; if(a > 3){ int b = 0; if(b < 5){ b--; } } else { a--; } while(a > 5){ a++; }

Identificação Tabela de símbolos Associa um identificador com informações relevantes para a análise contextual Escopo de validade Informações sobre a sua declaração  Geralmente um ponteiro para a sub-árvore que representa a declaração

Identificação Durante a análise de cada escopo são colocadas na tabela de símbolos entradas referentes às declarações do mesmo Ao se abandonar um dado escopo, os identificadores do mesmo deixam de fazer parte da tabela Nas ocorrências de aplicação faz-se a busca pela entrada que possuir maior nível de escopo

Identificação escopoIdentificadorDeclaração 1a 2a 2b

Ambiente padrão Corresponde a recursos (bibliotecas) oferecidos pela linguagem sem a necessidade de referência explícita do programador java.lang, Prelude,... Tabela de símbolos criada com tal ambiente

Verificação de Tipos Tipos estáticos e dinâmicos Regras de tipo Inferência de tipos em expressões T 1 × T 2  T 3 T 1  T 2

Decoração da AST Tem o objetivo de tornar a AST uma estrutura auto-contida Eliminação da tabela de símbolos Anotação dos tipos no nós da AST Criação de links entre ocorrências de aplicação e declarações

Decoração da AST VariableDeclaration 3 + x x Inteiro VariableDeclaration BinExpr InteiroLiteral + identifier x Inteiro x 3

O Padrão Visitor Padrão comportamental Representa uma operação a ser executada sobre os elementos de uma estrutura de objetos Novas operações podem ser definidas sem mudar as classes dos elementos sobre os quais opera

O Padrão Visitor

Análise Contextual Mauro Araújo Teoria e Implementação de Linguagens Computacionais - IF688 Centro de Informática – CIn Universidade Federal de Pernambuco – UFPE