AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Parserbau Grundlagen + Verständnisfrage
Thema durchsuchen
Ansicht
Themen-Optionen

Parserbau Grundlagen + Verständnisfrage

Ein Thema von Nintendo · begonnen am 22. Sep 2012 · letzter Beitrag vom 24. Sep 2012
 
Nintendo

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

Parserbau Grundlagen + Verständnisfrage

  Alt 22. Sep 2012, 17:41
Hallo,

ich versuche mich grad an einem Parser, der wie folgt aufgebaut ist:

Delphi-Quellcode:
procedure Parse;

begin
  while LineNum < Stringliste.Count do
  begin
    Token := GetToken;
    //LineNum wird in SkipSpaces erhöht, wenn Zeile zuende
    SkipSpaces;
    if Token = 'Mein_gesuchtes_Wortthen
    begin
      Token := GetToken;
      SkipSpaces;
      if Token = 'Mein_nächstes_gesuchtes_Wortthen
      begin
        //entweder nächsten Token holen oder, wenn fertig
        //Aktion auslösen
      end;
    end;
  end;
end;

//Hier noch die Prozedur SkipSpaces

procedure SkipSpaces;
begin
  while StringListe.Strings[LineNum][StringPosition]=' do inc(StringPosition);
  if StringPosition >= Length(StringListe.Strings[LineNum]) then
  begin
    StringPosition := 1;
    inc(LineNum);
  end;
end;
Leider kommt mein Parser aber nicht zu '''if Token='Mein_Nächstes_gesuchtes_wort' then ...

Warum nicht?

In meinem Testtext kommen die gesuchten Wörter definitiv mit Sicherheit vor.

Warum findet sie der Parser dann nicht?

Bisher habe ich rausgefunden, das der Parser scheitert, wenn Leerzeilen dazwischen liegen, denn dann läuft er, findet das nächste gesuchte Wort nicht, die Schlife läuft bis zum Ende und im nächsten Parserdurchlauf ist er nicht mehr in jenem Scope, wo ich das 'mein_nächstes_gesuchtes_wort erwarte. ER ist stattdessen in der Ebene, wo er höchstens 'mein_gesuchtes_wort' finden würde, das aber im Text dann nicht mehr vorkommt.

Wie kann ich den Entwurf besser machen, so das Spaces einfach überlesen werden.

Geändert von Nintendo (22. Sep 2012 um 17:43 Uhr)
  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 19:14 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