如何使用Rhino将“AstRoot”对象写入包含注释的文件?

时间:2013-04-11 00:52:14

标签: java javascript rhino

我已经使用Rhino解析了javascript源并成功重建了它。

当我打电话给 astroot.toSource() 时,它会向我显示重建来源。

.toSource() 方法无法打印评论。

使用 .toSource()方法,我所有的javascript源代码的注释都会消失。

那么,我如何获得包含评论的完整资源?

我的目标是将AstRoot Object(包含源代码)写入包含完整注释的新javascript文件。

我正在使用Rhino 1.7R4

1 个答案:

答案 0 :(得分:0)

一般来说,这很困难,因为评论可以出现在任何翻译,状态或表达的中间。那么如何在各种AST对象中表示这一事实呢?它可以完成但是对于解析器和它创建的AST对象来说非常混乱。

如果您仅限于允许对语句边界进行注释,则可以采用一些可能的解决方案。

一种方法是编写自己的javascript tokenizer并在读取文件时检查流。然后你需要弄清楚如何跟踪它们。一种hackish方式是将它们转换为'var somexXXxx =“comment”;'并在ast.toSource()调用之后使用命名约定将它们转换回来。这会将您的注释映射到AST节点结构。