Generieren von PHP-Code (aus Parser-Token)

9

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).

    
wen 21.02.2011, 16:11
quelle

4 Antworten

1

Wenn ich mich nicht irre Ссылка verwendet token_get_all () und schreibt den Stream dann neu. Es verwendet Methoden wie t_else und t_close_brace , um jedes Token auszugeben. Vielleicht können Sie dies aus Gründen der Einfachheit übernehmen.

    
mario 21.02.2011, 16:54
quelle
2

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.

Lösung mit PHP_Beautifier

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

%Vor%

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     

%Vor%     
wen 21.02.2011 16:51
quelle
2

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.

    
anthonygore 18.10.2015 04:55
quelle
0

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).

    
Ira Baxter 02.03.2011 05:17
quelle

Tags und Links