analise semântica aula-10-analise-semântica.pdf. analise semântica até o momento vimos a etapa...

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

Upload: internet

Post on 22-Apr-2015

110 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: 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

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

Page 2: 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

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.

Page 3: 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

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

Page 4: 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

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.

Page 5: 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

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.

Page 6: 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

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.

Page 7: 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

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.

Page 8: 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

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

Page 9: 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

Erros semânticos

Veja o exemplo de um código em Object Pascal:

Page 10: 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

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

Page 11: 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

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?

Page 12: 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

TAE – Exercício para entrega

Page 13: 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

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.

Page 14: 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

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.