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.