Einzelnen Beitrag anzeigen

Alaitoc

Registriert seit: 24. Okt 2008
263 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Lexikalischer Scanner

  Alt 5. Nov 2008, 14:34
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
  Mit Zitat antworten Zitat