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