AGB  ·  Datenschutz  ·  Impressum  







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

[Tipps gesucht] Parser erstellen

Ein Thema von Dragon27 · begonnen am 7. Feb 2007 · letzter Beitrag vom 7. Feb 2007
 
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#1

[Tipps gesucht] Parser erstellen

  Alt 7. Feb 2007, 16:13
Hallo,

ich würde gerne einen Parser selbst bauen. Das ganze soll Befehle verstehen und interpretieren. Auch eine Variablenverwaltung soll das Ding haben.
Nun hänge ich an mehreren Stellen, da ich das ganze von Anfang an gut aufziehen will.

Folgende Fragen:

- Wie würdet Ihr das mit einer Variablendeklaration machen und mit dem Auslesen? Mein Code:
Delphi-Quellcode:
unit varverwaltung;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus;


  type TVariablen=record
  Name:string;
  Inhalt:Variant;
  Script:String;

  end;



  //dek
  procedure Reset_Var();
  Function Get_Free_Var():integer;
  Procedure Set_Var(Name,Inhalt,Script:String);
  procedure Set_Systemvar();
  procedure Var_out_by_name(VName:String);


  var
  Variablen: array[0..999999] of TVariablen;

implementation

uses unit2, Fehler;




procedure Var_out_by_name(VName:String);
var i:integer;
ok:Boolean;
begin
ok:=false;
for i:=0 to 999999 do begin
if Variablen[i].name=Vname then begin
mainf.addL('Wert von '+Vname+' = '+Variablen[i].Inhalt+ ' > '+Variablen[i].Script);
ok:=true
end;
end;

if ok=false then mainf.addL('Keine Variable vorhanden');

end;

procedure Set_Systemvar();
begin
Set_Var('$uptime',datetimetostr(now),'system');
mainf.addl('Systemvariablen intialisiert..');
end;

procedure Reset_Var();
var i:integer;
begin
for i:=0 to 999999 do begin
Variablen[i].Name:='';
Variablen[i].Inhalt:='';
Variablen[i].Script:='';
end;
mainf.addl('Variablenspeicher geleert..');
end;

Function Get_Free_Var():integer;
var i:integer;
ok:Boolean;
begin
ok:=false;
for i:=0 to 999999 do begin
if (Variablen[i].Name='') and (Variablen[i].inhalt='') and (Variablen[i].script='')then begin
result:=i;
ok:=true;
break;
end;
end;
if ok=false then Messagedlg('Der Variablenspeicher ist voll!',mterror,[mbok],0);
end;

Procedure Set_Var(Name,Inhalt,Script:String);
var v:integer;
i:integer;
vorhanden:Boolean;
begin
vorhanden:=false;
for i:=0 to 999999 do begin
if variablen[i].name=Name then begin
Variablen[i].name:=name;
Variablen[i].Inhalt:=inhalt;
Variablen[i].Script:=script;
vorhanden:=true;
end;
end;
if vorhanden=false then begin
v:=Get_Free_Var();
Variablen[v].name:=name;
Variablen[v].Inhalt:=inhalt;
Variablen[v].Script:=script;
end;
end;

Procedure Del_Var(Name:string);
var i:integer;
begin
for i:=0 to 999999 do begin
if (Variablen[i].name=name) then begin
Variablen[i].Name:='';
Variablen[i].Inhalt:='';
Variablen[i].Script:='';
end;
end;
end;


end.
- Mit einer Befehlsverwaltung habe ich mich noch gar nicht beschäftigt aber vielleicht weiß hier auch jemand was?
- Weitere Gedanken und Tipps würden mich sehr freuen!!


Gruß

Dragon27
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
 


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 21:07 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-2025 by Thomas Breitkreuz