亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        陸敏

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

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

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

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

        整個JavaScript語言解釋器在調(diào)用各個功能模塊時都是以總控程序?yàn)橹行牡?,其各個模塊的具體功能如下。

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

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

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

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

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

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

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

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

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

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

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

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

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

        參考文獻(xiàn)

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

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

        猜你喜歡
        鏈表規(guī)約表達(dá)式
        一個混合核Hilbert型積分不等式及其算子范數(shù)表達(dá)式
        表達(dá)式轉(zhuǎn)換及求值探析
        基于二進(jìn)制鏈表的粗糙集屬性約簡
        淺析C語言運(yùn)算符及表達(dá)式的教學(xué)誤區(qū)
        跟麥咭學(xué)編程
        電力系統(tǒng)通信規(guī)約庫抽象設(shè)計(jì)與實(shí)現(xiàn)
        一種在復(fù)雜環(huán)境中支持容錯的高性能規(guī)約框架
        基于鏈表多分支路徑樹的云存儲數(shù)據(jù)完整性驗(yàn)證機(jī)制
        一種改進(jìn)的LLL模糊度規(guī)約算法
        修辭的敞開與遮蔽*——對公共話語規(guī)約意義的批判性解讀
        中文字幕日韩精品一区二区三区| 青青青伊人色综合久久| 在线看片免费人成视久网不卡| 亚洲国产精品日韩av专区| 日韩亚洲精品中文字幕在线观看| 国产精品天堂avav在线| 理论片午午伦夜理片影院| 中文字幕无码免费久久99| 精品少妇白浆一二三区| 日本最新视频一区二区| 欧美国产亚洲日韩在线二区| 欧美另类高清zo欧美| 亚洲熟妇一区无码| 国产一区二区三区亚洲精品| 亚洲成av人片极品少妇| 亚洲国产精品日本无码网站| 久久无码av中文出轨人妻| 欧美成人在线A免费观看| 久久婷婷国产五月综合色| 日本不卡视频一区二区三区| 免费人成小说在线观看网站| 亚洲色欲色欲www| 亚洲a级片在线观看| 一本久久伊人热热精品中文| 日本一区二区三区亚洲| 国产精品天堂avav在线| 久久综合给合久久狠狠狠97色69 | 少妇久久一区二区三区| 一区二区三区精品少妇| 免费无码一区二区三区蜜桃| 馬与人黃色毛片一部| av天堂手机在线免费| 国产亚洲精品久久情侣| 国产午夜成人av在线播放| 亚洲中文字幕无码爆乳av| 久久国产亚洲中文字幕| av影片手机在线观看免费网址| 西西午夜无码大胆啪啪国模| 亚洲欧洲巨乳清纯| 久久久国产精品粉嫩av| 日韩av一区二区三区高清|