Consider the following Ada code, based on the parser of Project 1.
Give an EBNF grammar describing what language this function accepts. Your grammar should have only one nonterminal (name it S) and three nonterminals, A, B, and C.procedure Parse is begin case Token.Category is when A => Chomp(A); while(Token.Category == A) Chomp(T_A); parse; Chomp(T_B); while(Token.Category == B) Chomp(T_B); parse; when B => Chomp(B); Chomp(T_B); Parse; Chomp(T_A); Parse; when C => Chomp(C); default: Put_Line("unexpected token: expected A, B, or C"); raise Parse_Error; end case; end Parse;