Análise da Questão sobre LL(1)
Introdução
Esta questão aborda conceitos fundamentais de análise sintática em compiladores. O analisador LL(1) é uma técnica de parsing descendente amplamente utilizada no desenvolvimento de linguagens de programação.
Desenvolvimento
Para compreender a resposta correta, precisamos analisar cada alternativa com base nas propriedades dos analisadores LL(1):
O que significa LL(1)?
| Letra | Significado | Descrição |
|---|
| L | First | Leitura da esquerda para direita |
| L | Second | Construção da árvore da esquerda para direita |
| (1) | Lookahead | Utiliza 1 token de antecipação |
Análise das Alternativas
- Alternativa A: FALSA. LR(1) é geralmente mais poderoso e pode processar gramáticas mais complexas. Não há superioridade absoluta de eficiência entre eles.
- Alternativa B: VERDADEIRA. O "1" em LL(1) refere-se especificamente ao uso de um único símbolo de lookahead para decidir qual produção aplicar.
- Alternativa C: FALSA. Gramáticas LL(1) devem ser livres de ambiguidade. Gramáticas ambíguas não podem ser analisadas por LL(1).
- Alternativa D: Verdadeira em princípio, mas menos completa. LL(1) realmente exige eliminação de recursão à esquerda, porém esta é uma consequência, não a definição principal.
- Alternativa E: FALSA. Redução é característica de parsing ascendente (LR). LL(1) usa expansão (top-down).
## Análise
Características principais do LL(1):
- Usa tabela de previsão para decisões determinísticas
- Requer gramáticas sem recursão à esquerda
- Precisa de eliminação de fatoração comum
- Baseia-se em conjuntos FIRST e FOLLOW
- É um caso específico de parsing descendente
Comparativo:
| Tipo | Direção | Técnica | Lookahead |
|---|
| LL(1) | Descendente | Expansão | 1 símbolo |
| LR(1) | Ascendente | Redução | 1 símbolo |
Conclusao
A alternativa B é a correta porque define a essência da notação LL(1): o uso de lookahead de um símbolo para guiar as decisões de expansão durante a análise sintática descendente.
Alternativa B