![]() |
Codevervollständigung nachprogrammieren?
Hallo,
ich bin grad so am Nachprogrammieren der Codevervollständigung aus Delphi. Zunächst geht es mir um die Codelisten bei den Klassenbezeichnern. Heißt, wenn ich in Delphi einen Klassenbezeichner schreibe und den Punkt setze, um nun einen Member dieser Klasse anzusprechen, dann sehe ich eine Liste mit den möglichen Members der Klasse, aus denen ich nur noch auswählen muss. Bei den Synedit Komponenten gibt es ein DEmo für das TSynCompletionProposal, wo die Liste jedoch in einer Stringliste fest Kodiert ist. Da Delphi diese Liste nicht anzeigen kann, wenn der Quelltext fehlerhaft ist, gehe ich davon aus, das Delphi den Quelltext ständig parst und die Liste neu aufbaut. Nun gibt es den Delphi Comppiler Generator, mit dem ich mittels regulärer Ausdrücke die Pascal Grammatik beschreiben kann. Die weiteren Schritte sind äquivalent zu Lex und yacc. Wo gibt es eine aussagekräftige Doku zu regulären Ausdrücken, möglichst mit Beispielen? Muss ich überhaupt einen Parser bauen oder tut es der VCL eigene Klasse TParser vielleicht schon? Im DCG (Delphi Compiler Generator) ist ein Beispiel für einen SyntaHighlighter. Das bringt mich auf die Idee, evtl. so einen Highlighter für den Aufbau dieser Listen zu "missbrauchen". Welchen dieser Ansätze würdet Ihr vorziehen. Ich muss die Spache der regulären Ausdrücke zuerst erlernen. Ich muss des Highlighters Quelltext studieren und dann diesen an den entscheidenden Stellen anzapfen. Ich muss den in der VCL integrierten Parser im Quelltext studieren, mich in Compilerbau einlesen, es gibt auch praxisorientierte Bücher dazu, die mit sehr wenig Theorie auskommen.... Und ich brauche womöglich eine Doku des Delphi Unitformates. Dazu habe ich bereits einen weiteren Thread aufgemacht. ![]() Bei einem OpenSource Projekt könnte ich dagegen einfach den Quellcode parsen. Wie schätzt Ihr also den AUfwand für die jeweilige Vorgehensweise ein, wenn ich: - einen neuen Parser schreibe - mir von DCG einen erzeugen lasse - den Delphi eigenen verwende - einen Synhighlighter anpasse Ich will später auch die Funktion "Klasse vervollständigen" realisieren, am liebsten gleich auch die Prozedur und Funktionsrümpfe von prozeduralen Routinen im Implementationsteil vollständig als leere Routinen mit Begin End; Blöcken versehen. . |
AW: Codevervollständigung nachprogrammieren?
GottseiDank fangen fast alle brauchbaren Rezepte mit "Man kippe ein Glas Sekt in den Koch rein" an.
Welche Version(en) von Delphi soll(en) denn um die Codevervollständigung ergänzt werden? |
AW: Codevervollständigung nachprogrammieren?
Das ist ein Thema mit dem ich mich mal vor zehn Jahren kurz beschäftigte, da ich es auch programmieren wollte, allerdings für eine andere Sprache. Woran ich mich erinnre kann ist nur noch sehr wage. Ich weiß eigentlich nichts mehr, kann dich aber in die richtige Richtung bringen.
Diese Codevervollständigung macht nicht nur Delphi, das haben auch andere Programmiersprachen drauf. Sie liefern eine oder mehrere Dateien (könnte TLB Dateien sein), die dir die richtigen Informationen liefern. Ich kann mich an Einzelheiten aber nicht mehr erinnern. |
AW: Codevervollständigung nachprogrammieren?
Zitat:
|
AW: Codevervollständigung nachprogrammieren?
Zitat:
MAP-Dateien und deren Ableger für Debugsymbole. Aber ich glaub bei den Symbolen in den Binärversionen der Units ist wirklich notwendig die Datei selber zu parsen - es sei denn man könnte eine DLL/BPL von Delphi dazu einspannen :mrgreen: Die Antwort interessiert mich jedenfalls auch ganz stark. |
AW: Codevervollständigung nachprogrammieren?
Zitat:
|
AW: Codevervollständigung nachprogrammieren?
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Viel Spass. |
AW: Codevervollständigung nachprogrammieren?
Zitat:
... ist ja ein übliches Vorurteil: Regex == PCRE :zwinker: Zitat:
Zitat:
Zitat:
|
AW: Codevervollständigung nachprogrammieren?
Zitat:
Perl Compatible Regular Expressions Zitat:
|
AW: Codevervollständigung nachprogrammieren?
Hallooo,
Danke erst noch mal für Eure Tipps. Ich werde nun erst mal das "Regular Expressions Cookbook" durcharbeiten. @Asserbad: Ja, das Reguläre Ausdrücke Kochbuch gibt es inzwischen auf Deutsch und zwar hier: ![]() Ich denke, parsen ist die günstigste, weil flexibelste Variante, die mit passendem Parser auch für andere Programmiersprachen funktioniert. Die OpenTools API zu verwenden düfrte höchtens für ein IDE Plugin der Delphi IDE was bringen, vielleicht um die Funktion "Klasse vervollständigen" in D7 Personal nachzurüsten. Für ein eigenständiges Programm halte ich parsen für günstiger. Und nun sowie die nächsten Tage und Wochen mach ich mich erst mal an die Lektüre. Das KOchbuch hab ich runter geladen. Die anderen Bücher kommen später bei Bedarf dran. . |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz