2015-10-13 24 views
0

我的动机是修改变量和函数名称,并对JavaScript文件中的字符串进行加密。使用Flex解​​析器解析Javascript代码

为此,我只需要分隔字符串,注释和变量/函数名称。

我试过UglifyJs2但我需要对自己更多的控制,所以我试图用Flex自己编写一个词法分析器。

我可以照顾评论和引用的字符串。

但是我卡在正则表达式格式,例如/"/ - 包含引号的正则表达式导致正确的解析失败。

看起来像正确识别正则表达式我需要使用语法规则的Bison解析器,否则注释,字符串和正则表达式会混淆。 我不想那么远,并使用野牛。

一种方法是将所有正则表达式代码移动到函数中的另一个文件中。

有没有其他的选择,以便我可以在Flex本身处理这个?

+0

在flex中,应该添加一条规则以保持RE不变。 Exampel'[/].*[/] {ECHO;}'(naif版本)。 – JJoao

回答

1

如果您可以运行JavaScript,则可以使用Esprima,这是一个JavaScript解析器,采用JavaScript编码。它甚至可以在浏览器或任何运行时像NodeJS中运行。

它只能输出令牌或抽象语法树。我相信这对你应该足够了。

+0

是的,这是我想要的! – user5858

+0

@ user5858不错! –

+0

但是可以使用Esprima的输出构建代码吗?我将有机会替换特定的令牌。 – user5858