Suponha que você está construindo um analisador sintático descendente LL(1) para uma linguagem de programação. Quando ocorre um conflito de parsing na tabela LL(1), qual ação é tomada?

Questão

Suponha que você está construindo um analisador sintático descendente LL(1) para uma linguagem de programação. Quando ocorre um conflito de parsing na tabela LL(1), qual ação é tomada?

Alternativas

a) O analisador escolhe aleatoriamente uma das produções em conflito.

b) O analisador utiliza uma regra de desempate baseada na ordem de aparição das produções na gramática.

c) O analisador consulta a tabela de precedência de operadores para resolver o conflito.

d) O analisador entra em um estado de aceitação e conclui a análise.

e) O analisador entra em um estado de erro e para a análise.

96%

Explicação

Em um analisador sintático LL(1) (descendente preditivo), a tabela de parsing deve ser determinística: para cada par (Não-terminal, token de lookahead) pode existir no máximo uma produção.

Quando ocorre um conflito na tabela LL(1), isso significa que há mais de uma produção possível para a mesma entrada da tabela, logo a gramática não é LL(1) (ou não está fatorada/transformada adequadamente). Um analisador LL(1) padrão não tem mecanismo de desempate (nem “escolha aleatória”, nem “ordem na gramática”, nem “precedência de operadores” — precedência é típica de abordagens como análise LR/precedência, não da tabela LL(1) pura).

Assim, ao tentar consultar a tabela e encontrar uma entrada ambígua/indefinida, o comportamento correto é sinalizar erro (falha de parsing) e interromper/acionar rotina de recuperação de erro, pois não há decisão única válida.

Alternativa correta: (e).

Questões relacionadas

Ver últimas questões

Comece a estudar de forma inteligente hoje mesmo

Resolva questões de concursos e vestibulares com IA, gere simulados personalizados e domine os conteúdos que mais caem nas provas.

Cancele quando quiser.