C
Celeborn
Gast
Grüße zusammen!!
Vorgeschichte: bei uns in der Firma nutzen wir für ein Legacy-System eine, nett ausgedrückt, angestaubte Programmiersprache/-umgebung (Gupta bzw. Centura, wenn das jemandem was sagt), deren eigene IDE nicht wirklich schön zu bedienen ist. Also habe ich ein Projekt gestartet, um ein entsprechendes Eclipse-Plugin zu erstellen. Das hat auch bisher sehr gut funktioniert, sprich Syntaxhighlighting, Outline und Autovervollständigung für Sprachelemente machen in etwa das, was sie sollen. Das Ding ist auch schon im Produktiveinsatz.
Alle Elemente, also Parser, Codescanner, Outlineview und CompletionProcessor wurden mehr oder weniger von Hand erstellt und mit Daten versorgt, was nicht immer wirklich elegant aussieht, aber zumindest funktioniert.
In der nächsten Ausbaustufe sollen nun aber die wirklich interessanten Dinge eingebaut werden: allen voran Refactoring, Autovervollständigung für Projektelemente (eigene Klassen, Funktionen, Variablen), Annotations (das farbige Rechteck hinter jedem Vorkommen eines Elements), eben all das was man auch vom JDT kennt.
Dafür brauchen wir aber eine Repräsentation des Projekts, mit allen Elementen und deren Vorkommen in allen Quelltextdateien, sprich einen AST (Abstract Syntax Tree). Nun kommt meine Frage, wie man das am besten anstellt.
Ich habe mich mit Thema schon etwas befasst, was Theorie und verfügbare Tools betrifft, bräuchte nun aber noch etwas Entscheidungshilfe.
Zum einem gibt es da die nicht-eclipsoiden Parser-Generatoren wie JavaCC und ANTLR, die ja genau das bieten was wir brauchen, eben aus einer Grammatik einen Parser, Lexer usw zu generieren. Oder eben das Eclipse Modeling Project mit seinen vielen Tools, die einem solche Dinge wie Outline und Codevervollständigung größtenteils abnehmen. Nur ist das letztere ja hauptsächlich für DSLs gedacht. Aber kann ich meine Quellsprache (Centura/Gupta) nicht auch als DSL betrachten? Ich denke schon.
Meine Frage ist also, wer kann mir erst einmal bei meiner Technologie-Entscheidung weiterhelfen und mir weiterführende Tipps geben. Vielleicht sind unter euch ja erfahrene Plugin-Entwickler, die an änhlichen Projekten arbeiten.
Schönen Tag noch
Vorgeschichte: bei uns in der Firma nutzen wir für ein Legacy-System eine, nett ausgedrückt, angestaubte Programmiersprache/-umgebung (Gupta bzw. Centura, wenn das jemandem was sagt), deren eigene IDE nicht wirklich schön zu bedienen ist. Also habe ich ein Projekt gestartet, um ein entsprechendes Eclipse-Plugin zu erstellen. Das hat auch bisher sehr gut funktioniert, sprich Syntaxhighlighting, Outline und Autovervollständigung für Sprachelemente machen in etwa das, was sie sollen. Das Ding ist auch schon im Produktiveinsatz.
Alle Elemente, also Parser, Codescanner, Outlineview und CompletionProcessor wurden mehr oder weniger von Hand erstellt und mit Daten versorgt, was nicht immer wirklich elegant aussieht, aber zumindest funktioniert.
In der nächsten Ausbaustufe sollen nun aber die wirklich interessanten Dinge eingebaut werden: allen voran Refactoring, Autovervollständigung für Projektelemente (eigene Klassen, Funktionen, Variablen), Annotations (das farbige Rechteck hinter jedem Vorkommen eines Elements), eben all das was man auch vom JDT kennt.
Dafür brauchen wir aber eine Repräsentation des Projekts, mit allen Elementen und deren Vorkommen in allen Quelltextdateien, sprich einen AST (Abstract Syntax Tree). Nun kommt meine Frage, wie man das am besten anstellt.
Ich habe mich mit Thema schon etwas befasst, was Theorie und verfügbare Tools betrifft, bräuchte nun aber noch etwas Entscheidungshilfe.
Zum einem gibt es da die nicht-eclipsoiden Parser-Generatoren wie JavaCC und ANTLR, die ja genau das bieten was wir brauchen, eben aus einer Grammatik einen Parser, Lexer usw zu generieren. Oder eben das Eclipse Modeling Project mit seinen vielen Tools, die einem solche Dinge wie Outline und Codevervollständigung größtenteils abnehmen. Nur ist das letztere ja hauptsächlich für DSLs gedacht. Aber kann ich meine Quellsprache (Centura/Gupta) nicht auch als DSL betrachten? Ich denke schon.
Meine Frage ist also, wer kann mir erst einmal bei meiner Technologie-Entscheidung weiterhelfen und mir weiterführende Tipps geben. Vielleicht sind unter euch ja erfahrene Plugin-Entwickler, die an änhlichen Projekten arbeiten.
Schönen Tag noch