Aluno: Gustavo Henrique Braga
Orientador: Valdermar W. Setzer
Visão Geral
 Analisadores Sintáticos, juntamente com analisadores
léxicos são componentes fundamentais dos
compiladores.
 Sistema permite a criação e manipulação de
representações visuais de gramáticas livres de
contexto.
 Estas representações, juntamente com definições
adicionais, são convertidas em tabelas.
 Estas tabelas, mais um interpretador genérico, são
usadas para compor um analisador sintático.
Motivações
 Prover uma ferramenta gráfica flexível e de uso
intuitivo para a criação e depuração de compiladores.
 Disponibilizar uma alternativa em software livre para
os analisadores sintáticos mais comuns.
 Oferecer um sistema útil para fins didáticos e para
criação dinâmica de protótipos.
 Permitir a implementação e integração de analisadores
sintáticos adicionais.
Analisador Sintático
 Fundamenta-se num analisador top-down que aceita
uma subclasse das gramáticas LL(1) (ESLL(1)).
 Abordagem top-down possibilita um entendimento
intuitivo do processo de análise sintática e do grafo
sintático.
 É fácil acompanhar as pilhas sintáticas e semântica.
 Detecção de erros da gramática direta e eficaz, além
facilidade de correção.
 Especificação de rotinas semânticas em qualquer
ponto de um lado direito de uma produção.
Sistema
 Uma versão preliminar foi parcialmente desenvolvida
como um plugin para plataforma eclipse (Luiz
Fernando dos Santos Pereira).
 Queríamos um sistema totalmente autônomo, embora
o esquema de docking tenha funcionado tão bem : - )
 Desenvolvido em java, uma preocupação era manter o
código “civilizado”, atentando para padrões de O.O.
bem conhecidos e MVC.
Sistema
 Reaproveitamento de código aberto disponível:
E outros...
Sistema
Área de
desenho, com
caixa de
ferramentas
Arquivos do
projeto (sem,
gram, lex)
Sistema
Editor de
rotinas
semânticas
Tabela do
analisador
Rastreamento das pilhas
sintática e semântica
Interpretador
Estado Atual
 Gerenciamento de Projetos.
 Geração de código.
 Especificação e modificação em runtime de rotinas
semânticas associadas aos lados direitos das
produções.
 Configuração das especificações para o analisador
léxico (Yylex).
 Impressão de pilhas sintática e semântica.
 Rastreamento dos tokens.
Estado Atual
 Console de linha de comando para controle fino de
cada aspecto do programa.
 Demonstração das técnicas de recuperação de erro
(com e sem sucesso).
 Auxílios visuais (identação automática, coloração)
para códigos.
Mais Desenvolvimento
 Implementação adaptadores (de entrada e saída) para
permitir que o interpretador seja controlado por um
programa externo, e que diferentes tipos de saída
possam ser gerados (ex: uma planilha, um gráfico 3D,
uma seqüência de sons).
 Mais controle sobre as políticas de validação de
gramáticas.
 Modo Debug.
 Depuração visual da gramática.
 Mais flexibilidade para Impl. de novos analisadores.
Terminando...
 A última versão pode ser encontrada em:
http://www.linux.ime.usp.br/~henrick/mac499/devggas.zip
 E o manual, documentação...
http://www.linux.ime.usp.br/~henrick/mac499/manual.
html
Download

Apresentação - IME-USP