使用Rhino解析器在JavaScript代码中解析JavaScript字符串

5

我对Rhino解析器还很陌生。我能否在JavaScript代码中使用此Rhino解析器来提取任何HTML文件中JavaScript代码的抽象语法树?如果可以,我该如何开始呢?这是为了分析代码的AST,计算JavaScript中关键字和单词使用比例,以识别常见的解密方案,并计算某些函数调用类别的出现次数,例如fromCharCode()、eval()和一些常用于驱动下载攻击的字符串函数。


FYI:Rhino 1.7R3中添加了AST API。 - McDowell
1个回答

3
据我所知,在Rhino中无法从JavaScript访问AST。不过,建议查看Esprima解析器。它是一个完整的JavaScript解析器,使用JavaScript编写,并且具有用于代码分析的简单API。
以下是一个简单的示例,用于计算关键字与标识符的比率:
var tokens = esprima.parse(script, { tokens: true }).tokens;
var identifierCount = 0;
var keywordCount = 0;

tokens.forEach(function (token) {
    if (token.type === 'Keyword') {
        keywordCount++;
    }
    else if (token.type === 'Identifier') {
        identifierCount++;
    }
});

var ratio = keywordCount / identifierCount;

这个解析器真的很好,上面的代码对我有用。谢谢。你能提供一个教程来使用这个解析器吗?这样我就可以在JavaScript中提取网页的AST了。 - user1335906
我还没有做过太多相关的工作,所以对这方面的经验不是很丰富。不过 parse 函数会返回 AST,所以应该不会太难。文档在 http://esprima.org/doc/index.html,作者的博客(http://ariya.ofilabs.com/)上也有一些如何使用它的示例。希望这些能有所帮助。 - Matthew Crumley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接