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.
Deixe um comentário