ENEM, perguntado por gabispaulinagab1444, 9 meses atrás

Uma gramáfica 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 Iado 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áficas 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 sintaficamente válidos na linguagem Java.Trecho 1:class A extends B {}Trecho 2:class F implements C {}Trecho 3:class J extends A implements C, D {}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:• é um não terminal cujo intuito é dar origem a declarações de classes;• é 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 especifica uma linguagem que não permita herança múltipla e que implemente zero ou mais interfaces é@ "class" "id" [ "extends " ] "id" @ "class" "id" ("extends " "id")* O "class" "id" [ "extends " ] "id" ["implements" ( , |"id")*] @ "class" "id" [ "extends " "id"] ["implements" "id" ("," "id")*] O "class" "id" ["extends " "id"] "implements" "id" ("," "id")*

#ENADE

Soluções para a tarefa

Respondido por LarissaMoura3
1

A gramática correta está expressa na alternativa (D), . <classdecl> “class” “id” [“ extends” “id”] [“implements” “id” (“,” “id”)*]<classbody>.

Considerando o exposto no enunciado da questão, temos que o operador [ ] consiste em uma indicação de que o operando é opcional. Ao observar os exemplos, podemos perceber que “ class” “ id” acontece em todos, em que os mesmos podem ser seguidos pelos terminais “ extends” (trecho 1 e 3) ou “ implements”(trecho 2) indicando que é possível entre “ extends” ou “ implements”.

De forma que tanto “ implements” quanto “ extends” são elementos classificados como opcionais.

Bons estudos!

Perguntas interessantes