成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JS淬煉: Syntax Parser

wuaiqiu / 1140人閱讀

摘要:語法分析利用詞法分析的結(jié)果建立上下文關(guān)系語法樹。一般情況下,我們不會直接和語法樹打交道,但會在進行代碼壓縮語法高亮重編譯關(guān)鍵字匹配和作用域判斷時間接涉及到。傳統(tǒng)的引擎直接根據(jù)語法樹的的結(jié)果進行解釋執(zhí)行,導(dǎo)致效率比較為低下。

一門語言的執(zhí)行,大致經(jīng)歷下面這些過程:詞法分析 -- 語法分析 -- 語義分析 -- 中間代碼生成 -- 優(yōu)化代碼 -- 代碼生成。

在Javascript中,Syntax Parser的作用是進行詞法分析語法分析。

A program that reads your code and determines what it does and if its grammar is valid.

詞法分析挨個字符地掃描代碼,把關(guān)鍵token識別出來。語法分析利用詞法分析的結(jié)果建立上下文關(guān)系語法樹 Abstract Syntax Tree (AST)。一般情況下,我們不會直接和語法樹打交道,但會在進行Uglify代碼壓縮、IDE語法高亮、Babel重編譯、關(guān)鍵字匹配和作用域判斷時間接涉及到。

var AST = "is Tree";

傳統(tǒng)的Javascript引擎直接根據(jù)語法樹的的結(jié)果進行解釋執(zhí)行,導(dǎo)致效率比C/C++較為低下。一些最新的Javascript引擎(如V8),會將部分Javascript代碼編譯成為目標(biāo)代碼以提高執(zhí)行效率。

介紹幾個Javascript的Syntax Parser

esprima

acorn

Reference

javascript-ast-tutorial

javascript-syntax-tree

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/91199.html

相關(guān)文章

  • JS淬煉: Array進階

    摘要:的這種實現(xiàn)方式導(dǎo)致了一些尷尬問題,比如刪除元素元素遍歷。后面的參數(shù)被忽略掉了,表示并沒有要插入的元素。其實,的本質(zhì)是跟蹤中的,并始終保持值是。這時候,雖然不大可能,可能會在中間某個中被用戶重新定義。但是在上進行這種操作是很糟糕的。 在Javascript中,array是一個類數(shù)組的object。顧名思義,它能夠在一個變量上存儲多個值。 數(shù)組是值的有序集合。每個值叫做一個元素,而每個元素...

    jimhs 評論0 收藏0
  • 精讀《手寫 SQL 編譯器 - 智能提示》

    摘要:經(jīng)過連續(xù)幾期的介紹,手寫編譯器系列進入了智能提示模塊,前幾期從詞法到文法語法,再到構(gòu)造語法樹,錯誤提示等等,都是為智能提示做準(zhǔn)備。 1 引言 詞法、語法、語義分析概念都屬于編譯原理的前端領(lǐng)域,而這次的目的是做 具備完善語法提示的 SQL 編輯器,只需用到編譯原理的前端部分。 經(jīng)過連續(xù)幾期的介紹,《手寫 SQL 編譯器》系列進入了 智能提示 模塊,前幾期從 詞法到文法、語法,再到構(gòu)造語法...

    ztyzz 評論0 收藏0
  • 精讀《syntax-parser 源碼》

    摘要:引言是一個版語法解析器生成器,具有分詞語法樹解析的能力。實現(xiàn)函數(shù)用鏈表設(shè)計函數(shù)是最佳的選擇,我們要模擬調(diào)用棧了。但光標(biāo)所在的位置是期望輸入點,這個輸入點也應(yīng)該參與語法樹的生成,而錯誤提示不包含光標(biāo),所以我們要執(zhí)行兩次。 1. 引言 syntax-parser 是一個 JS 版語法解析器生成器,具有分詞、語法樹解析的能力。 通過兩個例子介紹它的功能。 第一個例子是創(chuàng)建一個詞法解析器 my...

    yuanxin 評論0 收藏0
  • JS淬煉: Primitive vs. Object

    摘要:值傳遞引用傳遞是值傳遞,是引用傳遞。但這影響會根據(jù)父類是屬于還是而有微妙差別。我們設(shè)想有一個父類,和兩個繼承了他的子類和。這時,子類修改該不會影響到父類本身,更不會傳遞到其他子類上。 Javascript有兩種基本數(shù)據(jù)類型,Primitive和Object。Object是properties的聚合,其property可以是Object也可以是Primitive。Primitive只有v...

    Hancock_Xu 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<