成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

JS淬煉: Syntax Parser

wuaiqiu / 1149人閱讀

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

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

在Javascript中,Syntax Parser的作用是進(jìn)行詞法分析語(yǔ)法分析。

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

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

var AST = "is Tree";

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

介紹幾個(gè)Javascript的Syntax Parser

esprima

acorn

Reference

javascript-ast-tutorial

javascript-syntax-tree

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/91199.html

相關(guān)文章

  • JS淬煉: Array進(jìn)階

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

    jimhs 評(píng)論0 收藏0
  • 精讀《手寫(xiě) SQL 編譯器 - 智能提示》

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

    ztyzz 評(píng)論0 收藏0
  • 精讀《syntax-parser 源碼》

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

    yuanxin 評(píng)論0 收藏0
  • JS淬煉: Primitive vs. Object

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

    Hancock_Xu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<