Dado o seguinte trecho de código em uma linguagem de programação: int main() { int x = 5; x = x + 1; return x; } Suponha que você está construindo um analisador sintático ascendente LR(1) para essa linguagem. Qual é o próximo passo de análise após reconhecer o seguinte símbolo: int x = 5;?

Questão

Dado o seguinte trecho de código em uma linguagem de programação:

int main() { int x = 5; x = x + 1; return x; }

Suponha que você está construindo um analisador sintático ascendente LR(1) para essa linguagem. Qual é o próximo passo de análise após reconhecer o seguinte símbolo: int x = 5;?

Alternativas

a) Procurar por um token de lookahead correspondente ao símbolo x.

b) Realizar uma redução da produção stmt para expression_stmt.

c) Realizar uma redução da produção declaration para stmt.

d) Realizar uma redução da produção stmt para declaration.

e) Procurar por um token de lookahead correspondente a uma instrução dentro do bloco main().

86%

Explicação

Após reconhecer int x = 5;, o analisador LR(1) já consumiu uma declaração completa (algo como declaration → type ID '=' NUMBER ';').

Em uma gramática típica de linguagem estilo C dentro de um bloco, teríamos algo do tipo:

  • block → '{' stmt_list '}'
  • stmt_list → stmt_list stmt | ε
  • stmt → declaration | expression_stmt | ...

Assim, ao terminar int x = 5;, o passo natural é:

  1. Reduzir a sequência reconhecida para o não-terminal correspondente (por exemplo, reduzir para declaration e, em seguida, para stmt, dependendo da gramática).
  2. Em seguida, como estamos em stmt_list, o analisador precisa decidir se:
    • continua lendo mais uma stmt (próxima instrução do bloco), ou
    • encerra a lista (quando o lookahead for } por exemplo).

Como a pergunta pede o próximo passo de análise após reconhecer int x = 5; (já como uma unidade), o comportamento essencial do LR(1) é consultar o lookahead para saber qual é a próxima instrução dentro do bloco de main() (no código, o próximo início provável é x da atribuição x = x + 1;). Isso corresponde à alternativa que descreve buscar o próximo token/instrução no bloco.

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.