Analise Semântica aula-10-analise-semântica.pdf.

Slides:



Advertisements
Apresentações semelhantes
Análise e Projeto de Sistemas I
Advertisements

gerador de código intermediário
Introdução à Ciência da Computação Linguagens de Programação.
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.
I - Noções dum compilador
Software Básico Silvio Fernandes
Universidade Federal de São Carlos Introdução à Linguagem C Comandos.
Algoritmos e Estrutura de Dados I
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
YACC.
Lex e Yacc.
Linguagem de Prog. e Programas
Análise Léxica Supondo o trecho de programa abaixo:
Universidade Federal da Paraíba Departamento de Informática Construção de Compiladores Verificação de Tipos.
Construção de Compiladores
Prof. Msc. Raul Paradeda Aula 3 Fundamentos
Contratos Modelagem Funcional.
Algoritmos e Programação
O Portal do Estudante de Computação
Prof. Bruno Moreno Aula 4 – 11/03/2011
Análise Semântica e Representação Intermédia
PROGRAMAÇÃO I UNIDADE 1.
Aula prática - análise contextual
Eric, Fabrício, João Vicente
Gramáticas Livres de Contexto
Operadores Relacionais, Lógicos e comandos de condição
Análise e Projeto de Sistemas
Verificação de Tipos e Escopos
Estudo dos Conceitos e Paradigmas de Programação
DI UFPE Semântica de Java Java and the Java Virtual Machine - Definition, Verification, Validation Robert Stark, Joachim Schmid, and Egon Borger Wolfram.
Semântica de Linguagens de Programação
Análise Léxica.
Capítulo II Gramáticas e Linguagens
Analise sintática aula-07-analise-sintática.pdf.
Faculdade Talentos Humanos - FACTHUS - Algoritmo I - Rogério Rodrigues
Geração de Código aula-12-geração-de-código.pdf.
Paradigmas de Linguagens de Programação Aula 2
Ruby (2/2) André Braga Patrícia Lustosa. Intro Peguem a aula de ontem em /~plvr para ter como referência para os exercícios de hoje.
Projeto de Linguagens de Programação
Operadores Relacionais e Lógicos
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
Análise Sintática Prof. Alexandre Monteiro
Tradução Dirigida por Sintaxe
CES-41 COMPILADORES Aulas Práticas Capítulo II A Ferramenta Yacc.
Back-End Compilação aula-11-back-end.pdf.
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.
Introdução aos Computadores e Programação DI-FCT-UNL-2003/2004
Faculdade Pernambucana - FAPE Setembro/2007
COMPILADORES 04 Prof. Marcos.
Uma Infraestrutura para a
Fundamentos de linguagens de programação
Geradores de analisadores léxicos
Semântica de Linguagens de Programação
Compiladores – IF688 Professor: André Santos
Métodos Formais Juan Andrés Mussini.
Programação Computacional Aula 9: Meu primeiro programa em C
SISTEMAS DE INFORMAÇÃO
Introdução a linguagem de Programação Java. Linguagens de Programação Linguagens de máquina(muito difíceis de usar e compreender) – Comanda ações do computador.
Faculdade Pernambuca - FAPE
Análise Semântica e Representação Intermédia
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.
MATA56 Tipos, Verificação de Tipos Agenda Objetivo desta aula: Introduzir os principais aspectos semânticos de variáveis Palavras-chave – nomes.
Programação para Web I AULA 2 BANCO DE DADOS.
COMPILADORES 03 Prof. Marcos.
Análise Contextual Mauro Araújo Teoria e Implementação de Linguagens Computacionais - IF688 Centro de Informática – CIn Universidade Federal de Pernambuco.
Lógica de Programação Aula 06 Prof. Marcelo Marcony.
Transcrição da apresentação:

Analise Semântica aula-10-analise-semântica.pdf

