Как я могу скомпилировать CoffeeScript AST в CoffeeScript вместо JavaScript? - PullRequest
5 голосов
/ 24 ноября 2011

Можно ли превратить AST обратно в CoffeeScript вместо JavaScript?Проект, над которым я работаю, в основном требует превращения всего CoffeeScript в AST, анализа AST, а затем превращения частей AST обратно в CoffeeScript.Я понимаю, что обратное преобразование будет «потерянным» в отношении исходного кода, но это нормально.

Я действительно хотел бы избежать необходимости компилировать эти части в JavaScript, а затем обратно в CoffeeScript.

Ответы [ 2 ]

4 голосов
/ 24 ноября 2011

См. Round_trip.coffee в проекте CoffeeCoffee (я автор):

Я не освещаю все случаи, но это начало.

3 голосов
/ 24 ноября 2011

Это возможно, но для этого нужно поиграть с исходным кодом Coffeescript. Вам нужно ознакомиться с тем, как Coffeescript выполняет токенизацию, и как она превращает токены в AST. Рассматриваемый исходный код находится в coffee-script / src на Github.

Если вы загляните в файл coffee-script / src / node.coffee , вы увидите несколько подклассов Node, каждый со своими собственными функциями компиляции (например, compile(), compileNode() , так далее.). Они определяют, как дерево превращается в код JavaScript. Если вы хотите сгенерировать код Coffeescript вместо этого, вам нужно переопределить их все на своем собственном форке проекта.

...