Recuperação de erros em analise sintática
Resumo: A implementação de um compilador seria bastante simplificada caso o mesmo tivesse apenas que processar programas corretos, porem os programadores em geral cometem erros frequentes durante o desenvolvimento de um programam estes erros podem ser erros léxicos, sintáticos, semânticos ou lógicos. Nesse artigo será o tema será a recuperação de erros sintáticos.
Palavras-chave: analise léxica, compiladores, recuperação de errosIntrodução
Cada linguagem de programação existente possui regras que definem sua estrutura sintática, de forma que se essa estrutura não estiver correta, ou seja, não respeitar as regras da linguagem, o programa não funcionará. Ao tentar compilar o programa enquanto o mesmo está em construção, podem ocorrer erros.
Um bom compilador deve detectar todos os erros ocorridos e avisar ao usuário sua ocorrência da forma mais precisa possível e, mais importante, recuperar-se deles de modo a poder analisar o programa fonte ate o fim. Boa parte da detecção e recuperação de erros de um compilador acontece na fase de analise sintática, estes erros podem ser sintáticos por natureza (quando o programador digita uma palavra reservada de forma errada) ou quando desobedecem as regras gramaticais que definem a linguagem de programação.
Métodos de recuperação de erros nas analises:
Analise preditiva tabular (analise LL)
Um erro é detectado durante a análise preditiva quando o terminal ao topo da pilha não reconhece o próximo símbolo de entrada ou quando o não terminal A está ao topo da pilha, a é o próximo símbolo de entrada e a entrada da tabela sintática M[A,a] está vazia.
A recuperação de erros na modalidade do desespero está baseada na idéia de se pular símbolos na entrada até que surja um token pertencente a um conjunto pré selecionado de tokens de sincronização. Sua efetividade depende da escolha do conjunto de sincronização. Os conjuntos deveriam ser escolhidos de tal forma que o analisador se