3

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

当我调用astroot.toSource()时,它向我展示了重建的源代码。

但是.toSource()方法不能打印评论。

使用.toSource()方法,我所有的 javascript 源的评论都消失了。

那么,我怎样才能获得包括评论在内的完整来源?

我的目标是将 AstRoot Object(contain source) 写入一个包含完整注释的新 javascript 文件。

我正在使用犀牛 1.7R4

4

1 回答 1

0

一般来说,这很困难,因为注释可以出现在任何声明、语句或表达式的中间。那么如何在各种 AST 对象中表示这一事实呢?它可以完成,但对于解析器及其创建的 AST 对象来说非常混乱。

如果您限制自己只允许对语句边界进行评论,那么有一些可能的解决方案。

一种方法是编写自己的 javascript 标记器并在读取文件时检查流。然后你需要弄清楚如何跟踪它们。一种骇人听闻的方法是将它们转换为 'var somexxxxx = "comment";' 并在 ast.toSource() 调用后使用命名约定将它们转换回来。这会将您的评论映射到 AST 节点结构中。

于 2013-04-11T14:56:23.060 回答