Creating an Eclipse-based IDE for the D programming language by Bruno Medeiros, VERSION 2. http://www.dsource.org/projects/descent/wiki/Mmrnmhrm
Motivação O que é a linguagem D? Porquê uma IDE para 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.