Einzelnen Beitrag anzeigen

Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Parserbau Grundlagen + Verständnisfrage

  Alt 22. Sep 2012, 19:50
Du solltest SkipSpaces nochmal überdenken.
Das Problem wird sichtbar, wenn du die Unteraufgaben noch ein wenig auslagerst. Du möchtest es sicherlich etwa so haben:
Delphi-Quellcode:
procedure SkipSpaces;
begin
  while (Look()=' ') or IsLinebreak() do
    MoveForward();
end;
So, wie du es jetzt geschrieben hast, sieht es aber so aus:
Delphi-Quellcode:
procedure SkipSpaces;
begin
  while Look()=' do
    MoveForward();
  if IsLinebreak() then
    MoveForward();
end;
Siehst du den Unterschied?


Tipp am Rande: Du solltest dir die wichtigen Subaufgaben sowieso besser auslagern. Ein Look() /Peek() und ein MoveForward wirst du noch an vielen Stellen brauchen. Und noch ein Tipp: Implementier Look()/Peek() so, dass es Zeilenumbrüche selbst behandelt und als #10 oder #13 zurückliefert, das macht vieles einfacher.

Geändert von implementation (22. Sep 2012 um 19:55 Uhr)
  Mit Zitat antworten Zitat