Carregando...
Carregando...
Ajude a melhorar a plataforma
Considere a seguinte gramática para expressões matemáticas simples:
<expr> ::= <term> + <expr> | <term> - <expr> | <term>
<term> ::= <factor> * <term> | <factor> / <term> | <factor>
<factor> ::= <number> | (<expr>)
<number> ::= [0-9]+
Qual das seguintes expressões é sintaticamente válida de acordo com essa gramática?
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 B - (2 * (3 + 4))
Para determinar se uma expressão é sintaticamente válida, devemos verificar se ela pode ser derivada a partir do símbolo inicial da gramática (neste caso, <expr>) seguindo as regras de produção estabelecidas.
A gramática fornecida define uma hierarquia de precedência:
<expr>: Lida com adição e subtração.<term>: Lida com multiplicação e divisão.<factor>: Lida com números e subexpressões entre parênteses (<expr>).Analisando a alternativa B: (2 * (3 + 4))
<factor> porque está entre parênteses: ( <expr> ).<expr>: 2 * (3 + 4).2 * (3 + 4) é um <term> (pois <term> ::= <factor> * <term>).<factor> é 2 (um <number>).<term> é (3 + 4), que é um <factor> (pois <factor> ::= (<expr>)).3 + 4 é uma <expr> (pois <expr> ::= <term> + <expr>).Comparação de erros nas outras alternativas:
<factor> ::= (<expr>).A expressão (2 * (3 + 4)) é perfeitamente derivável, respeitando o balanceamento de parênteses e as regras de formação de termos e fatores.
Alternativa B.