2011-11-24 28 views
5

Có thể biến AST trở lại CoffeeScript thay vì thành JavaScript không? Một dự án tôi đang làm việc về cơ bản đòi hỏi phải biến tất cả CoffeeScript thành AST, phân tích AST, sau đó chuyển các phần của AST trở lại thành CoffeeScript. Tôi hiểu việc chuyển đổi trở lại sẽ là 'mất mát' liên quan đến mã ban đầu, nhưng điều này là ổn.Tôi làm cách nào để biên dịch AST CoffeeScript thành CoffeeScript thay vì JavaScript?

Tôi thực sự muốn tránh phải biên dịch các phần đó thành JavaScript và sau đó quay lại CoffeeScript.

Trả lời

4

Xem round_trip.coffee trong CoffeeCoffee dự án (Tôi là tác giả):

Tôi không bao gồm mọi trường hợp, nhưng đó là một sự khởi đầu.

+0

Điều này có vẻ đầy hứa hẹn! Mặc dù vậy, tôi hơi ở đây một chút ... Làm cách nào (trong môi trường trình duyệt) tôi có thể nhập phần của AST và nhận lại mã coffeescript? Điều đó thậm chí có thể? Cảm ơn! – gkz

3

Có thể, nhưng nó đòi hỏi bạn phải chơi với mã nguồn của Coffeescript. Bạn cần phải làm quen với cách mà Coffeescript làm tokenization, sau đó làm thế nào nó biến token thành AST. Mã nguồn được đề cập nằm trong số coffee-script/src trên Github.

Nếu bạn nhìn vào tệp coffee-script/src/nodes.coffee, bạn sẽ thấy một loạt các lớp con Node, mỗi lớp có các hàm biên dịch riêng của chúng (như compile(), compileNode(), v.v.). Chúng xác định cách cây được chuyển thành mã javascript. Nếu bạn muốn tạo mã Coffeescript thay thế, bạn cần phải ghi đè tất cả chúng, trên ngã ba của dự án của bạn.

Các vấn đề liên quan