120 likes | 240 Views
Gerador Gráfico de Analisadores Sintáticos. 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.
E N D
Gerador Gráfico de Analisadores Sintáticos 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/dev-ggas.zip • E o manual, documentação...http://www.linux.ime.usp.br/~henrick/mac499/manual.html