Questão #11734232014

Concursos públicos

Uma gramática livre do contexto (GLC) é um modelo computacional geralmente utilizado para definir linguagens de programação e, quando está de acordo com a Forma de Backus-Naur (BNF), permite que alguns operadores sejam utilizados no lado direito de suas produções, como o operador | (pipe) que indica seleção, o operador [ ] que indica que o operando em questão é opcional, e o operador* que indica repetição de 0 ou mais vezes.

Projetar um compilador para uma determinada linguagem envolve, entre outras coisas, especificar quais são os símbolos válidos nesta linguagem, bem como quais são as regras sintáticas que a definem.

A linguagem de programação Java é uma linguagem com suporte à orientação a objetos que não permite herança múltipla e que permite que uma classe implemente múltiplas interfaces. A seguir, exibem-se trechos de código sintaticamente válidos na linguagem Java.

Imagem da questão

No trecho 1, cria-se uma classe chamada A que herda de uma classe chamada B. No trecho 2, cria-se uma classe chamada F que implementa uma interface chamada C. No trecho 3, cria-se uma classe chamada J que herda de uma classe chamada A e implementa duas interfaces, chamadas C e D.

Considere que:

• Imagem da questão é um não terminal cujo intuito é dar origem a declarações de classes;

• Imagem da questão é um não terminal cujo intuito é dar origem ao corpo de classes;

• os terminais aparecem entre aspas duplas;

• id é um símbolo que representa qualquer identificador válido, como nomes de classes ou variáveis.

A gramática que específica uma linguagem que não permita herança múltipla e que implemente zero ou mais interfaces é