Análise Semântica e Representação Intermédia

Slides:



Advertisements
Apresentações semelhantes
Funções em C Prof. Fabiano Utiyama.
Advertisements

Python: Funções Claudio Esperança.
Parte 1: Organização de Computadores
C/C++ para Sistemas Operacionais Professor: André Luis Meneses Silva /msn: Página:
gerador de código intermediário
Introdução à Ciência da Computação Linguagens de Programação.
Capítulo II – Algoritmos e Programas
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.
Design Patterns Interpreter
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
Linguagens de programação
Expressões, controle de fluxo, wrappers e strings Profa
Análise Léxica Supondo o trecho de programa abaixo:
Construção de Compiladores
Construção de Compiladores
Arquitetura de Computadores
Introdução a Linguagem de Programação C
Revisão da Linguagem C.
Análise Semântica e Representação Intermédia
Análise Semântica e Representação Intermédia
Aula prática - análise contextual
Curso de Nivelamento LCG
1 Ponteiros Ponteiros são variáveis que guardam localizações em memória. A declaração de uma variável ponteiro x para um dado tipo type é type *x; Essa.
Aula 3©Universidade do Algarve 1 Do alto-nível ao assembly Compiladores, Aula Nº 3 João M. P. Cardoso.
Compiladores, Aula Nº 11 João M. P. Cardoso
Compiladores, Aula Nº 9 João M. P. Cardoso
Conceitos de Linguagem de Programação
Eric, Fabrício, João Vicente
Compiladores, Aula Nº 10 João M. P. Cardoso
Organização do Ambiente de Execução (Runtime System)
Teoria e Implementação de Linguagens Computacionais – IF688
Estudo dos Conceitos e Paradigmas de Programação
Expressões e Instrução de Atribuição
Paradigmas de Linguagens de Programação Linguagem Imperativa 1
DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.
Java Bytecode Software Básico Mitsuo Takaki.
Aula 14 1 Análise Sintáctica Compiladores, Aula Nº 14 João M. P. Cardoso.
Estruturas de Dados Aula 2: Estruturas Estáticas 07/04/2014.
Geração de Código aula-12-geração-de-código.pdf.
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Capítulo VIII Ambientes de Execução
Técnicas de Programação - TPR
Analise Semântica aula-10-analise-semântica.pdf.
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Projeto de Tradutor Preditivo. Introdução Introdução Esquemas L-atribuidos são reconhecidos por analisadores Top-Down. Entre estes analisadores, se encontra.
Algumas notas sobre a linguagem de programação C
MSc. Marcelo Torres – professortorres.com.br. Linguagem de Programação 01 - Introdução à Linguagem C MSc. Marcelo Torres – professortorres.com.br.
Aula 12 1 Análise Sintáctica Compiladores, Aula Nº 12 João M. P. Cardoso.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Tradução Dirigida por Sintaxe
Aula Prática 3 Funções Monitoria Introdução à Programação.
Aula 18 1 Análise Sintáctica Compiladores, Aula Nº 18 João M. P. Cardoso.
Faculdade Pernambucana - FAPE Setembro/2007
Aula Prática 3 Funções Monitoria Introdução à Programação.
Aula 4©João M. P. Cardoso 1 Anatomia de um Compilador Compiladores, Aula Nº 4 João M. P. Cardoso.
Aula Prática 5 Monitoria IP/CC (~if669). Roteiro 1. 1.Recursão 2. 2.Escopo de Variáveis 3. 3.Arrays 4. 4.Strings.
COMPILADORES 04 Prof. Marcos.
Geração de Código Fase final do compilador
Bruno Inojosa MCP .NET Framework
Prof. Marcos LABORATÓRIO DE PRÁTICA DE PROGRAMAÇÃO 06.
Sintaxe de uma Linguagem
Tipos de dados básicos em C++ –Formato geral para declaração de variáveis: ; = ;,,... ; =, = ; –O elemento da declaração indica o tipo de dado usado para.
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 07 Prof. Marcos.
Tipo Abstrato de Dados (TAD) Estrutura de Dados Professor: Rodrigo Alves Sarmento Professor: André Cypriano.
Estrutura de Dados Prof. André Cypriano M. Costa
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Lógica de Programação Aula 06 Prof. Marcelo Marcony.
Transcrição da apresentação:

Análise Semântica e Representação Intermédia Compiladores, Aula Nº 21 João M. P. Cardoso Aula 21

Descritores O que contêm? Informação utilizada para geração de código e análise semântica Descritores locais - nome, tipo, offset na pilha Descritores de funções assinatura (tipo do valor retornado, e parâmetros) Referência à tabela de símbolos local Referência ao código para a função Aula 21

Parâmetros, Local, e Descritores de Tipos Parâmetros, Local referem a descritores de tipo Descritor de tipo base: int, boolean, etc. Descritor de tipo de array, que contém referência ao descritor de tipo para os elementos do array Descritor de estrutura, etc. Aula 21