Analise Semântica Até o momento vimos a etapa de análise léxica - que quebra o programa fonte em tokens. E a análise sintática - que validas as regras de formação da linguagem de programação. A semântica de um programa está diretamente ligada ao seu significado. A análise semântica é a terceira etapa do processo de compilação e é nesse memento que ocorre a validação de verificação de erros semânticos que até então não podem ser verificados pelas etapas anteriores.

Analise Semântica Frase: Não é possível representar em uma gramática livre de contexto uma regra como "Todo identificador deve ser declarado antes de ser usado", isso resume muito bem o que deve ser feito na análise semântica

Analise Semântica O analisador semântico utiliza a árvore sintática produzida na etapa de analise sintática e a tabela de símbolos produzida e incrementada desde o início do processo de compilação. Toda essa estrutura é utilizada gerar uma arvore de sintática e uma tabela de símbolos mais elaborada e adaptada para as próximas etapas que compreendem as tarefas do back-end do processo de compilação e que tratam da geração do código em si.

Principais erros semânticos Escopo dos identificadores: Deve garantir que variáveis e funções estejam declaradas em locais que podem ser acessados onde esses identificadores estão sendo utilizados. Exemplo: Em uma classe funções declaradas como privadas estão sendo utilizadas fora da classe. Compatibilidade de tipos: Verificar se os tipos de dados declarados a variáveis e funções estão sendo utilizados e atatribuidos corretamente. Exemplo: variável declaração como Numérica está recebendo um valor Literal.

Principais erros semânticos Mecanismo de passagem de parâmetros: Também é verificado através dessas ações semânticas, verificação de tipos de paramentos e quantidade de parâmetros. Detectar unicidade de nomes de identificadores: Por exemplo variáveis com o mesmo nome no mesmo escopo não deve ser permitido. Detectar o uso correto de comandos de controle de fluxo: Como exemplo temos os comandos continue e break.

Lembrete A análise semântica verifica erros semânticos no programa fonte e captura informações para as fases subsequentes que tratam da geração do código objeto. Utiliza a estrutura hierárquica criada na fase de análise sintática a fim de identificar operadores e operações e enunciados de expressões. Um importante componente da analise semântica é a verificação de tipos, nela o compilador verifica se cada operador recebe os operandos permitidos e especificados na linguagem fonte. Um exemplo que ilustra muito bem essa etapa de validação de tipos é a atribuição de objetos de tipos ou classe diferentes.

Curiosidade Em alguns casos, o compilador realiza a conversão automática de um tipo para outro que seja adequado à aplicação do operador. Por exemplo a expressão

Erros semânticos Veja o exemplo de um código em Object Pascal:

Erros semânticos No exemplo acima o analisador semântico de ter uma series e preocupações para validar o significado de cada regra de produção. Vamos utilizar como exemplo a regra de produção de atribuição

Erros semânticos O analisador semântico deve fazer as seguintes validações O identificador C foi declarado? O identificador C é uma variável? Qual o escopo da variável C? Qual é o tipo da variável C? O tipo da variável C é compatível com os demais identificadores, operadores?

TAE – Exercício para entrega

Tradução dirigida por sintaxe Esse processo é implementado associando-se a cada execução de uma regra da gramatical (execução do analisador sintático) uma ação semântica. Essas ações semânticas são frequentemente implementadas a chamadas de rotinas semânticas, e podem ser responsáveis por efetuar a análise semântica, geração de código, armazenamento de informações na tabela de símbolos.

Exercício para entrega Fazer uma pesquisa sobre a técnica de Tradução Dirigida por Sintaxe e elaborar um resumo explicando do que se trata essa técnica. A pesquisa deve incluir: Definição do que é e como é realizado a Tradução Dirigida por Sintaxe. Incluir a referência ao material pesquisado. Ao final elaborar 3 questões, 1 questão com alternativa verdadeiro e falso e 2 questões múltipla escolha com 4 alternativas cada. Esse trabalho deve ser entregue até o final da aula de hoje (31/10/2014). Será considerado como TAE e ira valer nota com peso 5.