Carregando...
Carregando...
Ajude a melhorar a plataforma
Analise a seguinte gramática LR(1):
Considere a entrada id + id * id. Qual é a ação que o analisador LR(1) deve tomar quando chegar ao ponto onde id * id foi reconhecido?
Explique melhor esta questão
Abre o Tutor com o enunciado e as alternativas já no campo — você revisa e envia.
Esta questão foi verificada por um de nossos administradores.
Alternativa E - Reduzir a produção T -> F.
Analisadores LR(1) são analisadores sintáticos bottom-up (ascendentes) que utilizam uma pilha e uma tabela de estados para decidir entre Deslocar (Shift) um token da entrada ou Reduzir (Reduce) uma sequência de símbolos no topo da pilha para um não-terminal da gramática.
A gramática segue a hierarquia padrão de expressões aritméticas:
Ao processar id + id * id:
id. Reduz $F \to id$, depois $T \to F$, depois $E \to T$.+.id. Reduz $F \to id$.Neste ponto, temos a configuração da pilha (simplificada): E + F.
O próximo token na entrada (o lookahead) é *.
* tem precedência maior que o +.F (que veio do segundo id) precisa ser promovido a T para que a regra $T \to T * F$ possa ser aplicada posteriormente.De acordo com a lógica de precedência da gramática:
*, o id lido é reduzido a $F$.* para compor um termo mais complexo.No fluxo da análise ascendente para a expressão id + id * id, após o reconhecimento do segundo identificador como um fator ($F$), a ação necessária para prosseguir com a estrutura de multiplicação (termo) é a redução de $F$ para $T$.
Alternativa E.