Ficha Nº5
Exercício Nº3
2008.04.08

Gerador de Indices Remissivos


Considere uma situação em que se pretende gerar automaticamente, a partir de uma descrição como a que se ilustra abaixo, o Índice Remissivo a inserir no fim de um determinado documento. Recorda-se que um Índice Remissivo é uma lista, ordenada alfabeticamente, de todos os termos a destacar num documento, com a indicação das páginas do documento onde cada termo foi definido.

A descrição inicial, escrita de acordo com uma linguagem específica que deverá ser definida para o efeito, permite indicar para cada página (referida pelo seu número ou nome do apêndice) a lista de termos a destacar. Abaixo ilustra-se uma frase válida da dita Linguagem:
					INDICE
					1 = processador, linguagem, compilador
					2 = compilador, interpretador, gramática
					3 = gramática, GR, GIC
					4 = gramática, linguagem, reconhecedor
					A = gramática, YACC
					B = LRC
					FIM DO INDICE

O Índice que deve ser gerado para este exemplo é apresentado a seguir:
ÍNDICE REMISSIVO
					compilador: 1, 2.
					GIC: 3.
					GR: 3.
					gramática: 2, 3, 4, Apx A.
					interpretador: 2.
					linguagem: 1, 4.
					LRC: Apx B.
					processador: 1.
					reconhecedor: 4.
					YACC: Apx A.

(a)Especifique uma GIC para a linguagem apresentada;

(b)Verifique que se a mesma obedece à condição LL(1);

(c)Se for necessário faça as transformações necessárias de modo a torná-la LL(1);

(d)Crie um analisador léxico em flex para os terminais da linguagem e ponha-o a enviar os tokens para um programa em C que os escreve no monitor.