2011-11-24 12 views
5

È possibile convertire AST in CoffeeScript anziché in JavaScript? Un progetto su cui sto lavorando in pratica richiede di trasformare tutto il CoffeeScript in AST, analizzare l'AST, quindi trasformare parti dell'AST in CoffeeScript. Capisco che la trasformazione di ritorno sarebbe "in perdita" rispetto al codice originale, ma va bene.Come posso compilare CoffeeScript AST in CoffeeScript invece di JavaScript?

Vorrei davvero evitare di dover compilare quelle parti su JavaScript e quindi tornare a CoffeeScript.

risposta

4

Vedere round_trip.coffee a CoffeeCoffee progetto (io sono l'autore):

Non coprire tutti i casi, ma è un inizio.

+0

Questo sembra promettente! Sono un po 'sopra la mia testa qui però ... Come (nell'ambiente del browser) sarei in grado di inserire una porzione di AST e ricevere il codice coffeescript? È possibile? Grazie! – gkz

3

È possibile, ma richiede di giocare con il codice sorgente di Coffeescript. È necessario acquisire familiarità con il modo in cui Coffeescript esegue la tokenizzazione, quindi come trasforma i token in AST. Il codice sorgente in questione è in coffee-script/src su Github.

Se si guarda nel file coffee-script/src/nodes.coffee, vedrete un sacco di sottoclassi Nodo, ognuno con le proprie funzioni di compilazione (come compile(), compileNode(), etc.). Questi definiscono come l'albero viene trasformato in codice javascript. Se invece si desidera generare codice Coffeescript, è necessario sovrascriverli tutti, sul proprio fork del progetto.