Hallo!
Ich hänge seit einer Woche an diesem blöden Zuweisungsscanner und weiß echt nicht weiter, das ist die Aufgabe:
Ich soll eine Art Zuweisungsscanner implementieren, der aus einem edit-feld die einzelnen Bestandteile rauszieht, in einem Array in einer zweiten
Unit speichert und dass ganze dann in einer Listbox wiedergibt. Dabei soll das ganze ungefähr so aussehen:
Eingetippt: a:=b;
Ausgabe:
a
:=
b
;
oder:
anna:=34 + jojo;
=>
anna
:=
34
+
jojo
;
Hier ist schon etwas quelltext:
Delphi-Quellcode:
unit zScanclss;
interface
type tTokenfolge=array[1..100]
of string;
type tOperatormenge =
set of '
*'..'
/';
//Menge von Zeichen (=char) von .. bis
// bezogen auf den ASCII-Code
type tZuweisungsScanner =
class
private
Tokenfolge: tTokenfolge;
index : integer;
// Aktueller Tokenfolgenindex
Operatormenge: tOperatormenge;
public
constructor create;
function isOperator(c: char): boolean;
procedure makeTokenfolge(quelle :
string);
function getTokenfolge: tTokenfolge;
end;
implementation
constructor tZuweisungsScanner.create;
begin
Operatormenge := ['
*','
+','
-','
/'];
index:=0;
// Noch kein Token ermittelt.
end;
function tZuweisungsScanner.isOperator(c: char): boolean;
begin
result := (c
in Operatormenge);
// Ist c in der Menge enthalten?
end;
procedure tZuweisungsScanner.makeTokenfolge(quelle :
string);
var l,x:integer;
begin
l:=length(quelle);
for x:=1
to l
do begin
Tokenfolge[x]:=quelle[x];
end;
end;
function tZuweisungsScanner.getTokenfolge: tTokenfolge;
var i:integer;
begin
result[1]:=tokenfolge[1];
i:=1;
while tokenfolge[i+1]<>'
:'
do begin
result[1]:=result[i];
inc(i);
end;
result[2]:='
:=';
//while
end;
end.
Da stellt sich mir immer die Frage:
Könnt ihr mir da helfen? Wär echt super!
Bye!
Fee