Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Lexikalischer Scanner (https://www.delphipraxis.net/123136-lexikalischer-scanner.html)

Alaitoc 5. Nov 2008 14:34

Re: Lexikalischer Scanner
 
So melde mich nu auch wieder :)

Bisher sieht mein sozusagen "Überprüfungscode" so aus:

Delphi-Quellcode:
procedure TLexer.CheckText;
var
  i:Integer;
begin
  i:=0;
  while i <> length(m_Text)+1 do
  begin
 
    case m_Text[i] of
      'A'..'Z','a'..'z':
      begin
        case m_Text[i-1] of
          'A'..'Z','a'..'z':
          begin
            Insert('*',m_Text,i);
            Insert('1',m_Text,i);
            Insert('*',m_Text,i);
          end;
          '0'..'9':
          begin
            Insert('*',m_Text,i);
          end;
          '+','-','/':
          begin
            Insert('*',m_Text,i);
            Insert('1',m_Text,i);
          end;
          #0:
          begin
            Insert('*',m_Text,i);
            Insert('1',m_Text,i);
          end;
        end;
      end;
    end;

    case m_Text[i] of
      '(':
      begin
        case m_Text[i-1] of
          'A'..'Z','a'..'z':
          begin
            Insert('*',m_Text,i);
          end;
          '0'..'9':
          begin
            Insert('*',m_Text,i);
          end;
        end;
      end;
    end;

    case m_Text[i] of
      '0'..'9':
      begin
        case m_Text[i-1] of
          'A'..'Z','a'..'z':
          begin
            Insert('*',m_Text,i);
          end;
        end;
      end;
    end;
    inc(i);
  end;
end;
Bisher klappt es und er fügt die Zeichen immer ein:

z.b. 2x^2+3ab*5 = 2*x^2+2+3*a*1*b*5

weil mit so ner Struktur ist die Erkennung der Variablen leichter, eine Variable besteht immer aus:

Ziffer * Variable

unter Umständen dann noch

Ziffer * Variable ^ Ziffer

Zur Zeit bin ich am Zusammenfassen der Variablen, Addition und Subtraktion funktionieren schonmal soweit.

MfG Alaitoc


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:41 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz