Architektur einer Eclipse DLTK
        IDE für Clojure
     http://kenai.com/projects/clojure-ide




Matthias Köster, mat...
Was ist Clojure?
http://clojure.org/
    General-purpose, dynamic programming
     language that targets the Java Virtual...
Was ist DLTK?

http://www.eclipse.org/dltk/
   Dynamic Languages Toolkit (DLTK) is a tool for
    vendors, researchers, a...
Architektur: ScriptBuilder
Hello.clj                 ScriptBuilder(ScriptNature)

                    Source              ...
Aufbau eines DLTK Script
                 Projects
   IScriptModel
       IScriptProject
                 IScriptFolder...
Wie wird das Script Model
                 erzeugt?
   ISourceParser parst Datei in eine ModuleDeclaration
   ModuleDecl...
DLTK AST

   Verwendung nicht
    zwingend erforderlich
   Verwendung sehr
    empfehlenswert
       meisten Features m...
Erzeugung des ASTs

   ANTLR generierter Parser
   Zwei Phasen
       ANTLR AST erzeugen
       Mit Tree Grammar ANTLR...
Gratis Features mit AST DLTK

   Outlinepage ableiten von
    org.eclipse.dltk.internal.ui.editor.OutlinePage
       Lee...
Syntax Highlighting

   Preference Page für
    Syntax Coloring mit DLTK
    Klassen
   Syntax Highlighting
       Klas...
Was der Editor sonst noch kann

   ClojureEditor abgeleitet von
    org.eclipse.dltk.internal.ui.editor.ScriptEditor
   ...
Code Completion

   Informationen aus dem ScriptModel beziehen
       Definierte Funktionen und Variablen
              ...
Fazit DLTK

✔ Mächtiges Framework
  ✔ Wenig Boilerplate Code
  ✔ Type Interference
✔ Sourcecode für mitgelieferte IDEs (TC...
Fazit ANTLR

✔ Mächtiges Parser Framework
  ✔ LL(*) Grammatik und generierter Code für
    Menschen gut nachvollziehbar
  ...
Fazit Clojure

✔ Mein erstes Lisp
  ✔ Hat nicht so viele gleiche Klammern ;-)
  ✔ Funktionale Programme einfacher test- un...
Upcoming SlideShare
Loading in …5
×

Architektur einer Eclipse DLTK IDE für Clojure

2,330 views
2,224 views

Published on

Präsentation DemoCamp Berlin, 23.11.2009

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,330
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
16
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Architektur einer Eclipse DLTK IDE für Clojure

  1. 1. Architektur einer Eclipse DLTK IDE für Clojure http://kenai.com/projects/clojure-ide Matthias Köster, matthias.koester@gmail.com Eclipse DemoCamp Berlin, 23.11.2009
  2. 2. Was ist Clojure? http://clojure.org/  General-purpose, dynamic programming language that targets the Java Virtual Machine (and CLR...)  interactive development via REPL  efficient and robust infrastructure for multithreaded programming  compiled language - compiles directly to JVM bytecode, yet remains completely dynamic  easy access to the Java frameworks  optional type hints and type inference, to ensure that calls to Java can avoid reflection.
  3. 3. Was ist DLTK? http://www.eclipse.org/dltk/  Dynamic Languages Toolkit (DLTK) is a tool for vendors, researchers, and end-users who rely on dynamic languages.  set of extensible frameworks designed to reduce the complexity of building full featured development environments for dynamic languages such as PHP and Perl.
  4. 4. Architektur: ScriptBuilder Hello.clj ScriptBuilder(ScriptNature) Source Source Parser ElementParser AST ScriptModel defn Demo-project hello [] Hello.clj hello[n] n print Hello1.clj hello2[n] n hello2[n] ANTLR DLTK
  5. 5. Aufbau eines DLTK Script Projects  IScriptModel  IScriptProject  IScriptFolder  ISourceModule  IType  IField  IMethod  IProjectFragment
  6. 6. Wie wird das Script Model erzeugt?  ISourceParser parst Datei in eine ModuleDeclaration  ModuleDeclaration Container des DLTK AST  ISourceParser über Extension Point einhängen, den Rest erledigt DLTK dann  Außerdem ISoureElementParser notwendig  Zweck mir unklar, aber Implementierung trivial ;-)  Ebenfalls über Extension Point einhängen
  7. 7. DLTK AST  Verwendung nicht zwingend erforderlich  Verwendung sehr empfehlenswert  meisten Features mit AST nutzbar  Einsatz von EMF für AST wird evaluiert
  8. 8. Erzeugung des ASTs  ANTLR generierter Parser  Zwei Phasen  ANTLR AST erzeugen  Mit Tree Grammar ANTLR AST in DLTK AST konvertieren  Warum so umständlich?  Wollte schon immer eine ANTLR TreeGrammar schreiben ;-)  Codegenerierung automatisch mit ANTLR IDE Plugin
  9. 9. Gratis Features mit AST DLTK  Outlinepage ableiten von org.eclipse.dltk.internal.ui.editor.OutlinePage  Leere Factorymethode doCreateOutlinePage aus org.eclipse.dltk.internal.ui.editor.ScriptEditor überschreiben  ScriptExplorer automatisch  Clojure Perspektive definieren s.d. ScriptExplorer sichtbar  Extension Point org.eclipse.dltk.ui.modelLabelProvider für Labels implementieren
  10. 10. Syntax Highlighting  Preference Page für Syntax Coloring mit DLTK Klassen  Syntax Highlighting  Klassisch mit org.eclipse.jface.text.rul es.IRule  ANTLR Lexer  Code abgeguckt bei Xtext ;-)
  11. 11. Was der Editor sonst noch kann  ClojureEditor abgeleitet von org.eclipse.dltk.internal.ui.editor.ScriptEditor  org.eclipse.jface.text.IAutoEditStrategy  Automatisch Klammern schließen  org.eclipse.jface.text.source.ICharacterPairMatcher  Markieren der öffnendenschließenden Klammer  Go To Matching Bracket  Go To Declaration Und ja, Clojure ist ein LISP!
  12. 12. Code Completion  Informationen aus dem ScriptModel beziehen  Definierte Funktionen und Variablen  ScriptModel auch für Externe ModuleLibs verfügbar  Extension Points  org.eclipse.dltk.core.completionEngine  org.eclipse.dltk.ui.scriptCompletionProposalComput er
  13. 13. Fazit DLTK ✔ Mächtiges Framework ✔ Wenig Boilerplate Code ✔ Type Interference ✔ Sourcecode für mitgelieferte IDEs (TCL, Ruby, Python) hilfreich ✔ Mit wenig Code (~ 3000 LOC) viel erreicht ✗ Sehr kleine Community ✗ Wenig aktuelle Dokumentation
  14. 14. Fazit ANTLR ✔ Mächtiges Parser Framework ✔ LL(*) Grammatik und generierter Code für Menschen gut nachvollziehbar ✔ Treegrammar sehr interessant für Multipass Compiler ✔ Gute Dokumentation ✔ Buch ”ANTLR Reference” von Terence Parr ✔ Sehr gutes Eclipse Plugin verfügbar  http://antlrv3ide.sourceforge.net/
  15. 15. Fazit Clojure ✔ Mein erstes Lisp ✔ Hat nicht so viele gleiche Klammern ;-) ✔ Funktionale Programme einfacher test- und verifizierbar ✔ Erlang inspiriertes Agent Konzept sehr interessant ✔ Buch ”Programming Clojure” von Stuart Halloway ✔ Obwohl nocht recht jung, lebhafte Community ✔ Webframework compojure ~ Ruby on Rails

×