Wie parst man sinnvoll?

Status
Nicht offen für weitere Antworten.

mephi

Bekanntes Mitglied
Hi,
stehe gerade vor dem Problem als parameter für ein Plugin doch sehr komische Werte zu bekommen und da ist mir aufgefallen.. ich hab mir noch nie Gedanken gemacht wie man am sinnvollsten parst.
Bisher sind es 3 Parameter mit 3 möglichen Werten, also könnte ich ja einfach 9 if abfragen machen. aber das ist doch doof.
Wie macht ihr sowas?
 
So pauschal ist das natürlich schlecht zu beantworten. Bei einem Parser für eine formale Syntax (Programmiersprachen, mathematische Ausdrücke) hat man ja ein gewissen Kontingent an Schlüsselwörtern und Operatoren bzw. Unterbrechungszeichen ("break characters" - also beispielsweise Space oder Semikolon).

Man zerlegt den zu parsenden String dann erstmal in Tokens anhand der Operatoren bzw. Unterbrechungszeichen. Die zulässigen Operatoren und Schlüsselwörter hat man dann ja in irgendeiner leicht zugreifbaren Datenstruktur (Array/Listen) abgelegt, kann also den String bequem in (numerische) Tokens überführen. Alles was danach noch nicht numerisch vorliegt, ist ein Parameter/Operand und muß entsprechend behandelt werden (z.B. Stringdarstellung einer Zahl in Zahl konvertieren).

Wie auch immer: die relevanten Schlüsselwörter usw. hat man ja bereits als Tokens und die kann man bequem in einer Switch-Struktur abfragen.

Bei einem echten Parser kommt man en diesem Vorgehen quasi nicht vorbei, wenn man es einigermaßen übersichtlich halten will. Bei sehr kleinen/überschaubaren Parameterabfragen kann natürlich auch ein verschachteltes IF sinnvoll sein.
 
sollen parameter über den status eines objekts oder die funktionsweise einer methode bestimmen, sollten sie aus einem primitiven datentyp bestehen. boolean, int oder enum.

strings als parameter macht nur dann sinn, wenn sie entweder 1:1 für irgendwas übernommen werden (z.b. ein pfad zum speichern einer datei) oder wenn die methode tatsächlich informationen aus diesem string herauslesen soll (z.b. ein parser für mathematische funktionen).
 
die parameter kann ich nur über n string bekommen. und die parameter werden für verschiedene dinge gebraucht.
breite, align, float, border usw..
insgesagt 3 datentypen. int, string und boolean
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben