uponha 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

uponha 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 consulta a tabela de precedência de operadores para resolver o conflito.

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

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

92%

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

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

Explicação

Em um analisador sintático LL(1), a tabela de parsing deve ter no máximo uma produção para cada par (Não-terminal, Terminal de lookahead).

  • Um conflito na tabela LL(1) acontece quando, para a mesma célula, existem duas (ou mais) produções possíveis. Isso significa que a gramática não é LL(1) (há ambiguidade para decisão com apenas 1 símbolo de lookahead ou falta de fatoração/eliminação de recursão à esquerda).
  • Um analisador LL(1) determinístico não tem como “escolher” corretamente entre alternativas conflitantes; portanto, ao detectar essa situação (na construção da tabela ou durante a consulta), a ação padrão é tratar como erro (não há regra de precedência, nem sorteio, nem desempate por ordem como parte do método LL(1) clássico).

Logo, diante de um conflito, o analisador entra em erro (a análise falha).

Alternativa correta: (c).

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.