gpt4 book ai didi

javascript - 如何使用 CoffeeScript API 来操作 AST 并写入 .coffee 输出

转载 作者:行者123 更新时间:2023-12-02 18:29:06 26 4
gpt4 key购买 nike

我想要创建一些读取源 .coffee 文件的函数,使用 CoffeeScript 解析器检查 AST(可能使用 traverseChildren 函数),更改一些节点,然后将更改后的 AST 写回到目标 .coffee文件。

此类操作的一个简单(但无用)示例是,我想查找树中的所有字符串并连接“Luis was here”。所以如果我有

console.log 'Hello, world!'

然后在我的函数遍历该文件后,它将生成:

console.log 'Hello, world!Luis was here'

这仍然是 CoffeeScript,而不是“编译”的 JavaScript。读取 .coffee 并生成 .js 非常容易,但这不是我想要的。我找不到使用 CoffeeScript API 来完成此类任务的方法。

预先感谢您的帮助...

最佳答案

由于 CoffeeScript 编译器是用 CoffeeScript 编写的,因此您可以在 CoffeeScript 中使用它。编写另一个 CoffeeScript 程序来读取源代码、操作 AST,然后编写 JavaScript:

一个简短的示例,例如在 mycustom.coffee 文件中:

fs = require 'fs'
coffee = require 'coffee-script'

generateCustom = (source, destination, callback) ->
nodes = coffee.nodes source
# You now have access to the AST through nodes
# Walk the AST, modify it...
# and then write the JavaScript via compile()
js = nodes.compile()
fs.writeFile destination, js, (err) ->
if err then throw err
callback 'Done'

destination = process.argv[3]
source = process.argv[2]
generateCustom source, destination, (report) -> console.log report

像这样调用这个程序:

>咖啡mycustom.coffee source.coffee destination.js

也就是说,如果您的转换非常简单,那么您可能会更容易通过操作 token 流来创建自定义重写器。

关于javascript - 如何使用 CoffeeScript API 来操作 AST 并写入 .coffee 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18012986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com