为javascript代码编写解析器

时间:2012-03-29 11:55:56

标签: javascript parsing

我想提取javasscript代码并找出是否有任何动态标记创建,如document.createElement('script');我试图用正则表达式做这个,但使用正则表达式限制我只获得一些格式所以我想写一个javascript解析器,它从javascript代码中提取所有关键字,字符串和函数。

3 个答案:

答案 0 :(得分:2)

一般情况下,无法知道给定的代码行是否会运行,您需要解决halting problem。 如果将分析限制为仅查找函数调用的出现,则不会取得很大进展。天真的方法仍然很容易欺骗,如果只是正则表达式匹配document.createElement,你将无法匹配像document["create" + "Element"]这样简单的东西。通常,您不仅需要解析代码,还需要对其进行评估以解决此问题。并且确保您可以评估您将再次需要解决暂停问题的代码。

答案 1 :(得分:0)

也许您应该尝试使用Burrito

答案 2 :(得分:0)

第一条规则是永远不要使用正则表达式来处理像这样的大事,或者DOM,或者....你必须用令牌解析它。好消息是你不必自己写。有一些JS到JS解析器。

他们可能有点难以使用它。但与他们合作更好。还有其他项目使用这些项目,例如burritocode surgeon。因此,您可以查看源代码并了解它们如何使用它们。

但也有坏消息,人们仍然可以超越其他人,更不用说他们编写的解析器和代码了。至少你需要用一些执行时变量来评估代码,看看它是否试图访问DOM。