AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Quelltext-Parsen von Delphi-Methoden

Ein Thema von urs.liska · begonnen am 14. Sep 2003 · letzter Beitrag vom 15. Sep 2003
Antwort Antwort
Seite 2 von 2     12   
urs.liska

Registriert seit: 6. Aug 2003
Ort: Freiburg
195 Beiträge
 
Delphi 6 Professional
 
#11

Re: Quelltext-Parsen von Delphi-Methoden

  Alt 14. Sep 2003, 19:43
@Christian Seehase:
Nee, so sehe ich das eigentlich auch. Der Programmierer muss schon selbst sehen, dass sein Quelltext zumindest korrekt ist.
Aber trotzdem wäre es wahrscheinlich korrekt (zumindest, wenn man ein Tool aus der Hand gibt), den Benutzer auf potenzielle Risiken hinzuweisen.

Was ich aber berücksichtigen müsste, ist die Möglichkeit, Sourcecode sehr eigenwillig zu formatieren. Z.B. ist das folgende ja wohl korrekt:
Delphi-Quellcode:
function TForm1.Create(AOwner:
TComponent);var
i, j; integer;{ Kommentar }begin doSomething;end;
.Oder eine Klassendeklaration wie:
Delphi-Quellcode:
TExStringList { = Meine tolle neue Klasse } =
class(TStringList) private
FEigenschaft: string; public property
    Eigenschaft: string
        read FEigenschaft
        write FEigenschaft; end;
Man würde zwar jedem, der so schreibt sagen, er soll erstmal selbst Hand anlegen, aber trotzedm: es ist korrekt, also sollte auch ein Tool nicht daran scheitern...

Aber, wenn es denn schon ein (teilweiser) Delphi-Parser sein muss: dazu müsste es doch Ansätze geben und Material, das verwendbar ist (Algorithmen oder sogar Klassen). Ich habe beim Googlen aber erstmal nichts gefunden...
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Quelltext-Parsen von Delphi-Methoden

  Alt 14. Sep 2003, 20:09
Moin Urs,

einige Stichworte die mir dazu einfallen:
  • Lexikalische Analyse
  • Syntaktische Analyse
  • (Determinierender) Endlicher Automat

Ich denke mal, dass Du mit diesen Stichworten den Kern des Parsers abdecken können solltest.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#13

Re: Quelltext-Parsen von Delphi-Methoden

  Alt 15. Sep 2003, 23:05
Zitat von urs.liska:
@Christian Seehase:
Nee, so sehe ich das eigentlich auch. Der Programmierer muss schon selbst sehen, dass sein Quelltext zumindest korrekt ist.
Aber trotzdem wäre es wahrscheinlich korrekt (zumindest, wenn man ein Tool aus der Hand gibt), den Benutzer auf potenzielle Risiken hinzuweisen.
Nope, wenn ein Fehler im Quelltext drin ist, dann sollte das Tool sowas erkennen und zumindest eine Warnung geben - es kann ja trotzdem weitermachen.

Zitat von urs.liska:
Was ich aber berücksichtigen müsste, ist die Möglichkeit, Sourcecode sehr eigenwillig zu formatieren. Z.B. ist das folgende ja wohl korrekt:
Delphi-Quellcode:
function TForm1.Create(AOwner:
TComponent);var
i, j; integer;{ Kommentar }begin doSomething;end;
.Oder eine Klassendeklaration wie:
Delphi-Quellcode:
TExStringList { = Meine tolle neue Klasse } =
class(TStringList) private
FEigenschaft: string; public property
    Eigenschaft: string
        read FEigenschaft
        write FEigenschaft; end;
Man würde zwar jedem, der so schreibt sagen, er soll erstmal selbst Hand anlegen, aber trotzedm: es ist korrekt, also sollte auch ein Tool nicht daran scheitern...
Ich denke die Formatierung ist relativ einfach zu handhaben, es sind ja nur Leerzeichen und Zeilenumbrüche.
Viel schwieriger wird es sein, die vielen Möglichkeiten der Sprache Pascal/Delphi reinzubringen, weil jeder gerne auf seinen eigenwilligen Syntax besteht (ich meine damit speziellen Syntax wie default usw).
schau dir das mal an:
Delphi-Quellcode:
  PVariantManager = ^TVariantManager;
  {$EXTERNALSYM PVariantManager}
  TVariantManager = record
    VarClear: procedure(var V : Variant);
    VarCopy: procedure(var Dest: Variant; const Source: Variant);
...
sowas schonmal gesehen?

oder
Delphi-Quellcode:

type
  IStringsDisp = dispinterface
    ['{EE05DFE2-5549-11D0-9EA9-0020AF3D82DA}']
    property ControlDefault[Index: Integer]: OleVariant dispid 0; default;
    function Count: Integer; dispid 1;
    property Item[Index: Integer]: OleVariant dispid 2;
    procedure Remove(Index: Integer); dispid 3;
    procedure Clear; dispid 4;
    function Add(Item: OleVariant): Integer; dispid 5;

    function _NewEnum: IUnknown; dispid -4;
  end;

und..

 type
  IAncestor = interface
  end;
  IDescendant = interface(IAncestor)
    procedure P1;
  end;
  TSomething = class(TInterfacedObject, IDescendant)
    procedure P1;
    procedure P2;
  end;
  ...

sowas schon benutzt?

TVarData = packed record
    case Integer of
      0: (VType: TVarType;
          case Integer of
            0: (Reserved1: Word;
                case Integer of
                  0: (Reserved2, Reserved3: Word;
                      case Integer of
                        varSmallInt: (VSmallInt: SmallInt);
                        varInteger: (VInteger: Integer);
                        varSingle: (VSingle: Single);
                        varDouble: (VDouble: Double);
                        varCurrency: (VCurrency: Currency);
                        varDate: (VDate: TDateTime);
                        varOleStr: (VOleStr: PWideChar);
                        varDispatch: (VDispatch: Pointer);
                        varError: (VError: HRESULT);
                        varBoolean: (VBoolean: WordBool);
                        varUnknown: (VUnknown: Pointer);
                        varShortInt: (VShortInt: ShortInt);
                        varByte: (VByte: Byte);
                        varWord: (VWord: Word);
                        varLongWord: (VLongWord: LongWord);
                        varInt64: (VInt64: Int64);
                        varString: (VString: Pointer);
                        varAny: (VAny: Pointer);
                        varArray: (VArray: PVarArray);
                        varByRef: (VPointer: Pointer);
                     );
                  1: (VLongs: array[0..2] of LongInt);
               );
            2: (VWords: array [0..6] of Word);
            3: (VBytes: array [0..13] of Byte);
          );
      1: (RawData: array [0..3] of LongInt);
  end;
Zitat von urs.liska:
Aber, wenn es denn schon ein (teilweiser) Delphi-Parser sein muss: dazu müsste es doch Ansätze geben und Material, das verwendbar ist (Algorithmen oder sogar Klassen). Ich habe beim Googlen aber erstmal nichts gefunden...
ja gibt es :
hier ein Link:

The purpose of PasDoc is to document Object Pascal / Delphi source code from comments within the source code. :
http://pasdoc.sourceforge.net/phpwiki/

suche nach PasDoc und es gibt noch mehr!
außerdem suche vermehrt, nach Programmen die Quelltexte scannen und daraus Hilfedateien machen - d.h. die Kommentare zu den Funktionen und so in eine Hilfe schreiben.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 05:47 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