Compiladores. Análise Semântica

Documentos relacionados
15/03/2018. Professor Ariel da Silva Dias Aspectos sintáticos e semânticos básicos de linguagens de programação

Compiladores. Conceitos Básicos

Compiladores. Introdução

Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores

Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores

Linguagens de Programação Aula 3

Compiladores. Análise Léxica

INE5421 LINGUAGENS FORMAIS E COMPILADORES

Introdução parte II. Compiladores. Mariella Berger

Paradigmas de Linguagem de Programação

Como construir um compilador utilizando ferramentas Java

Introdução à Programação

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

FACULDADE LEÃO SAMPAIO

INE5318 Construção de Compiladores. Ricardo Azambuja Silveira INE CTC UFSC E Mail: URL:

Paradigmas de Linguagem de Programação. Aspectos Básicos

Projeto de Compiladores

Introdução aos Compiladores

Conceitos de Linguagens de Programação

Universidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação

Análise semântica. Função, interação com o compilador Tabela de símbolos Análise semântica. Prof. Thiago A. S. Pardo

Compiladores I Prof. Ricardo Santos (cap 1)

Compiladores Aula 1. Celso Olivete Júnior.

COMPILAÇÃO. Ricardo José Cabeça de Souza

PROGRAMAÇÃO I. Introdução

Ferramentas Programação. UDESC - Prof. Juliano Maia 1

Algoritmos e Introdução à Programação. Lógica e Linguagem de Programação

Conceitos Básicos de Programação

CAP. VI ANÁLISE SEMÂNTICA

Linguagens de Programação Conceitos e Técnicas. Amarrações Prof. Tiago Alves de Oliveira

Linguagem de Programação e Compiladores

Trabalho Linguagem e Programação de Compiladores

FERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS

Paradigmas de Programação

Compiladores. Prof. Bruno Moreno

Compiladores. Introdução à Compiladores

Construção de Compiladores. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2014.

Projeto de Compiladores

Desenvolvimento de Aplicações Desktop

Conclusões. Baseado no Capítulo 9 de Programming Language Processors in Java, de Watt & Brown

Introdução. Tradutores de Linguagens de Programação

Conceitos de Linguagens de Programação

Especificações Gerais do Compilador e Definição de FRANKIE

SEMÂNTICA. Rogério Rocha. rode = program simples = var x : int := 3 in x := x + 5 end.

Conceitos de Linguagens de Programação

Análise semântica. Função, interação com o compilador Tabela de símbolos Análise semântica. Prof. Thiago A. S. Pardo

Nomes, vinculações e escopos

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Síntese. Prof. Geovane Griesang

Paradigmas de Programação

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

Nomes, vinculações e escopos

Compiladores. Fabio Mascarenhas

Linguagens de Programação Conceitos e Técnicas. Amarrações

Noções de compilação

Noções de compilação

Questão 1 Analise o trecho do código abaixo, escrito na linguagem C#:

Visão Geral... e conceitos básicos

Introdução. Compiladores Análise Semântica. Introdução. Introdução. Introdução. Introdução 11/3/2008

Aula 23: Noções de Compilação, Montagem, Link-edição, e Interpretação

Linguagem de Programação I. Aula 10 Funções

Programação de Sistemas (Sistemas de Programação) Semana 10, Aula 17

ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO

Introdução à Programação. Introdução a Linguagem C. Prof. José Honorato F. Nunes

Aula teórica 7. Preparado por eng.tatiana Kovalenko

EA876 - Introdução a Software de Sistema

Projeto de Linguagem. Linguagens de Programação

Linguagens e Compiladores

Conteúdo. Introdução a compiladores Tradução x Interpretação Processo de Compilação

Introdução a Programação de Jogos

Lembrando análise semântica. Compiladores. Implementação de esquemas de tradução L-atribuídos. Exemplo de implementação top-down (1)

Detalhes da geração de código Usando a técnica ad hoc, amarrada aos procedimentos sintáticos, igual à análise semântica

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Introdução à Programação

Compiladores Ambiente de Execução

Linguagens de Programação

Prof. Adriano Maranhão COMPILADORES

PLANO DE UNIDADE DIDÁTICA- PUD

Laboratório de programação II

Linguagens de Programação

INE5622 INTRODUÇÃO A COMPILADORES

Algoritmos e Programação

Compiladores. Análise Léxica

Fundamentos de Lógica e Algoritmos Aula 2.5 Conceitos Básicos de Algoritmos. Prof. Dr. Bruno Moreno

Programação: Compiladores x Interpretadores PROF. CARLOS SARMANHO JR

Linguagens de Programação Aula 5

SEMÂNTICA 02/09/2013. Conceitos de LPs - Semântica

Métodos de implementação de linguagens. Kellen Pinagé

Capítulo 6: Linguagens de Programação

Nomes, Amarração, Verificação de Tipos, e Escopo

Universidade Federal do ABC Rua Santa Adélia, Bairro Bangu - Santo André - SP - Brasil CEP Telefone/Fax:

Aspectos preliminares

Linguagens de Programação Aula 11

INF 1005 Programação I

Revisão. Fases da dacompilação

Aula 2 - Introdução Cleverton Hentz

Linguagens de Programação Classificação

Transcrição:

Compiladores Análise Semântica

Análise semântica A semântica define o significado dos programas sintaticamente corretos; Por exemplo, em C, a instrução if(a>b) max = a; else max = b; Diz que a expressão a>b deve ser avaliada e, dependendo do retorno (true ou false), um dos dois comandos de atribuição será executado.

Análise semântica Regras sintáticas: mostram como formar o comando; Regras semânticas: mostram qual é o efeito do comando; Erros semânticos tipos inválidos - o programa dá um resultado, mas não é correto! o computador não advinha o que eu quero logo: o programa que escrevi não resolve o problema pretendido os erros semânticos são os mais difíceis de corrigir

Análise semântica Conceitos semânticos básicos de uma LP Variáveis: questões semânticas associadas a declaração (escopo, tipo e tempo de vida); Valores e Referência: se o valor associado a variável denota localização na memória ou conteúdo localizado na memória; Expressões: possuem regras para serem escritas envolvendo os tipos de expressões permitidas;

Análise semântica Abstração Processo de identificar apenas as qualidades ou propriedades relevantes do fenômeno que se quer modelar; As LP são as ferramentas com as quais os programadores podem implementar os modelos abstratos; Por outro lado, as próprias LP são abstrações do processador subjacente;

Análise semântica Abstração Sugere a distinção que deve ser feita entre o que o programa faz e como ele é implementado ; Quando um procedimento é chamado, pode-se concentrar apenas no que ele faz; Quando se está escrevendo o procedimento deve-se concentrar em como implementálo; As primeiras abstrações foram o uso de mnemônicos em assembly;

Análise semântica Programas trabalham com entidades Entidades: Variáveis, rotinas e comandos; As entidades dos programas possuem propriedades chamadas atributos; Os valores dos atributos devem ser definidos antes de sua utilização.

Análise semântica A definição do valor de um atributo é conhecida como amarração ou binding;

Análise semântica Amarração estática: A amarração é estabelecida antes do tempo de execução e não pode ser alterada depois; Exemplo: um conjunto de valores é amarrado ao tipo inteiro no tempo de implementação da linguagem, assim, a definição da linguagem específica que o tipo inteiro deve ser suportado e a implementação da linguagem amarra-o à representação da memória.

Análise semântica Amarração dinâmica: A amarração é estabelecida em tempo de execução. Exemplo: as variáveis são amarradas a um valor em tempo de execução;

Exemplo Analise os códigos abaixo e identifique os erros em léxico, sintático e semântico: int I2, A@; I2 = 0; while(i2 <= 0); I = I+1; I2 = a ; int a, b c; a = 2; b := 3; c = 4; media = (a+b+c)/3;

total = num1 + num2 * 50 Analisador Léxico Fases da compilação

Fases da compilação total = num1 + num2 * 50 Analisador Léxico (id,1)(=>(id,2)(+>(id,3)(*>(50>

Fases da compilação total = num1 + num2 * 50 Analisador Léxico (id,1)(=>(id,2)(+>(id,3)(*>(50> Analisador Sintático = (id,1) + (id,2) * (id,3) 50

Fases da compilação total = num1 + num2 * 50 Analisador Léxico (id,1)(=>(id,2)(+>(id,3)(*>(50> Analisador Sintático = (id,1) + (id,2) * (id,3) 50 Analisador Semântico = (id,1) + (id,2) * (id,3) atof(50)

Fases da compilação total = num1 + num2 * 50 Analisador Léxico (id,1)(=>(id,2)(+>(id,3)(*>(50> Analisador Sintático = (id,1) + (id,2) * (id,3) 50 Analisador Semântico = (id,1) + (id,2) * (id,3) atof(50) Gerador de Código Intermediário t1 = atof(50) t2 = id3 * t1 t3 = id2 + t2 id1 = t3

Fases da compilação total = num1 + num2 * 50 Analisador Léxico (id,1)(=>(id,2)(+>(id,3)(*>(50> Analisador Sintático = (id,1) + (id,2) * (id,3) 50 Analisador Semântico = (id,1) + (id,2) * (id,3) atof(50) Gerador de Código Intermediário t1 = atof(50) t2 = id3 * t1 t3 = id2 + t2 id1 = t3 Otimizador de Código t1 = id3 * 50.0 id1 = id2 + t1

Fases da compilação total = num1 + num2 * 50 Analisador Léxico (id,1)(=>(id,2)(+>(id,3)(*>(50> Analisador Sintático = (id,1) + (id,2) * (id,3) 50 Analisador Semântico = (id,1) + (id,2) * (id,3) atof(50) Gerador de Código Intermediário t1 = atof(50) t2 = id3 * t1 t3 = id2 + t2 id1 = t3 Otimizador de Código t1 = id3 * 50.0 id1 = id2 + t1 Gerador de Código LDF R2,id3 MULF R2, R2, #50.0 LDF R1, id2 ADDF R1, R1, R2 STF id1, R1

Referências SEBESTA, Robert W. Conceitos de linguagens de programação. 9ª ed. Porto Alegre: Bookman, 2011. 792 p. ISBN 978-85-7780-791-8. Notas de aula Professora Isabel Harb Manssour