Compiladores - Tratamento de erros - www.cadcobol.com.br



Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

Compiladores - Tratamento de erros

O tratamento de erros está voltado a falhas devido a muitas causas: erros no compilador, erros na elaboração do programa a ser compilado, erros no ambiente (hardware, sistema operacional), dados incorretos, etc.
As tarefas relacionadas ao tratamento de erros consistem em detectar cada erro, reportá-lo ao usuário e possivelmente fazer algum reparo para que o processamento possa continuar.

Os erros podem ser classificados em erros léxicos, erros sintáticos, erros não independentes de contexto (semânticos), erros de execução e erros de limite.
Os erros léxicos ocorrem quando um token identificado não pertence a gramática da linguagem fonte.
Os erros sintáticos ocorrem quando alguma estrutura de frase não está de acordo com a gramática, como por exemplo parênteses sem correspondência.
Os erros não independentes de contexto em geral são associados a não declaração de objetos como variáveis e erros de tipos.
Os erros de execução ocorrem após a compilação, quando o programa já está sendo executado.
Um exemplo típico é o da divisão por zero.
Os erros de limite, ocorrem durante a execução e estão relacionados as características da máquina na qual o programa está sendo executado, como por exemplo, estouro de pilha.

Alguns compiladores encerram o processo de tradução logo ao encontrar o primeiro erro do programa-fonte.
Esta é uma política de fácil implementação. Compiladores mais sofisticados, porém, detectam o maior número possível de erros visando diminuir o número de compilações.

A recuperação de erros em analisadores sintáticos top-down é mais fácil de implementar do que em analisadores bottom-up.
O problema é que diferente de um analisador top-down, este último não sabe quais símbolos são esperados na entrada, somente os que já foram processados.
Pode-se usar neste caso técnicas como, por exemplo, a técnica de panic-mode que procura em tabelas sintáticas em busca de símbolos válidos na entrada.
Nesta técnica se descartam símbolos da entrada até que um delimitador (como um ponto e vírgula, por exemplo) seja encontrado.
O analisador apaga as entradas da pilha até que encontre uma entrada que permita que o processo de análise prossiga em diante.



© Copyright Wikipédia, a enciclopédia livre