Cosas me gustan de Boo

Vamos por lo primero, Boo, es un lenguaje creado por el bueno de Rodrigo B. de Oliveira, y corre sobre .Net.

Macros: El compilador de Boo, tiene cosas muchas interesantes a notar, una de las que más me gustó es la capacidad de escribir macros. Vamos a un ejemplo:

Console.WriteLine(”Hola mundo”)

Podemos usar el macro print:

print “Hola mundo”

Todo lo que hay que hacer es heredar de la clase abstracta AbstractAstMacro y programar un poco. No hay magia aquí, el compilador está esperando una interfaz, y nosotros se la damos.

Para comenzar con el mundo de las macros, aconsejo que descarguen el código de Boo, o tomen a reflector de las orejas para mirar dentro de Boo.Lang.Compiller.dll y fíjense como hace para implementar el macro print y debug, ambos se relacionan por que comparten la misma clase base (y abstracta por cierto): AbstractPrintMacro. Y luego cada uno implementa su macro: PrintMacro y DebugMacro. Por cierto, creo que es un ejemplo bastante sencillo para comenzar.

La idea base dentro de AbstractPrintMacro es: Si nos pasan 0 ó 1 argumento, devolvemos al compilador un ExpressionStatement, y sino ( > 1) devolvemos un Block, que vendria a hacer algo así como un conjunto de ExpressionStatement, un composite. La expresión que nos pasen dependerá de las sub-clases: es decir, si queremos hacer un print o un debug, System.Console.WriteLine/Write ó System.Diagnostics.Debug.WriteLine/Write respectivamente.

Y como esto es .Net, podemos hacer las macros en cualquier lenguaje que tenga su compilador en .Net.

Un ejemplo de la flexibilidad de las macros es la librería Rhino Mocks Boo Macros

Leave a comment

Please be polite and on topic. Your e-mail will never be published.