120 likes | 214 Vues
Explore the creation process of an Eclipse-based IDE for D programming language, highlighting features like code editor, project management, code completion, and more. Learn about the development phases, semantic functionality, and advanced features integrated into the IDE. Discover the challenges faced and future work plans for further enhancements.
E N D
Creating an Eclipse-based IDE for the D programming language http://www.dsource.org/projects/descent/wiki/Mmrnmhrm
Motivação • O que é a linguagem D? • Linguagem recente, desenhada para substituir o C++. • Linguagem da familia do C, estaticamente tipificada, compilada, com meta-programação. • Porquê uma IDE para D? • A toolchain e bibliotecas são tão importantes como a linguagem em si, e havia lacunas neste aspecto. • Porquê uma IDE baseada em Eclipse? • Eclipse Platform – uma framework extensiva para a criação de IDEs. • Interface e comportamento uniforme. • Possibilidade de integração entre linguagens.
Uma IDE para D • Objectivos iniciais: • Editor de código D. • Gestão de projecto. • Project Builder. • Open Definition. • Find References. • Code Completion. • Code Templates. • Vistas de Outline e Type Hierarchy. • Formatação de código. • Refactoring simples (refactor-rename). • Construir algo usável e reaproveitável.
Abordagem • Analisar o estado da arte. • Estudar o JDT. • Leitura da documentação, artigos. • Leitura do código. • Elementos principais: • Parser para a linguagem. • Integração com Eclipse. • Análise de ferramentas e código existentes. • Não havia muito que pudesse ser usado. • Desenvolver parser.
Desenvolvimento inicial • Initicialmente desenvolvido um parser ANTLR mas depois foi adoptado o parser DMD/Descent. • Funcionalidade semântica (find-definition) é iniciado a partir deste. • Protótipo inicial de find-definition realizado • Funciona apenas para um conjunto pequeno da linguagem. • Mas mostra como poderá ser implementado na sua totalidade. • Próximo passo: Eclipse
Integração com o Eclipse • Protótipo completo: • Editor com syntax highlighting. • Editor outline. • Comandos UI para find-definition. • Syntax Highlighting configurável. • D project nature e project wizard. • D project model e UI. • Eclipse Platform é de facto bastante poderosa e extensiva. • Mas ao preço de uma curva de aprendizagem bastante elevada, particularmente para uma IDE.
Funcionalidade semântica. • Find-Definition • Definitions and References. • Scope lookup. • DMD AST inadequada -> conversão da AST. • Code Completion. • Versão modificada da funcionalidade anterior. • Unit testing para a funcionalidade semântica. • Completar detalhes, actualizar parser. • Lançada a primeira versão pública da IDE.
Funcionalidade Avançada • Funcionalidades avançadas da IDE: • DOM AST. • Model caching. • Model indexing. • Refactoring. • É então que surge o DLTK. • Model caching & indexing. • Java-like project model. • Muito código UI comum. • Projecto convertido para DLTK, com resultados bastante bons.
Creating an Eclipse-based IDE for the D programming language DEMONSTRAÇÃO...
Conclusões • Eclipse bastante extensivel e poderoso. • Requer bastante esforço em aprendizagem. • Mas compensa face ao desenvolvimento de raiz. • Componentes essenciais da IDE: parser, AST, motor semântico. • Vários aspectos a ter em conta para a implementação do core da IDE. • Em desenvolvimento novos projectos para dar ainda mais funcionalidade à Eclipse Platform (DLTK, IMP).
Trabalho futuro • Integração com futuras versões do DLTK. • Actualizar para os novos desenvolvimentos da linguagem D. • Integração com o Descent. • Melhorar o motor de análise semântica. • Melhoramentos no parser (error recovery). • Desenvolver refactoring.