2011-08-09 22 views
14

Cada vez que veo el filtro fuente término me quedo pensando en cuanto a lo que se refiere.¿Qué es exactamente un filtro de origen?

Aparte de una definición formal, creo que un ejemplo también sería útil para conducir el mensaje a casa.

+0

@mu es demasiado corto: para ser sincero, no sé si esto es algo específico de Perl o no – Zaid

Respuesta

19

Un filtro de fuente es un módulo que modifica algún otro código antes de que se evalúa. Por lo tanto, el código que se ejecuta no es lo que ve el programador cuando se escribe. Puede leer más sobre los filtros fuente (en el contexto de Perl) al perldoc perlfilter. Algunos ejemplos son Smart::Comments que le permite al programador dejar los comandos de depuración en comentarios en el código y emplearlos solo si así lo desea, otro es PDL::NiceSlice que es azúcar para cortar objetos PDL.

Editar:

Para obtener más información sobre el uso (en caso de que deseen enfrentarse a la bestia), leer la documentación de Filter::Simple que es una forma típica para crear filtros.

Alternativamente, hay una nueva y diferente forma de rebuscar con la fuente: Devel::Declare le permite interactuar con el propio analizador de Perl, lo que le permite hacer muchas cosas similares a un filtro de origen, pero sin el filtro de origen. Esto puede ser "más seguro" en algún aspecto, pero tiene un alcance más limitado.

+0

¡No sabía que estaba allí en 'perldoc'! – Zaid

+1

¡No es 'perldoc' genial! Se –

+0

(siempre que conoce bien a) – Zaid

7

Un filtro fuente es una forma de módulo que afecta a la forma en la que se analizará un archivo use -ing ella. Se usan comúnmente para simular características sintácticas que Perl no posee de forma nativa; por ejemplo, el filtro fuente Switch se usó a menudo para simular instrucciones de cambio antes de que estuviera disponible la construcción de given { } de Perl.

filtros fuente de trabajo mediante la adopción del texto del módulo como entrada, la realización de algún tipo de procesamiento en ella, y dar salida al código fuente filtrada. Para obtener un ejemplo simple de cómo se implementa un filtro de origen, así como más detalles, consulte la página de perldoc para perlfilter.

4

Ellos son pre-procesadores. Cambian el código fuente antes de que llegue al compilador de Perl. Puede hacer cosas aterradoras con ellos, implementando su propio lenguaje, con todos los efectos que esto tiene sobre la legibilidad (para otros), la solidez (los analizadores de escritura son difíciles) y la mantenibilidad (la depuración se complica cuando su idea de cuál es el código fuente difiere de lo que creen el compilador y el tiempo de ejecución).