• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    JavaScript語(yǔ)言解釋器的設(shè)計(jì)與實(shí)現(xiàn)

    2014-02-19 15:37:18陸敏
    新媒體研究 2014年1期
    關(guān)鍵詞:鏈表規(guī)約表達(dá)式

    陸敏

    摘 要 近些年來(lái),隨著我國(guó)各類(lèi)嵌入式瀏覽器的不斷出現(xiàn),對(duì)JavaScript語(yǔ)言解釋器得到更廣泛的應(yīng)用和發(fā)展都是十分有利的。文章對(duì)JavaScript語(yǔ)言解釋器的總體結(jié)構(gòu)以及JavaScript語(yǔ)言解釋器實(shí)現(xiàn)的技術(shù)兩個(gè)方面的內(nèi)容進(jìn)行分析和探析,從而論述JavaScript語(yǔ)言解釋器的設(shè)計(jì)和實(shí)現(xiàn)工作。

    關(guān)鍵詞 JavaScript語(yǔ)言解釋器;總體結(jié)構(gòu);實(shí)現(xiàn)技術(shù)

    中圖分類(lèi)號(hào):TP314 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1671-7597(2014)01-0023-01

    1 JavaScript語(yǔ)言解釋器的總體結(jié)構(gòu)

    整個(gè)JavaScript語(yǔ)言解釋器在調(diào)用各個(gè)功能模塊時(shí)都是以總控程序?yàn)橹行牡模涓鱾€(gè)模塊的具體功能如下。

    1)詞法分析。為了更有效的進(jìn)行語(yǔ)法分析,JavaScript腳本程序是嵌入在html文本中的,并且其是一類(lèi)輸入形成的具有雙向鏈表結(jié)構(gòu)的單詞鏈表。

    2)語(yǔ)法分析。在JavaScript語(yǔ)法和語(yǔ)言的規(guī)則下,輸入形式為單詞鏈表,能夠形成中間數(shù)據(jù)結(jié)構(gòu),這樣就能夠清晰的顯示出程序語(yǔ)句描述的數(shù)據(jù)處理流程。

    3)語(yǔ)句解釋器。其作用為有效的解釋和執(zhí)行各類(lèi)型的控制語(yǔ)句,同時(shí)還會(huì)調(diào)用解釋執(zhí)行器從而形成遞歸調(diào)用。

    4)解釋執(zhí)行器。在控制語(yǔ)句解釋器的執(zhí)行時(shí),是以中間的數(shù)據(jù)結(jié)構(gòu)作為輸入的。

    5)表達(dá)式規(guī)約器。其作用為在語(yǔ)句解釋器工作的過(guò)程中,能夠準(zhǔn)確的完成各類(lèi)表達(dá)式的賦值語(yǔ)句和運(yùn)算的執(zhí)行,同時(shí)由語(yǔ)句解釋器來(lái)調(diào)用。

    6)與瀏覽器交互。在表達(dá)式的運(yùn)算過(guò)程中,此模塊能夠及時(shí)的修改當(dāng)前html文本和文檔對(duì)象中各種控件對(duì)象的屬性值,同時(shí)還能夠以瀏覽器輸出的形式將其表現(xiàn)出來(lái)。

    2 JavaScript語(yǔ)言解釋器實(shí)現(xiàn)的技術(shù)

    1)語(yǔ)言解釋器的總控程序。其主要負(fù)責(zé)整個(gè)JavaScript語(yǔ)言解釋器的運(yùn)行和控制,同時(shí)也是瀏覽器和解釋器間的接口。首先在詞法分析器的結(jié)構(gòu)處,解釋器中的JavaScript源程序會(huì)形成一個(gè)雙向的單詞鏈表,然后,在語(yǔ)法分析器的結(jié)構(gòu)處,雙向的單詞鏈表又會(huì)形成一個(gè)中間的數(shù)據(jù)結(jié)構(gòu),最后執(zhí)行器會(huì)根據(jù)各個(gè)語(yǔ)句進(jìn)行有效的執(zhí)行,各功能模塊調(diào)用時(shí)都會(huì)反饋結(jié)果,而總控程序就是以此為依據(jù)控制解釋器的運(yùn)行的。

    2)中間數(shù)據(jù)結(jié)構(gòu)。作為整個(gè)JavaScript語(yǔ)言解釋器運(yùn)行的基礎(chǔ),中間數(shù)據(jù)結(jié)構(gòu)最主要的作用就是保存語(yǔ)法分析的中間結(jié)果,主要有程序語(yǔ)句、程序流程以及各變量的中間描述,這些工作都是在語(yǔ)法分析階段完成的,因此,我們只需要給出簡(jiǎn)單的結(jié)構(gòu)描述。對(duì)變量結(jié)構(gòu)VALUE-TYPE設(shè)計(jì)時(shí),我們應(yīng)充分的保證各個(gè)類(lèi)型的變量與邏輯存儲(chǔ)結(jié)構(gòu)的統(tǒng)一性。所以,JavaScript語(yǔ)言解釋器是用名稱(chēng)、類(lèi)型以及不同類(lèi)型的變量值來(lái)描述變量的。因?yàn)镴avaScript這類(lèi)語(yǔ)言的弱類(lèi)型性,所以我們并不需要明確的指定其類(lèi)型,在運(yùn)行的過(guò)程中確定其類(lèi)型就可以了。

    3)解釋執(zhí)行控制器。其最重要的作用就是有效的控制程序語(yǔ)句的各個(gè)解釋執(zhí)行的流程,而解釋執(zhí)行控制器也是整個(gè)JavaScript語(yǔ)言解釋器的核心結(jié)構(gòu),進(jìn)行解釋執(zhí)行時(shí),其從第一條語(yǔ)句就開(kāi)始工作了,并且不同類(lèi)型的語(yǔ)句其單條語(yǔ)句的處理模塊也是不同的,舉例來(lái)說(shuō),在系統(tǒng)進(jìn)入deal-if-statement模塊的IF語(yǔ)句,只要前一句解釋成功就可以解釋下一語(yǔ)句了,當(dāng)前一語(yǔ)句沒(méi)有解釋成功時(shí),那么就無(wú)法解釋下一語(yǔ)句了,并且不同類(lèi)型的控制語(yǔ)句其都有對(duì)應(yīng)的解釋模塊,中間的描述結(jié)構(gòu)指針就是傳入?yún)?shù),在調(diào)用各個(gè)單獨(dú)的語(yǔ)句解釋模塊后就形成了各類(lèi)的復(fù)合語(yǔ)句等遞歸調(diào)用。

    4)表達(dá)式規(guī)約器。作為整個(gè)JavaScript語(yǔ)言解釋器最核心的組成部分,表達(dá)式規(guī)約器的作用就是順利的完成各類(lèi)賦值語(yǔ)句和表達(dá)式的執(zhí)行和運(yùn)算。各種類(lèi)型的表達(dá)式組成了程序設(shè)計(jì)語(yǔ)言中的各類(lèi)語(yǔ)句,通常情況下,表達(dá)式含有函數(shù)、算符以及數(shù)據(jù)引用等調(diào)用模式。而調(diào)用對(duì)象的自身特點(diǎn)也決定了表達(dá)式的復(fù)雜性,對(duì)象的屬性、一般類(lèi)型的變量以及常量都可以是表達(dá)式的引用數(shù)據(jù),而函數(shù)調(diào)用則可以是對(duì)象的方法或是用戶(hù)自定義的調(diào)用。

    為了更加有效并且準(zhǔn)確的控制解釋器的運(yùn)行狀態(tài),我們就必須保證所有表達(dá)式運(yùn)算的統(tǒng)一性。①由于在語(yǔ)法的分析階段只需要弄清構(gòu)成表達(dá)式的各個(gè)單詞串,而并不需要掌握表達(dá)式的語(yǔ)義,所以如果可以由規(guī)約器對(duì)表達(dá)式進(jìn)行操作和處理,那么整個(gè)解釋系統(tǒng)就變得十分簡(jiǎn)化了;②如果能夠保證各類(lèi)表達(dá)式的統(tǒng)一性,那么原來(lái)應(yīng)在主控程序中完成的復(fù)雜控制邏輯就被轉(zhuǎn)移到規(guī)約器中去操作完成了,因此在算符方法的基礎(chǔ)上,作者設(shè)計(jì)了算符優(yōu)先的分析算法,從而保證了JavaScript中所有表達(dá)式的統(tǒng)一性。其主要的設(shè)計(jì)思路就是充分的參考了基于對(duì)象的JavaScript語(yǔ)言的自身特點(diǎn):建立新的算符和產(chǎn)生式規(guī)則后,對(duì)象的屬性就被轉(zhuǎn)化成了表達(dá)式的運(yùn)算,這樣新的規(guī)則和原來(lái)的算符就都會(huì)參與到表達(dá)式的運(yùn)算中了,也方便了系統(tǒng)對(duì)表達(dá)式運(yùn)算進(jìn)行統(tǒng)一的處理。作為一類(lèi)特殊的表達(dá)式,所調(diào)用的函數(shù)名就像對(duì)象的屬性一樣,表達(dá)式先規(guī)約就是函數(shù)的參數(shù),從而形成最終的可規(guī)約串。首先應(yīng)建立新的算符和產(chǎn)生式,然后應(yīng)確定對(duì)象運(yùn)算符和原文法終結(jié)符之間的優(yōu)先關(guān)系。這種優(yōu)先關(guān)系是很容易確定,因?yàn)榉椒ê蛯?duì)象調(diào)用都被看作是數(shù)據(jù)引用;最后就是有效的解決規(guī)約沖突。由于順序表達(dá)式規(guī)約與函數(shù)參數(shù)規(guī)約是有沖突的,而原生產(chǎn)式與新的生產(chǎn)式也是有規(guī)約沖突的,所以,我們還必須準(zhǔn)確的判斷規(guī)約時(shí)所選擇的是哪一條規(guī)則。當(dāng)出現(xiàn)順序表達(dá)式和函數(shù)參數(shù)的沖突時(shí),應(yīng)先搜索規(guī)約棧,先確定順序表達(dá)式有沒(méi)有在函數(shù)調(diào)用的上下文中,而對(duì)于原生產(chǎn)式和新的生產(chǎn)式的沖突,應(yīng)立即規(guī)約變量,同時(shí)也要展望下一個(gè)輸入符號(hào),下一個(gè)符號(hào)是是的話(huà)就對(duì)新的生產(chǎn)式規(guī)約,如果不是,就對(duì)原生產(chǎn)式規(guī)約。

    5)與瀏覽器交互。在這個(gè)功能模塊中,我們應(yīng)做好以下兩個(gè)方面的工作:①應(yīng)及時(shí)的改變改變當(dāng)前狀態(tài)下不同類(lèi)型控件對(duì)象和文檔對(duì)象的屬性,任何一個(gè)嵌入式的平臺(tái)都是有源代碼的,所以我們很容易就可以將一般類(lèi)型的變量與各種對(duì)象的存儲(chǔ)統(tǒng)一起來(lái),在參與表達(dá)式的運(yùn)算過(guò)程中,對(duì)象的屬性值也會(huì)被改變。其既準(zhǔn)確的定義了修改對(duì)象的接口,同時(shí)也能夠清晰的顯示出網(wǎng)頁(yè)的變化情況;②還能夠妥善的進(jìn)行事件處理工作。這項(xiàng)工作就是指處理好用戶(hù)和網(wǎng)頁(yè)交互時(shí)產(chǎn)生的操作,其是由相應(yīng)的程序完成的,一般情況下我們將其看作是一個(gè)解釋單元,而其在主控程序上就可以完成,從而保證用戶(hù)和網(wǎng)頁(yè)之間的交互工作順利完成。

    參考文獻(xiàn)

    [1]胡貫榮.淺談JavaScript語(yǔ)言解釋器的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2003.

    [2]孫永強(qiáng).程序設(shè)計(jì)語(yǔ)言編譯原理[M].國(guó)防工業(yè)出版社,1994.endprint

    猜你喜歡
    鏈表規(guī)約表達(dá)式
    一個(gè)混合核Hilbert型積分不等式及其算子范數(shù)表達(dá)式
    表達(dá)式轉(zhuǎn)換及求值探析
    基于二進(jìn)制鏈表的粗糙集屬性約簡(jiǎn)
    淺析C語(yǔ)言運(yùn)算符及表達(dá)式的教學(xué)誤區(qū)
    跟麥咭學(xué)編程
    電力系統(tǒng)通信規(guī)約庫(kù)抽象設(shè)計(jì)與實(shí)現(xiàn)
    一種在復(fù)雜環(huán)境中支持容錯(cuò)的高性能規(guī)約框架
    基于鏈表多分支路徑樹(shù)的云存儲(chǔ)數(shù)據(jù)完整性驗(yàn)證機(jī)制
    一種改進(jìn)的LLL模糊度規(guī)約算法
    修辭的敞開(kāi)與遮蔽*——對(duì)公共話(huà)語(yǔ)規(guī)約意義的批判性解讀
    凉城县| 正阳县| 宝应县| 五河县| 开远市| 随州市| 和平区| 吉安市| 三门峡市| 肇源县| 康平县| 甘南县| 邵武市| 库尔勒市| 辽阳县| 平和县| 广昌县| 南安市| 明水县| 萝北县| 阿图什市| 茌平县| 上思县| 汉阴县| 乐山市| 长沙县| 道孚县| 哈尔滨市| 林甸县| 长垣县| 隆回县| 蓝山县| 沾化县| 兰西县| 纳雍县| 本溪市| 东方市| 东平县| 乌兰察布市| 云南省| 新源县|