Thread If Befehle in Textdatei (13 answers)
Opened by KevinHuhm at 2011-09-29 20:13

topeg
 2011-09-30 02:45
#152784 #152784
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Du versuchst dich an Codeoptimierung. Ich hoffe du hast etwas Programmiererfahrung, für einen Anfänger kann das sehr schnell sehr frustrierend werden.

Dazu brauchst du einen Parser, der die Struktur der Programmiersprache erkennt und die Sprachelemente in eine Struktur wandelt.
Ein Interpreter wird gebraucht, der die Variablen mit den vorgegebenen Bedingungen prüft und die Codeteile in der Struktur markiert, die niemals erreicht werden.
Zum Schluss brauchst du einen Compiler, der vom Parser/Interpreter erzeugte Struktur wieder in die Sprachelemente übersetzt.

Jedes für sich ist eine Herausforderung.

Alle drei Teilbereiche werden über eine Datenstruktur verbunden, welche die Befehlsstruktur der Programmiersprache abbildet. Sich darüber klar zu werden, wie diese Aussehen muss ist die erste Hürde.

Beim Parsen der Sprache musst du sicher stellen, dass dies immer im Sinne der Logik, die hinter der Sprache steht, geschieht. Hier brauchst du nicht nur einen vollständigen Überblick über alle Befehle, sondern auch darüber wie andere Interpreter/Compiler diese parsen/umsetzen.

Das Erzeugen des Codes aus der Datenstruktur ist vergleichsweise einfach, kann aber dennoch einige Hürden haben, da die Struktur nicht zwangsläufig dem Ablauf des Codetextes folgen muss.

Das Optimieren des Codes ist der schwierigste Teil und die Komplexität dieses Teiles hängt essenziell von der Komplexität der Programmiersprache ab.

Reihen von IF Bedingungen sind recht einfach durch eine lineare Analyse zu lösen. Schwieriger wird es bei Schleifen.
Mal ein Beispiel:
Code: (dl )
1
2
3
4
5
6
7
8
a=1
b=0
WHILE (a<5) OR (b>1)
a=a+1
IF (a>4)
b=5
ENDIF
WEND

Das ist schon durch eine lineare Analyse des Codes nicht mehr zu lösen. Wenn nun noch so Befehle wie GOTO existieren, dann wird es Kompliziert.

Weiterhin hat eine Programmiersprache auch Variablen dessen Inhalte unbestimmt sind, da sie z.B eine Benutzereingabe enthalten können. Auch zuvor bestimmte Variablen können später unbestimmt sein.

Um eine ordentliche Analyse durchführen zu können musst du einen Interpreter schreiben, der Aktionen auf bestimmte Variablen ausführt und unbestimmte erkennt und markiert. Weiterhin muss er die Bereiche des Codes erkennen und Markieren, die durch bestimmte Variablen niemals erreicht werden.

Das ist ein Problem das man nicht auf die leichte Schulter nehmen kann. Wenn man nicht sehr sorgfältig arbeitet wird das zu unberechenbaren Ergebnissen führt. Ich spreche aus Erfahrung.

View full thread If Befehle in Textdatei