Include this extension in the PHP core and provide a hook API
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 20/100
Línea de trabajo
Revisa la función register_parser_extension propuesta y ParserExtensionInterface con su método process(Node $node), y luego sigue el flujo Source Code → Tokenizer → AST → Engine hooks → Compiler descrito en el issue. Define la integración con PHP-core y el comportamiento de los hooks antes de la implementación; se considera completado cuando exista una API establecida y las extensiones de userland puedan transformar nodos AST antes de la generación de opcodes.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- PHP
- Estrellas
- 983
- Forks
- 81
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de nikic/php-ast
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 45/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 20/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
Todos los issues de nikic/php-ast
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
getgrav/grav-plugin-sitemap#125 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
nikic/PHP-Parser#1184 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
shukiv/jabali-panel#2474 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100