Trabalho Compiladores Parte I
ANÁLISE LÉXICA
ALUNO: LIPIE AUGUSTO DE ALCÂNTARA SOUZA
Belo Horizonte, 18 de Maio de 2014.
COMPOSIÇÃO FUNCIONAL DO PROGRAMA – PARTE I – ANÁLISE LÉXICA
Nessa primeira parte do trabalho, foram implementados o Analisador Léxico e a Tabela de Símbolos. Trata-se do início da implementação do front-end de um compilador. Para essa implementação foi adotado o seguinte padrão de token:
<tipo do token, valor do atributo>
EX:
<RELOP, MAIOR>
<ID, total> onde tipo se refere ao “tipo do token” encontrado no arquivo fonte e valor é o seu atributo (se é um identificador, um literal, dentre outros). Estas são as palavras reservadas reconhecidas pelo compilador, bem como o seu respectivo token padrão:
ESPECIFICAÇÃO DE CLASSES – PARTE I – ANÁLISE LÉXICA
Classe CompiladorLinguagemX.java : Responsável por executar a Classe Analise Léxica, passando como parâmetro o arquivo de entrada de texto.
Classe AnalisadorLexico.java :
Funções:
private static boolean isCharacter(char ch) : Checa se o caractere dado como parâmetro é uma letra. (Importante para reconhecimento de identificadores).
private static boolean isDigit(char ch) : Checa se o caractere dado como parâmetro é um número. (Importante para reconhecimento de constantes).
private static void insereIDorCONST(String token) : Recebe uma “string” e símbolos da tabela ASCII que fora encontrada a partir de delimitadores durante a análise, e distingue se esta “string” é um identificador, constante inteira, constante de ponto flutuante, ou uma entrada inválida para a gramatica. Caso seja um padrão reconheci, armazena este “token” com suas devidas especificações, e caso seja um identificador, cria uma entrada na tabela de símbolos.
private boolean naoEhOperador(char c) : Reconhece delimitadores.
public void AnaliseLexica(String datapath) : (Método Principal) : Composto por uma sequencia de IF’S aninhados, responsáveis por