Escolar Documentos
Profissional Documentos
Cultura Documentos
Autores:
Aldefran Carvalho Feitosa
Lidiane Oliveira dos Santos
Orientadora:
Rosiery Silva Maia
Roteiro
Objetivos
Introdução
Metodologia
Resultados
Conclusão
Referências
Objetivos
Papéis do Compilador:
Análise Léxica: Reconhecimento de tokens
Análise Sintática: Ordem dos tokens
Análise Semântica: Significado dos comandos e
coerência do código
JavaCC (Java Compiler Compiler)
Ferramenta geradora de analisadores léxicos e
sintáticos.
Está disponível para download gratuito no repositório
da Sun.
Para a geração automática das classes responsáveis
pelas análises, é necessário um arquivo com extensão
jj, onde é feita a descrição dos tokens e a especificação
da sequência em que esses tokens podem aparecer.
Esse arquivo é dividido em 4 partes:
Opções
Declaração da classe principal
Declarações do analisador Léxico
Declarações do analisador Sintático
Opções
Essa seção é iniciada com a palavra “options”.
Aceita vários parâmetros que alteram a geração dos
DEBUG_PARSER e LOOKAHEAD.
Ex.:
options{
STATIC = false;
}
Declaração da classe principal
PARSER_BEGIN (ParserJava)
public class ParserJava {
public static void init() throws ParseException {
...
}
}
PARSER_END (ParserJava)
Em um método poderá ser feita a leitura do arquivo
SKIP : {
“ “ | “\n” | “\t”
}
TOKEN : {
<REPETICAO: "do" | "for" | "while" | "continue" > |
<PARADA: "break" | "return" >
}
Declarações do analisador Sintático
void Selecao() : {}
{
(<IF> <ABRE_PARENTESE> Expressao()
<FECHA_PARENTESE> Instrucao() [<ELSE>
Instrucao()] | <SWITCH> <ABRE_PARENTESE>
Expressao() <FECHA_PARENTESE> Instrucao())
}
Classes Geradas
eg1: Responsável pela análise sintática
eg1TokenManager: Responsável pela análise léxica
ParserException: Captura os erros da análise sintática
TokenMgrError: Captura os erros da análise léxica
eg1Constants: Interface entre a análise léxica e a
sintática
SimpleCharStream: Fornece caracteres para a análise
léxica
Token: Responsável pela identificação dos tokens
Cada vez que é salva alguma alteração no arquivo jj as
classes geradas são atualizadas automaticamente.
Metodologia