Hilfe beim Parsen von Define-Strings

Begonnen von Markus Bloch, 11 April 2013, 20:23:09

Vorheriges Thema - Nächstes Thema

Markus Bloch

Hallo zusammen,

irgendwie stehe ich gerade auf dem Schlauch. Ich will einen Modul-Define-String parsen z.B. so aussieht:


name PRESENCE shellscript "/opt/script.sh -arg1 -arg2" variable1 variable2


name PRESENCE {perlfunction("arg1 with spaces", "arg2");;} variable1 variable2


In beiden Fällen kann man den String nicht nach Whitespaces trennen, da diese ja durchaus variabel sind. Ich will also den Inhalt zwischen " und zwischen { oder } in einer Variable speichern.

Für das erste Beispiel eignet sich das Perl Standardmodul Text::ParseWords aber das funktioniert nicht für {}.

Gibt es hier ein allgm. Vorgehensweise oder wie lässt sich das am besten machen

Vielen Dank

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Markus Bloch

Hat sich erledigt, ich habs mit Regex gelöst.
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Dr. Boris Neubert

Zitat von: Markus Bloch schrieb am Fr, 12 April 2013 23:53Hat sich erledigt, ich habs mit Regex gelöst.

Hallo Markus,

hast Du die Muße, die ich nicht habe?

Wir würden an sich gerne in FHEM einen echten Parser verwenden, weil das Parsen über Regexps uns einschränkt und Konstrukte wie ;; statt ; nötig macht, was nicht nur für Einsteiger verwirrend ist.

Ich hatte vor einigen Wochen Parse::RecDescent als Modul vorausgewählt (siehe Thread dazu). Das Package hat keine Abhängigkeiten und könnte in FHEM/lib mitgeliefert werden.

Es müßte vorab getestet werden, welchen Speicherverbrauch eine Verwendung erzeugt. Wenn das Ergebnis zu Rudis Zufriedenheit ausfällt, könnten wir eine Grammatik für FHEM-Kommandos schreiben und die FHEM-Kommandos fortan mit Parse::RecDescent parsen. Das wäre ein echter Befreiungsschlag.

Ich würde bei der Entwicklung mithelfen. Alleine kann ich das derzeit wegen einer Reihe anderer Betätigungen nicht leisten.

Viele Grüße
Boris

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!