Ferramentas para Construção de IDE

15
Construção de Ambiente para Edição de Programas bolsista: Giorgio Prímola Ferreira G. Torres orientador: Vladimir Oliveira Di Iorio UNIVERSIDADE FEDERAL DE VIÇOSA CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS DEPARTAMENTO DE INFORMÁTICA VIÇOSA, OUTUBRO/2011

description

Ferramentas para construção de Ambientes de Desenvolvimento de programas de computadores usando Spoofax/IMP ou XText. Tools for IDE development using Spoofax/IMP or XText. Outillage pour le développement de Environnement de Programmation en utilisant Spoofax/IMP ou XText

Transcript of Ferramentas para Construção de IDE

Page 1: Ferramentas para Construção de IDE

Construção de Ambiente

para

Edição de Programas

bolsista: Giorgio Prímola Ferreira G. Torresorientador: Vladimir Oliveira Di Iorio

UNIVERSIDADE FEDERAL DE VIÇOSACENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS

DEPARTAMENTO DE INFORMÁTICA

VIÇOSA, OUTUBRO/2011

Page 2: Ferramentas para Construção de IDE

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

Page 3: Ferramentas para Construção de IDE

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.

Page 4: Ferramentas para Construção de IDE

public class Point {private int x;private int y;private String name = “P1”;

public void setX(int X) { this.x = X; }public void setY(int Y) { this.y = Y; }

}

public class Point {private int x;private int y;private String name = “P1”;

public void setX(int X) { this.x = X; }public void setY(int Y) { this.y = Y; }

}

Introdução – Recursos – Objetivo

XText – Spoofax – Resultados

Trabalhos Futuros – Dúvidas – Bibliografia

• Coloração da sintaxe (Syntax Highlighting)

Page 5: Ferramentas para Construção de IDE

• Validação (Syntax Validation)

CompilationUnit ->PackageImports*ClassDef

ClassDef ->Modif? “class” ID (Extends)? (Implements)? “{” ClassBody “}”

package com.exemplo;import java.util.List;public class SomeClass {

private String name = “P1”;

public String getName() { return name; }public void setName(String N) { this.name = N; }

}

Introdução – Recursos – Objetivo

XText – Spoofax – Resultados

Trabalhos Futuros – Dúvidas – Bibliografia

Page 6: Ferramentas para Construção de IDE

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

Page 7: Ferramentas para Construção de IDE

Introdução – Recursos – ObjetivoXText – 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

Page 8: Ferramentas para Construção de IDE

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

Page 9: Ferramentas para Construção de IDE

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

Page 10: Ferramentas para Construção de IDE

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

Page 11: Ferramentas para Construção de IDE

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

Page 12: Ferramentas para Construção de IDE

Introdução – Recursos – Objetivo

XText – Spoofax – ResultadosTrabalhos 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 AspectJusando 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.

Page 13: Ferramentas para Construção de IDE

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

Page 14: Ferramentas para Construção de IDE

Introdução – Recursos – Objetivo

XText – Spoofax – Resultados

Trabalhos Futuros – Dúvidas – Bibliografia

Page 15: Ferramentas para Construção de IDE

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 aspectlanguages, 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: Anextensible aspect-oriented language. In Proceedings of the III Latin American Workshop onAspect-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 DeclarativeSpecification of Languages and IDEs. In Martin Rinard, editor, Proceedings of the 25th AnnualACM 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.