Análise Semântica

A fase de análise semântica verifica os erros semânticos no programa fonte e captura as informações de tipo para a fase subsequente de geração de código. Utiliza a estrutura hierárquica determinada pela fase de análise sintática, a fim de identificar os operadores e operandos das expressões e enunciados.

Um importante componente da análise semântica é a verificação de tipos. Nela o compilador checa se cada operador recebe os operandos que são permitidos pela especificação da linguagem fonte.

Por exemplo, muitas definições nas linguagens de programação requerem que o compilador relate um erro a cada vez que um número real seja usado para indexar um array.

No entanto, a especificação da linguagem pode permitir algumas coerções de operandos, como, por exemplo, quando um operando aritmético binário é aplicado a um inteiro e a um real. Nesse caso, o compilador pode precisar converter o inteiro para real.

Dentro da máquina, um padrão de bits representando um inteiro é geralmente diferente do padrão de bits para um real, mesmo que o número inteiro e o número real tenham o mesmo valor.

Suponha, por exemplo, que todos os identificadores na Fig. 1.5 tenham sido declarados como reais e assuma que 60, por si só, seja um inteiro. A verificação de tipos da Fig. 1.5(a) revela que o * está aplicado a um real, taxa_de_juros, e a um inteiro, 60.

O enfoque geral é o de converter inteiro em real. Isso foi conseguido na Fig. 1.5(b) pela criação de um nó extra para operador inttoreal, que converte explicitamente um inteiro num real.

Alternativamente, como o operando de inttoreal é uma constante, o compilador pode, em lugar, substituir a constante inteira por uma constante real equivalente.

Livro fonte: https://github.com/germanoa/compiladores/blob/master/doc/ebook/Compiladores%20Principios%2C%20Tecnicas%20e%20Ferramentas%20-%20Alfred%20V.%20Aho.pdf

Para enviar seu comentário, preencha os campos abaixo:

Deixe um comentário

*

Seja o primeiro a comentar!