2008-09-19 17 views
7

Ich erstelle ein DSL mit einem Template-ähnlichen Editor, ähnlich wie die Regelsysteme in Alice. Benutzer können Beziehungen aus einer Liste sowie die Objekte auswählen, auf die die Beziehung angewendet werden soll. Diese beiden Listen sollten auf der Grundlage der zulässigen Typen gefiltert werden. Wenn die Beziehung beispielsweise "größer als" ist, müssen die verfügbaren Objekte von einem Typ sein, für den "größer als" implementiert ist.IntelliSense-ähnliches Verhalten in benutzerdefinierten Editoren für domänenspezifische Sprachen implementieren

Wenn ein Objekt ausgewählt ist, das nicht vergleichbar mit größer als ist, dann sollte diese Beziehung nicht in der Liste der möglichen Beziehungen sein. Ich denke, das Herz dieses Problems ist ein Typ-Checker, aber ich bin mir nicht sicher, wie ich diese Art von Logik am besten in meine Anwendung einbauen kann. Kennt jemand bestehende Typ-Checking-Bibliotheken für DSLs?

Ich interessiere mich speziell für Open-Source- und Cross-Plattform-Technologien. Java ist wahrscheinlich die Sprache, die wir verwenden werden, aber das ist nicht behoben.

+0

Ich frage mich, was mit diesem passiert? Hast du eine gute Lösung gefunden? Intellisense wäre meiner Ansicht nach monströs schwer zu implementieren. Das richtige Gleichgewicht zwischen Reaktionsfähigkeit und Aufdringlichkeit zu finden, scheint eine unglaublich findige Aufgabe zu sein. Aus meiner Erfahrung ist Microsofts Implementierung Meilen weit voraus. Die Eclipse-Implementierung fühlt sich so klobig an. Ich wäre sehr interessiert zu wissen, ob Sie etwas Gutes gefunden haben. – Alex

+0

Dies war ein Arbeitsprojekt, und ich wurde abgezogen, um an einem anderen Projekt zu arbeiten, so dass meine Bemühungen um diese (Art von) abstarben. Abgesehen davon denke ich, dass Sie (Alex) und ich an verschiedenen Aspekten von "Intellisense" interessiert sind. Anstatt an der eigentlichen Benutzeroberfläche zu arbeiten, ging es mir mehr um das Design eines universellen Auto-Komplettsystems. (Die UI würde später kommen.) – rcreswick

Antwort

2

Sie könnten in Scintilla suchen. Es ist die Editierkomponente, die von Notepad ++ unter anderen Tools verwendet wird. Es hat einige Unterstützung für Autovervollständigung, obwohl ich es nicht selbst versucht habe, also bin ich mir nicht sicher, wie gut es funktioniert. Es ist Open Source, wenn es also nicht Ihren Bedürfnissen entspricht, können Sie es ohne großen Aufwand erweitern, denke ich.