Einzelnen Beitrag anzeigen

Furtbichler
(Gast)

n/a Beiträge
 
#4

AW: Parserbau Grundlagen + Verständnisfrage

  Alt 23. Sep 2012, 11:22
Ich würde noch den zu parsenden Text nicht als Liste von Zeilen ansehen, sondern als einen einzigen String. Den Zeilenvorschub kannst Du als Leerzeichen behandeln (beim einlesen). Dann ist alles viel transparenter und dein Skipspaces wird zu einem einfachen

Delphi-Quellcode:
Procedure SkipSpaces;
Begin
  While (TextPos<Length(MyText)) and (MyText[TextPos] in WhiteSpaceCharacters) do
    inc(TextPos);

  If TextPos>Length(MyTExt) Then
    TextIsAtEof := True;
End;
Noch viel transparenter wird es so (finde ich)
Delphi-Quellcode:
Procedure Advance;
Begin
  if TextisAtEof Then
    Raise EParserException.Create('Tried to read past eof');
  inc(TextPos);
  If TextPos>Length(MyTExt) Then
    TextIsAtEof := True;
End;

Procedure SkipSpaces;
Begin
  While not TextIsAtEof and (MyText[TextPos] in WhiteSpaceCharacters) do
    inc(TextPos);
End;
Das saubere 'Advance' kannst Du auch in deinem 'GetToken' verwenden.
  Mit Zitat antworten Zitat