天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

UglifyJS有個不錯的JavaScript解析器

  我一直在為Jscex尋找好用的JavaScript解析器,之前我用的是Narcissus,也寫過相關文章。不過可惜的是,Narcissus使用了SpiderMonkey的擴展,因此它并不是用ECMAScript 3實現的,無法在IE 8等瀏覽器中使用。目前Jscex使用的是NarrativeJS中舊版的Narcissus,但是我并不喜歡它輸出的AST結構,使用中也發現高級功能里的一些bug,有些食之無味棄之可惜的感覺,而改寫新版Narcissus又必須大動干戈。最近我接觸到了UglifyJS,發現它的解析器相當不錯,性能也比Narcissus高出許多,在此介紹給大家。

  介紹

  UglifyJS是個JavaScript壓縮器,效果和Google Closure Compiler相比有過之而無不及。對于現代化的JavaScript壓縮器來說,簡單的去除空白和壓縮局部變量是遠遠不夠的,同時需要理解代碼的語義,將其替換成提及更小的形式(Uglify的說明頁上有許多描述)。這顯然需要一個JavaScript解析器。UglifyJS基于NodeJS開發,不過可以在各種支持CommonJS模塊系統的JavaScript引擎/平臺上運行。如果沒有CommonJS,也只需將exports相關的代碼去掉即可。

  JavaScript解析器的作用自然是將JavaScript代碼分解成AST,然后根據AST便可以做到許多有趣的事情。相同的AST可以在內存中有不同的表現形式,例如之前提到我不太喜歡Jscex目前使用的舊版Narcissus,一個重要的原因便是它的AST結構不夠友好(最新的Narcissus倒不錯)。此外,雖然它提供了一些高級功能,例如標注了每個元素在源代碼中的位置,這樣使用者就可以直接根據getSource方法獲得它對應的源代碼——只可惜經試驗這個功能有bug,這迫使我還得遍歷完整的AST。

  UglifyJS的JavaScript分詞器和解析器存放在源代碼的parse-js.js文件中,移植于parse-js項目,后者是一個用Common Lisp實現的類庫?,F在您應該可以猜到它輸出的AST是什么表現形式了吧。沒錯,就是個“表”,用JavaScript來表示,就是個數組套數組。我寫了點簡單的代碼對其進行格式化輸出,您可以在這里簡單嘗試一下UglifyJS的解析器。這個輸出雖然簡單,但對于Jscex來說也已經完全夠用了。

  使用

  打開parse-js.js文件,您會看到這樣一些代碼:

/* -----[ Tokenizer (constants) ]----- */var KEYWORDS = array_to_hash([
...
]);

var RESERVED_WORDS = array_to_hash([
...
]);

...

function parse($TEXT, exigent_mode, embed_tokens) {
...
}

/* -----[ Exports ]----- */

exports.tokenizer
= tokenizer;
exports.parse
= parse;
exports.slice
= slice;
exports.curry
= curry;
exports.member
= member;
exports.array_to_hash
= array_to_hash;
exports.PRECEDENCE
= PRECEDENCE;
exports.KEYWORDS_ATOM
= KEYWORDS_ATOM;
exports.RESERVED_WORDS
= RESERVED_WORDS;
exports.KEYWORDS
= KEYWORDS;
exports.ATOMIC_START_TOKEN
= ATOMIC_START_TOKEN;
exports.OPERATORS
= OPERATORS;
exports.is_alphanumeric_char
= is_alphanumeric_char;
exports.set_logger
= function(logger) {
warn
= logger;
};

it知識庫UglifyJS有個不錯的JavaScript解析器,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 久久国产露脸老熟女熟69 | 午夜视频在线瓜伦 | 国内精品乱码卡一卡2卡三卡新区 | 99久久国产免费福利 | 色多多污污版免费下载安装 | 无码AV精品久久一区二区免费 | 性插图动态图无遮挡 | 世界上第一个得抑郁症的人是谁 | 暖暖的视频完整视频免费韩国 | 疯狂第一次国语 | voyeurhit农村夫妻偷拍 | 达达兔欧美午夜国产亚洲 | 国产亚洲精品成人a在线 | 成人在线免费视频 | 中文字幕在线观看网站 | 国产精品亚洲精品日韩电影 | 白银谷在线观看 | 久久这里只精品热在线18 | 国产人妻人伦精品1国产 | 伊人网综合在线观看 | 曰韩一本道高清无码av | yellow日本动漫免费观看 | 日韩午夜欧美精品一二三四区 | 亚洲色欲H网在线观看 | 亚洲香蕉视频在线播放 | 狠狠色狠狠色综合日日91app | 国产麻豆精品久久一二三 | 免费三级现频在线观看 | 免费毛片视频网站 | 免费精品一区二区三区在线观看 | 91天仙tv嫩模福利 | 久久免费看少妇级毛片蜜臀 | 欧美性视频xxxxhd | 青青青视频在线 | 伊人久久久久久久久香港 | 琪琪热热色原日韩在线 | 三级成年网站在线观看 | 果冻传媒色AV国产播放 | 午夜福利网国产A | 亚洲免费观看 | 无码一区国产欧美在线资源 |