我已经使用 Rhino 解析了 javascript 源代码并成功地重建了它。
当我调用astroot.toSource()时,它向我展示了重建的源代码。
但是.toSource()方法不能打印评论。
使用.toSource()方法,我所有的 javascript 源的评论都消失了。
那么,我怎样才能获得包括评论在内的完整来源?
我的目标是将 AstRoot Object(contain source) 写入一个包含完整注释的新 javascript 文件。
我正在使用犀牛 1.7R4
我已经使用 Rhino 解析了 javascript 源代码并成功地重建了它。
当我调用astroot.toSource()时,它向我展示了重建的源代码。
但是.toSource()方法不能打印评论。
使用.toSource()方法,我所有的 javascript 源的评论都消失了。
那么,我怎样才能获得包括评论在内的完整来源?
我的目标是将 AstRoot Object(contain source) 写入一个包含完整注释的新 javascript 文件。
我正在使用犀牛 1.7R4
一般来说,这很困难,因为注释可以出现在任何声明、语句或表达式的中间。那么如何在各种 AST 对象中表示这一事实呢?它可以完成,但对于解析器及其创建的 AST 对象来说非常混乱。
如果您限制自己只允许对语句边界进行评论,那么有一些可能的解决方案。
一种方法是编写自己的 javascript 标记器并在读取文件时检查流。然后你需要弄清楚如何跟踪它们。一种骇人听闻的方法是将它们转换为 'var somexxxxx = "comment";' 并在 ast.toSource() 调用后使用命名约定将它们转换回来。这会将您的评论映射到 AST 节点结构中。