O documento descreve a construção de um ambiente de edição de programas para a linguagem XAJ usando o meta-ambiente Spoofax. O autor estuda as ferramentas XText e Spoofax e escolhe Spoofax para implementar recursos como coloração da sintaxe, validação e resolução de referências para XAJ. O trabalho também inclui testes de desempenho de analisadores sintáticos e comparação com trabalhos relacionados.
1. UNIVERSIDADE FEDERAL DE VIÇOSA
CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS
DEPARTAMENTO DE INFORMÁTICA
Construção de Ambiente
para
Edição de Programas
bolsista: Giorgio Prímola Ferreira G. Torres
orientador: Vladimir Oliveira Di Iorio
VIÇOSA, OUTUBRO/2011
2. Introdução – Recursos – Objetivo
XText – Spoofax – Resultados
Trabalhos Futuros – Dúvidas – Bibliografia
• Linguagens de programação
– Linguagens de domínio específico (DSL’s)
• Gramáticas pequenas
– Linguagens de propósito geral (GPL)
• Gramáticas muito grandes
• Plataformas de programação
– Linguagem de programação + Bibliotecas
3. Introdução – Recursos – Objetivo
XText – Spoofax – Resultados
Trabalhos Futuros – Dúvidas – Bibliografia
• Ambientes de edição de programas (IDE)
– Oferecem recursos de programação para
linguagens
– Aceleram o processo de desenvolvimento
– Java: Eclipse e NetBeans.
4. Introdução – Recursos – Objetivo
XText – Spoofax – Resultados
Trabalhos Futuros – Dúvidas – Bibliografia
• Coloração da sintaxe (Syntax Highlighting)
public class Point { public class Point {
private int x; private int x;
private int y; private int y;
private String name = “P1”; private String name = “P1”;
public void setX(int X) public void setX(int X)
{ this.x = X; } { this.x = X; }
public void setY(int Y) public void setY(int Y)
{ this.y = Y; } { this.y = Y; }
} }
6. Introdução – Recursos – Objetivo
XText – Spoofax – Resultados
Trabalhos Futuros – Dúvidas – Bibliografia
Resolução de Referência
Balão de Ajuda
Verificação de erros
Ocultação de código
Vista de destaques
Auto-completar
7. Introdução – Recursos – Objetivo
XText – Spoofax – Resultados
Trabalhos Futuros – Dúvidas – Bibliografia
• Conhecer e estudar duas ferramentas
meta-ambientes para a IDE Eclipse, para
futuramente implementar um ambiente que
ofereça recursos para a linguagem XAJ
8. Introdução – Recursos – Objetivo
XText – Spoofax – Resultados
Trabalhos Futuros – Dúvidas – Bibliografia
• Ferramenta de código aberto criada pela
empresa Itemis
• Foco: linguagens de domínio específico
(DSL’s)
• Oferece suporte a todos os recursos de
ambiente de desenvolvimento de programas
• Utiliza analisador sintático (parser) gerado
pela ferramenta ANTLR
9. Introdução – Recursos – Objetivo
XText – Spoofax – Resultados
Trabalhos Futuros – Dúvidas – Bibliografia
• Ainda não possui definições de gramáticas
de linguagens de propósito geral como Java,
C++, AspectJ, etc
• Não possui mecanismo para extensão de
GPL
10. Introdução – Recursos – Objetivo
XText – Spoofax – Resultados
Trabalhos Futuros – Dúvidas – Bibliografia
• Ferramenta de código aberto que reúne
outras ferramentas poderosas de
transformação de código: Stratego, IMP e
SDF
• Oferece suporte a todos os recursos de
ambientes de edição de programas (IMP)
• Como Spoofax utiliza a SDF suporta
linguagens grandes
11. Introdução – Recursos – Objetivo
XText – Spoofax – Resultados
Trabalhos Futuros – Dúvidas – Bibliografia
• Já possui definições de Java, AspectJ e
outras GPL’s
• Possui mecanismo para extensão de
linguagens
• Poderoso mecanismo de definição modular
de sintaxe
12. Introdução – Recursos – Objetivo
XText – Spoofax – Resultados
Trabalhos Futuros – Dúvidas – Bibliografia
• Spoofax foi o meta-ambiente escolhido para
construir o ambiente de XAJ
• Teste de comparação de desempenho entre os
analisadores sintáticos Rats! e JSGLR.
• Seção “Comparação com Trabalhos Similares” do
artigo “Definição Modular da Gramática de AspectJ
usando Parsing Expressin Grammar” que foi
submetido ao Workshop Latino-Americano em
Desenvolvimento de Software com Orientação a
Aspectos de 2011(LA-WASP 2011), e foi um dos 7
trabalhos aprovados, dos 19 submetidos ao
simpósio.
13. Introdução – Recursos – Objetivo
XText – Spoofax – Resultados
Trabalhos Futuros – Dúvidas – Bibliografia
• Implementação do Ambiente de
Desenvolvimento para a linguagem XAJ
• Trabalhos sobre definição modular de
gramáticas extensíveis
15. Introdução – Recursos – Objetivo
XText – Spoofax – Resultados
Trabalhos Futuros – Dúvidas – Bibliografia
• Di Iorio, V. O.; Reis, L. V. d. S.; Bigonha, R. d. S. & Bigonha, M. A. d. S. (2009). A proposal for
extensible AspectJ. In DSAL '09: Proceedings of the 4th workshop on Domain-specific aspect
languages, pp. 2124, New York, NY, USA. ACM.
• Reis, L. V. d. S.; Di Iorio, V. O.; Bigonha, R. d. S.; Bigonha, M. A. d. S. & Ladeira, R. d. C. (2009). XAJ: An
extensible aspect-oriented language. In Proceedings of the III Latin American Workshop on
Aspect-Oriented Software Development, pp. 57-62. Federal University of Ceará.
• XTEXT. Versão: 2.0. [S.l.]: Itemis, 2008. Disponível em:
<http://xtext.itemis.com/xtext/language=en/36553/downloads>. Acesso em: 24 de julho de 2011.
• Lennart C. L. Kats, Eelco Visser. The Spoofax Language Workbench. Rules for Declarative
Specification of Languages and IDEs. In Martin Rinard, editor, Proceedings of the 25th Annual
ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications
(OOPSLA 2010), ACM, 2010.
• SDF Syntax Definition Formalism. Versão: n/a. [S.l.]: ProgramTransformationOrg, 2000.
Disponível em: <http://www.syntax-definition.org/>. Acesso em: 25 de julho de 2011.