正在使用 Flex 解析器解析 Javascript 代码
Parsing Javascript code using Flex parser
我的动机是破坏变量和函数名称,并加密 javascript 文件中的字符串。
为此我只需要分隔字符串、注释和 variable/function 名称。
我试过 UglifyJs2 但我需要更多地控制自己,所以我尝试使用 Flex 自己编写一个词法分析器。
我能够处理评论和引用的字符串。
但是我被困在正则表达式格式中,例如 /"/
-- 包含引号的正则表达式导致正确解析失败。
似乎要正确识别正则表达式我需要使用语法规则的 Bison 解析器,否则注释、字符串和正则表达式会混淆。
我不想走那么远并使用 Bison。
一种方法是将所有正则表达式代码移动到函数中的另一个文件。
是否有任何其他选择,以便我可以在 Flex 本身中处理这个问题?
如果你可以 运行 JavaScript,你可以使用 Esprima,一个用 JavaScript 编码的 JavaScript 解析器。它甚至可以 运行 在您的浏览器中或任何 运行 像 NodeJS 一样的时间。
它可以只输出标记或抽象语法树。我相信这对你来说应该足够了。
我的动机是破坏变量和函数名称,并加密 javascript 文件中的字符串。
为此我只需要分隔字符串、注释和 variable/function 名称。
我试过 UglifyJs2 但我需要更多地控制自己,所以我尝试使用 Flex 自己编写一个词法分析器。
我能够处理评论和引用的字符串。
但是我被困在正则表达式格式中,例如 /"/
-- 包含引号的正则表达式导致正确解析失败。
似乎要正确识别正则表达式我需要使用语法规则的 Bison 解析器,否则注释、字符串和正则表达式会混淆。 我不想走那么远并使用 Bison。
一种方法是将所有正则表达式代码移动到函数中的另一个文件。
是否有任何其他选择,以便我可以在 Flex 本身中处理这个问题?
如果你可以 运行 JavaScript,你可以使用 Esprima,一个用 JavaScript 编码的 JavaScript 解析器。它甚至可以 运行 在您的浏览器中或任何 运行 像 NodeJS 一样的时间。
它可以只输出标记或抽象语法树。我相信这对你来说应该足够了。