我已经使用Rhino解析了javascript源并成功重建了它。
当我打电话给 astroot.toSource() 时,它会向我显示重建来源。
但 .toSource() 方法无法打印评论。
使用 .toSource()方法,我所有的javascript源代码的注释都会消失。
那么,我如何获得包含评论的完整资源?
我的目标是将AstRoot Object(包含源代码)写入包含完整注释的新javascript文件。
我正在使用Rhino 1.7R4
答案 0 :(得分:0)
一般来说,这很困难,因为评论可以出现在任何翻译,状态或表达的中间。那么如何在各种AST对象中表示这一事实呢?它可以完成但是对于解析器和它创建的AST对象来说非常混乱。
如果您仅限于允许对语句边界进行注释,则可以采用一些可能的解决方案。
一种方法是编写自己的javascript tokenizer并在读取文件时检查流。然后你需要弄清楚如何跟踪它们。一种hackish方式是将它们转换为'var somexXXxx =“comment”;'并在ast.toSource()调用之后使用命名约定将它们转换回来。这会将您的注释映射到AST节点结构。