为javascript代码编写解析器

为javascript代码编写解析器,javascript,parsing,Javascript,Parsing,我想提取javasscript代码,并找出是否有任何动态标记创建,如document.createElement('script')我曾尝试使用正则表达式来实现这一点,但使用正则表达式限制了我只能获取某些格式,因此我想到编写一个javascript解析器来提取所有关键字,javascript代码中的字符串和函数。也许您应该尝试使用一般来说,无法知道给定代码行是否会运行,您需要解决这个问题。 如果您将分析限制为仅查找函数调用的发生,则不会取得多大进展。简单的方法仍然很容易欺骗,如果您只是为docu

我想提取javasscript代码,并找出是否有任何动态标记创建,如
document.createElement('script')
我曾尝试使用正则表达式来实现这一点,但使用正则表达式限制了我只能获取某些格式,因此我想到编写一个javascript解析器来提取所有关键字,javascript代码中的字符串和函数。

也许您应该尝试使用一般来说,无法知道给定代码行是否会运行,您需要解决这个问题。
如果您将分析限制为仅查找函数调用的发生,则不会取得多大进展。简单的方法仍然很容易欺骗,如果您只是为document.createElement使用regex匹配,您将无法匹配像
document[“create”+“Element”]
这样简单的内容。通常,您不仅需要解析代码,还需要对其进行评估,以避免出现这种情况。为了确保您可以评估代码,您需要再次解决暂停问题。

第一条规则是永远不要将正则表达式用于像这样的大对象,或者DOM,或者。你必须用记号来解析它。好消息是你不必自己写。有几个JS到JS解析器

他们可能有点难对付。但与他们合作更好。还有其他项目正在使用这些功能,例如或。因此,您可以查看源代码并了解它们是如何使用的


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

那么,编写它到底有什么问题呢?你怎么知道它不会调用创建元素的函数呢?例如,jQuery还可以向DOM添加新元素,而您目前的方法无法检测到这一点