AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Codevervollständigung nachprogrammieren?
Thema durchsuchen
Ansicht
Themen-Optionen

Codevervollständigung nachprogrammieren?

Ein Thema von Nintendo · begonnen am 20. Apr 2012 · letzter Beitrag vom 21. Apr 2012
Antwort Antwort
Seite 1 von 2  1 2      
Nintendo

Registriert seit: 16. Feb 2009
82 Beiträge
 
#1

Codevervollständigung nachprogrammieren?

  Alt 20. Apr 2012, 00:26
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.

http://www.delphipraxis.net/167812-w...umentiert.html

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.

.

Geändert von Nintendo (20. Apr 2012 um 00:41 Uhr)
  Mit Zitat antworten Zitat
Gustav.R
(Gast)

n/a Beiträge
 
#2

AW: Codevervollständigung nachprogrammieren?

  Alt 20. Apr 2012, 01:39
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?
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

AW: Codevervollständigung nachprogrammieren?

  Alt 20. Apr 2012, 01:39
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.
  Mit Zitat antworten Zitat
Gustav.R
(Gast)

n/a Beiträge
 
#4

AW: Codevervollständigung nachprogrammieren?

  Alt 20. Apr 2012, 01:47
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.
Genau!
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#5

AW: Codevervollständigung nachprogrammieren?

  Alt 20. Apr 2012, 01:48
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.
TLBs eigentlich nur für COM-Interfaces und dergleichen.

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

Die Antwort interessiert mich jedenfalls auch ganz stark.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#6

AW: Codevervollständigung nachprogrammieren?

  Alt 20. Apr 2012, 02:00
TLBs eigentlich nur für COM-Interfaces und dergleichen.
Kann gut sein, ich erinnere mich jetzt was es war. Ich wollte damals einen Editor für ein CAD System schreiben, das diese Schnittelle für Scriptprogramme bot.
  Mit Zitat antworten Zitat
Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#7

AW: Codevervollständigung nachprogrammieren?

  Alt 20. Apr 2012, 03:44
Nun gibt es den Delphi Comppiler Generator, mit dem ich mittels regulärer Ausdrücke die Pascal Grammatik beschreiben kann.
Nein. Die Grammatik wird mittels (z.B.) einer BNF beschrieben. Mit regulären Ausdrücken kann man die Symbole der Sprache 'Delphi' beschreiben.

Zitat:
Wo gibt es eine aussagekräftige Doku zu regulären Ausdrücken, möglichst mit Beispielen?
Wenn Du danach fragst, dann glaube ich, das Du das Problem nicht überblickst.
Zitat:
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".
Kenn der Highlighter den Unterschied zwischen 'if' und 'then' ? Nein.

Zitat:
Welchen dieser Ansätze würdet Ihr vorziehen.
einen Parser bauen, der einen Syntaxbaum erstellt. Der Cursor ist in einem der Knoten dieses Baumes. Jeder Knoten hat eine Liste der möglichen Nachfolger => Codecompletion/proposal.
Zitat:
Ich muss die Spache der regulären Ausdrücke zuerst erlernen.
Unter anderem.
Zitat:
...mich in Compilerbau einlesen
Nicht nur einlesen, sondern verstehen.

Viel Spass.
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#8

AW: Codevervollständigung nachprogrammieren?

  Alt 20. Apr 2012, 04:57
Nun gibt es den Delphi Comppiler Generator, mit dem ich mittels regulärer Ausdrücke die Pascal Grammatik beschreiben kann.
Nein. Die Grammatik wird mittels (z.B.) einer BNF beschrieben. Mit regulären Ausdrücken kann man die Symbole der Sprache 'Delphi' beschreiben.
Oder mittels PEG ... und ich bin mir sicher es gibt noch mind. ein halbes Dutzend anderer Methoden der Darstellung. Und PEGs nutzen eine Untermenge von regulären Ausdrücken, wenn auch nicht PCRE

... ist ja ein übliches Vorurteil: Regex == PCRE

Wo gibt es eine aussagekräftige Doku zu regulären Ausdrücken, möglichst mit Beispielen?
Jeffrey Friedl: "Reguläre Ausdrücke" ... ist die detaillierteste Beschreibung die ich kenne. Wenn du eine "hands-on"-Variante brauchst, nimmste das Buch vom Autor von PowerGREP und RegexBuddy, Jan Goyvaerts ... das "Regular Expressions Cookbook", k.A. ob's das schon auf Deutsch gibt.

Kenn der Highlighter den Unterschied zwischen 'if' und 'then' ? Nein.
Und die Schlußfolgerung? Meines Erachtens bedeutet die Tatsache, daß ein Parser detailliertere Kenntnisse hat als ein anderer nicht, daß man ihn nicht für die Untermenge benutzen kann für die der andere einsetzbar ist.

Welchen dieser Ansätze würdet Ihr vorziehen.
einen Parser bauen, der einen Syntaxbaum erstellt. Der Cursor ist in einem der Knoten dieses Baumes. Jeder Knoten hat eine Liste der möglichen Nachfolger => Codecompletion/proposal.
Dem schließe ich mich an.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.080 Beiträge
 
Delphi 12 Athens
 
#9

AW: Codevervollständigung nachprogrammieren?

  Alt 20. Apr 2012, 09:56
... ist ja ein übliches Vorurteil: Regex == PCRE
Wobei es der Name eigentlich auch schon verrät.
Perl Compatible Regular Expressions

Und die Schlußfolgerung?
Jupp, man könnte ihn ja dennoch erstmal für die Zerlegung nehmen und kann danach, mit einfacheren Mitteln, mit diesen Daten weiterarbeiten.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Nintendo

Registriert seit: 16. Feb 2009
82 Beiträge
 
#10

AW: Codevervollständigung nachprogrammieren?

  Alt 20. Apr 2012, 20:54
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:

http://www.oreilly.de/catalog/regexcbger/

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.

.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz