Sagt mal, ich müssts eigentlich selbst wissen. Aber wie kann ich einen Lexer & Parser für eine simple Sprache bauen?
Weiß schon garnicht mehr wie ich anfangen kann.
Worums eigentlich geht:
Ich möchte über eine XML eine Website-Konfiguration ermöglichen, beispielsweise:
Wie parse ich den Schlonz jetzt? Denn ohne das zu parsen, müsste ich wohl oder übel eval() verwenden, die Tür stände offen für Code-Injection. Ein unbeabsichtigt erzeugter Parse-Error wäre auch denkbar.
Ich könnte zwar mit get_defined_constants() und array_filter alle E_* Konstanten ermitteln, prüfen ob in dem Tag diese Konstanten plus erlaubte Zeichen | ^ & + vorkommen, aber einen Syntax-Error könnte man so trotzdem noch erzeugen.
Ideen? Eigentlich ist da ein Parser schon wieder oversized, aber vielleicht gibts ja eine schlanke Bibliothek, der man nur das Alphabet und ein paar bekannte Regeln übergeben muss und dann wird getestet. RegExp sind hier glaube ich nicht mächtig genug - oder?
Weiß schon garnicht mehr wie ich anfangen kann.
Worums eigentlich geht:
Ich möchte über eine XML eine Website-Konfiguration ermöglichen, beispielsweise:
Code:
.. <error_reporting>E_ALL | E_STRICT</error_reporting> ..
Ich könnte zwar mit get_defined_constants() und array_filter alle E_* Konstanten ermitteln, prüfen ob in dem Tag diese Konstanten plus erlaubte Zeichen | ^ & + vorkommen, aber einen Syntax-Error könnte man so trotzdem noch erzeugen.
Ideen? Eigentlich ist da ein Parser schon wieder oversized, aber vielleicht gibts ja eine schlanke Bibliothek, der man nur das Alphabet und ein paar bekannte Regeln übergeben muss und dann wird getestet. RegExp sind hier glaube ich nicht mächtig genug - oder?

Kommentar