auch wenn ich DirectX zum Glück nicht benutze und daher keine Ahnung davon habe, würde ich dir empfehlen, auf einen existierenden Parser zurückzugreifen. Bestimmt hat jemand das Rad bereits erfunden und mehr Zeit, Arbeit und Sorgfalt investiert, als Du es tun wirst.
Wenn Du trotzdem einen eigenen Parser haben willst, würde ich erst einmal einen Lexer schreiben, der das Script in Token zerlegt, also (am Beispiel von C) aus:
|
C-/C++-Quelltext
|
1
|
int myInt = 29;
|
eine Liste aller enthaltenen Elemente (Token) anfertigt:
|
C-/C++-Quelltext
|
1
2
3
4
5
|
int
myInt
=
29
;
|
Anschließend kann der Parser herausfinden, um welche Typen es sich bei den Token handelt. int bezeichnet einen eingebauten Variablentyp, myInt ist ein Bezeichner, = ein Operator und 29 eine (natürliche/Dezimal-)Zahl.
Token zu erkennen kann schwierig sein. In obigem Beispiel wird fast jedes Token durch ein Leerzeichen von den anderen getrennt. Das Semikolon jedoch kann nur als Token erkannt werden, weil der Lexer weiß, dass Zahlen nur aus einer oder mehreren Ziffern, gefolgt von einem Dezimalpunkt, gefolgt von einer oder mehreren Ziffern bestehen kann (google mal nach EBNF); eine Zahl darf also kein Semikolon enthalten, folglich ist das Semikolon ein neues Token und/oder ein Fehler.
Wenn Du nun eine Liste aller vorkommenden Token in einem array oder besser einem SL container vorliegen hast, musst Du noch die Syntax prüfen. Wenn das erste Token einer Zeile zum Beispiel "Vector" ist, könntest Du prüfen, ob die folgenden n Token vom Typ "{", float, float, float "}" sind und falls ja, die drei Floats in einem Vektor speichern.
Na ja, ich bin kein Crack aber vielleicht hilft das als kleine Übersicht.
Es gibt übrigens auch Parser-Generatoren, die Du mit EBNF-Statements fütterst und dir dann einen c++ Parser erzeugen, zum Beispiel Flex.