1 / 11

Creating an Eclipse-based IDE for the D programming language

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.

wilona
Télécharger la présentation

Creating an Eclipse-based IDE for the D programming language

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Creating an Eclipse-based IDE for the D programming language http://www.dsource.org/projects/descent/wiki/Mmrnmhrm

  2. 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.

  3. 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.

  4. 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.

  5. 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

  6. 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.

  7. 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.

  8. 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.

  9. Creating an Eclipse-based IDE for the D programming language DEMONSTRAÇÃO...

  10. 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).

  11. 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.

More Related