Gibt es eine verfügbare Lösung zum (erneuten) Generieren von PHP-Code aus den Parser-Tokens , die zurückgegeben werden token_get_all
? Andere Lösungen zum Erzeugen von PHP-Code sind ebenfalls willkommen, vorzugsweise mit dem zugehörigen Lexer / Parser (falls vorhanden).
Von meinem Kommentar:
Sieht jemand ein potenzielles Problem, wenn ich einfach einen großen Schalter schreibe Anweisung, in die Token zurück konvertiert werden sollen ihre String-Darstellungen (d.h. T_DO zu "tun"), map das über die Token, mit Leerzeichen verbinden und suchen eine Art PHP-Code, der schön gedruckt wird Lösung?
Nach einigem Hinsehen fand ich in eine selbst erstellte PHP-Lösung diese Frage, die tatsächlich die PHP Tokenizer-Schnittstelle verwendet, sowie einige PHP-Code-Formatierungswerkzeuge, die konfigurierbarer sind (aber die Lösung wie oben beschrieben benötigen würden).
Diese könnten verwendet werden, um schnell eine Lösung zu realisieren. Ich werde hier zurück posten, wenn ich etwas Zeit finde, das zu kochen.
Das ist die schnelle Lösung, die ich mir ausgedacht habe, ich werde es hier als Teil der Frage belassen. Beachten Sie, dass Sie die PHP_Beautifier-Klasse aufbrechen müssen, indem Sie alles ändern (wahrscheinlich nicht alles, aber das ist einfacher), das privat zu geschützt ist , damit Sie es tatsächlich tun können Verwenden Sie die internen Funktionen von PHP_Beautifier (andernfalls war es unmöglich, die Funktionalität von PHP_Beautifier wiederzuverwenden, ohne die Hälfte ihres Codes neu zu implementieren).
Eine Beispielverwendung der Klasse wäre:
file: main.php
Da PHP2PHP PHP_Beautifier erweitert, ermöglicht es die gleiche Feineinstellung unter der gleichen API, die PHP_Beautifier verwendet. Die Klasse selbst ist:
file: PHP2PHP.php
In der Kategorie "andere Lösungen" können Sie PHP Parser ausprobieren.
Der Parser wandelt den PHP-Quellcode in einen abstrakten Syntaxbaum um. Außerdem können Sie einen Syntaxbaum in PHP-Code zurückkonvertieren.
Sehen Sie sich unser PHP-Frontend an. Es ist ein vollständiger PHP-Parser, der automatisch ASTs erstellt, und ein passender Prettyprinter, der kompilierbaren PHP-Code zusammen mit den ursprünglichen Comments regeneriert. (EDIT 12/2011: In dieser SO-Antwort finden Sie weitere Details zum Pretty-Druck von ASTs, bei denen es sich nur um eine organisierte Version der Token handelt: Ссылка )
Das Frontend baut auf unserem DMS Software Reengineering Toolkit auf und ermöglicht so die Analyse und Transformation von PHP ASTs (und dann über den Prettyprinter-Code).
Tags und Links php tokenize code-generation