Include this extension in the PHP core and provide a hook API
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 20/100
Direzione di ricerca
Esamina la funzione register_parser_extension proposta e ParserExtensionInterface con il suo metodo process(Node $node), quindi segui il flusso Source Code → Tokenizer → AST → Engine hooks → Compiler descritto nell’issue. Definisci l’integrazione con PHP-core e il comportamento degli hook prima dell’implementazione; il lavoro è completato quando esiste un’API definita e le estensioni userland possono trasformare i nodi AST prima della generazione degli opcode.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
I want to suggest to include this extension into the core to provide an API for miscellaneous userland extensions. Main idea is to give a userland code control over the produced source-code.
Chain is following: Source Code => Tokenizer => AST => Engine hooks+PHP userland hooks => Compiler => Opcodes => Execution
Why it can be a great thing: native source-code AST (static analyzers, code beautifiers), language extensions (AOP, DbC, SQL-like native syntax).
This requires to create an userland-function, probably, register_parser_extension(ParserExtensionInterface $extension) that will add an extension as parser hook.
Next additional thing is ParserExtensionInterface interface with process(Node $node) method that will receive ast\Node class and should return a modified node or tree.
Each registered extension will be called consequently, allowing to transform the source code. Last result will be used by compiler to generate final version of opcodes.
- Lingua principale
- PHP
- Stelle
- 983
- Fork
- 81
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di nikic/php-ast
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 45/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 35/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 20/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
Tutte le issue di nikic/php-ast
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
getgrav/grav-plugin-sitemap#125 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
nikic/PHP-Parser#1184 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
shukiv/jabali-panel#2474 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100