analisador sintático
1
1
1
Cláudio Lopes (peso 3 ), Gildo Leonel (peso 3 ), Sérgio Rossini (peso 3 )
Departamento de Ciência da Computação (DCC)
Universidade Federal de Juiz de Fora (UFJF)
Campus Universitário – CEP 36036-330 – Juiz de Fora – MG
{cslopes, gildo.leonel, sergiorossini}@gmail.com
1. Visão geral
O analisador sintático de um compilador, também chamado de parser, representa a segunda etapa no processo de compilação de uma linguagem. Ele é responsável por verificar a correção sintática do código a partir da seqüência de tokens, identificados pelo analisador léxico e da sua adequação com a gramática da linguagem [Lopes e outros, 2007]. O parser também é responsável por construir a árvore sintática abstrata.
A construção do analisador sintático para o compilador Marvel, seguindo as especificações de [Bernardes, 2007], exigiu a disponibilidade de uma gramática LL(1), left-to-rigth parse, leftmost-derivation com um símbolo de lookahead. Uma gramática
LL(1) é aquela que possibilita a varredura da esquerda para a direita, onde a derivação acontece mais à esquerda, com um token de antecipação - o lookahead.
Com a gramática citada no parágrafo anterior, foi possível então implementar um parser recursivo descendente.
1.1. Desenvolvimento do trabalho
A construção do analisador sintático teve início com a análise da gramática disponibilizada em [Bernardes, 2007]. Para tal, foram utilizadas as regras de fatoração à esquerda e de eliminação da recursão à esquerda, disponíveis na mesma referência e também em
[Nepomuceno, 2006]. Todas as revisões da gramática foram feitas por ao menos dois integrantes do grupo.
Com a gramática e seus conjuntos FIRST e FOLLOW devidamente analisados, os módulos AnalisadorSintatico (parser), ArvoreAbstrata e Erro foram construídos. As funções do parser foram implementadas por todos os componentes do grupo e só foram iniciadas a