Exemplo: Tabela de Símbolos para Tipos int Descritor de int int [] Descritor de array boolean Descritor de boolean boolean [] Descritor de array Descritor de estrutura para vector vector [] Descritor de array Aula 21

Descritores de funções Contêm referência para o código da função Contêm referência para a tabela de símbolos local (para as variáveis locais da função) Na hierarquia de tabelas de símbolos, a TS para os parâmetros é mãe da TS para as variáveis locais Aula 21

Descritor de função para add TS para parâmetros N Descritor de parâmetro x Descritor de parâmetro v Descritor de parâmetro Descritor de função para add TS de variáveis locais Descritor de variável local i Código para a função add Aula 21

O que é uma árvore sintáctica? Árvore sintáctica guarda resultados da análise sintáctica Nós externos são terminais/tokens Nós internos são não-terminais Aula 21

Árvores abstractas versus concretas Relembrar modificações à gramática Factorização à esquerda, eliminação de ambiguidade, precedências dos operadores Modificações levam a uma árvore que não reflecte uma interpretação do programa intuitiva e clara Pode ser mais conveniente trabalhar com a AST (pode ser vista como a árvore sintáctica representativa da gramática sem as modificações modificações) Aula 21

Construções alternativas para Representações Intermédias Construir a árvore sintáctica concreta, traduzir para AST, traduzir para representação intermédia Construir a árvore sintáctica abstracta, traduzir para representação intermédia Incluir a construção da representação intermédia durante a análise sintáctica Elimina a construção intermédia da árvore sintáctica – melhora performance do compilador Menos código a escrever Aula 21

Tabela de Símbolos Dada uma árvore sintáctica (abstracta ou concreta) Atravessar recursivamente a árvore Construir a tabela de símbolos enquanto a travessia da árvore decorre Aula 21

Escopos aninhados Várias formas de aninhamento TS das funções aninhadas na TS dos globais TS de locais aninhada dentro da TS da função Aninhamento resolve ambiguidade em possíveis conflitos Mesmo nome utilizado para uma variável global e uma variável local Nome refere uma variável local dentro da função Aula 21

Escopos aninhados de código TS podem ter profundidade arbitrária com base no aninhamento do código: boolean x; int foo(int x) { double x = 5.0; { float x = 10.0; { int x = 1; ... x ...} ... x ... } Nota: Conflitos de nomes com aninhamento podem reflectir erros no programa. Os compiladores geram mensagens de aviso em presença de conflitos deste tipo. Aula 21

Representação de código em nível alto Ideia básica Movimento em direcção à linguagem assembly Preservar a estrutura de nível alto Formato de objectos Fluxo de controlo estruturado Distinção entre parâmetros, variáveis locais, e campos Abstracção de nível alto da linguagem assembly Nós load e store Acesso a armazenamento local abstracto, parâmetros e campos, e não posições de memória directamente Aula 21

Representação de expressões Árvores de expressões representam as expressões Nós internos – operações como: +, -, etc. Folhas – Nós Load representam acesso a variáveis Nós Load ldl para acesso a variáveis locais – descritor de locais ldp para acessos a parâmetros – descritor de parâmetros lda para acesso a arrays Árvore da expressão para o valor Árvore de expressão para o índice Para acesso a atributos de uma classe ou campos de estruturas... Aula 21

Exemplo x e y são variáveis locais x*x + y*y + * * ldl ldl ldl ldl Descritor de local para x Na tabela de símbolos locais Descritor de local para x Na tabela de símbolos locais Aula 21

Exemplo v[i]+x + lda ldp ldp ldl v é uma array passado como argumento da função add i é uma variável local x é um argumento da função v[i]+x + lda ldp ldp ldl Descritor de parâmetro para x na tabela de símbolos de parâmetros da função add Descritor local para I na tabela de símbolos locais da função add Descritor de parâmetro para v na tabela de símbolos de parâmetros da função add Aula 21

Representação de enunciados de atribuição Nós Store stl para stores em variáveis locais Descritor local Árvore da expressão para o valor a guardar sta para stores em elementos de arrays Árvore da expressão para o array Árvore da expressão para o índice Para stores em atributos de classes ou campos de estruturas... Aula 21

Exemplo v[i]=v[i]+x; sta + ldp ldl lda ldp ldp ldl Descritor do parâmetro para v na tabela de símbolos dos parâmetros da função add Descritor do parâmetro para x na tabela de símbolos dos parâmetros da função add Descritor local para I na tabela de símbolos locais da função add Aula 21

Orientação Representações intermédias Movimento em direcção à linguagem máquina Suporte para análises do programa e acções de transformação IR (intermediate representation) de nível alto Preserva estruturas de objectos e de arrays Tabelas de símbolos Descritores Aula 21