2015-10-13 23 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