120 likes | 212 Views
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.
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.