2011-11-24 18 views
5

¿Es posible volver a convertir el AST en CoffeeScript en lugar de hacerlo en JavaScript? Un proyecto en el que estoy trabajando básicamente requiere convertir todo el CoffeeScript en AST, analizar el AST y luego convertir parte de AST en CoffeeScript. Entiendo que la transformación de vuelta sería 'con pérdida' con respecto al código original, pero está bien.¿Cómo puedo compilar CoffeeScript AST en CoffeeScript en lugar de JavaScript?

Realmente me gustaría evitar tener que compilar esas partes en JavaScript y luego volver a CoffeeScript.

Respuesta

4

Ver round_trip.coffee en CoffeeCoffee proyecto (yo soy el autor):

no cubro todos los casos, pero es un comienzo.

+0

¡Esto parece prometedor! Aunque estoy un poco loco aquí ... ¿Cómo (en el entorno del navegador) podría ingresar parte de AST y recibir el código de coffeescript? ¿Es eso posible? ¡Gracias! – gkz

3

Es posible, pero requiere jugar con el código fuente de Coffeescript. Debes familiarizarte con la forma en que Coffeescript realiza la tokenización, y luego cómo convierte los tokens en AST. El código fuente en cuestión está en coffee-script/src en Github.

Si nos fijamos en el archivo coffee-script/src/nodes.coffee, verá un montón de subclases de nodos, cada uno con sus propias funciones de compilación (como compile(), compileNode(), etc.). Estos definen cómo el árbol se convierte en código JavaScript. Si desea generar el código de Coffeescript en su lugar, debe sobrescribir todos ellos, en su propio tenedor del proyecto.