Einzelnen Beitrag anzeigen

kabuco
(Gast)

n/a Beiträge
 
#1

Probleme beim Parsen von komplexem Text

  Alt 6. Dez 2006, 17:23
Hallo,

ich möchte für ein Scriptprogramm meinen eigenen Sysntax verwenden, weil ich der ganzen Geschichte einen eigenen Touch verpassen will!
Es gibt zwei verschiedene functions Köpfe (sagt man das?):
Code:
 function "Functionsname" {

 }

 und

 page "Seitenname" {

 }
Ich verwende die pmTokenizer Unit, die ich hier im Forum gefunden habe. Die Namen der Funktionen und der Seiten bekomme ich schon heraus, aber wie bekomme ich jetzt den Inhalt zwischen den Klammern?

Hier den Code den ich bisher verwende:
Delphi-Quellcode:
{Die beiden Records für die Seiten sowie Funktionen}
type
  TPage = record
   PageName: String;
   PageContent: String;
  end;

type
  TFunc = record
   FuncName: String;
   FuncContent: String;
  end;

var Token: TTokenizer; {Aus der Unit pmTokenizer}

{Die Auslesefunktion}
procedure TForm6.Button1Click(Sender: TObject);
var num, i, f, p, numPages, numFunc: integer;
    HeadPages, HeadFunc: array[0..10] of integer;
    tmp: String;
begin
 //num := Token.NumTok(Memo1.Lines.Text,'{');
 //Memo1.Lines.Add(InttoStr(num));
 p := 0;
 f := 0;
 numFunc:= 0;
 numPages := 0;
 for i := 0 to Memo1.Lines.Count-1 do begin
  if (Pos('{',Memo1.Lines[i]) <> 0) AND (Pos('function', Memo1.Lines[i]) <> 0) then
  begin
   numFunc := numFunc+1;
   HeadFunc[f] := i;
   f := f+1;
   continue;
  end;

  if (Pos('{',Memo1.Lines[i]) <> 0) AND (Pos('page', Memo1.Lines[i]) <> 0) then
  begin
   numPages := numPages+1;
   HeadPages[p] := i;
   p := p+1;
   continue;
  end;
 end;
 Memo1.Lines.Add('Funktionen: '+IntTostr(NumFunc));
 Memo1.Lines.Add('Seiten: '+IntTostr(NumPages));
end;
Gruß Kabuco
  Mit Zitat antworten Zitat