亚洲免费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ī)約意義的批判性解讀
        成人无码区免费a片www| 亚洲色图三级在线观看| 少妇性bbb搡bbb爽爽爽| 欧美性videos高清精品| 久久婷婷国产精品香蕉| 99久久久69精品一区二区三区 | 亚洲熟妇中文字幕日产无码| 国产蜜桃传媒在线观看| 国模精品一区二区三区| 法国啄木乌av片在线播放| 国产码欧美日韩高清综合一区| 日韩av天堂一区二区三区在线| 成人午夜福利视频后入| 一本色综合亚洲精品蜜桃冫| 亚洲色图视频在线播放| 日韩人妻中文字幕专区| 欧洲熟妇色xxxx欧美老妇多毛| 欧美日韩国产一区二区三区地区| 成人全视频在线观看免费播放| 国产精品毛片无遮挡高清| 国产女主播喷水视频在线观看 | 亚洲人成综合第一网站| 无码国产精品一区二区免费模式| 国产精品18久久久久久不卡中国 | 精品国产麻豆免费人成网站| 亚洲精品无码av片| 国产综合一区二区三区av | 青青草久久久亚洲一区| 日日摸夜夜添夜夜添高潮喷水| 亚洲av伊人久久综合密臀性色| 日韩av无卡无码午夜观看| 久久精品国产亚洲av久按摩| 亚洲精品久久激情国产片| 又黄又爽又色的视频| 无码熟妇人妻av在线c0930| 亚洲男人综合久久综合天堂| 国产免费人成视频在线观看| 精品不卡久久久久久无码人妻 | 一区二区三区日韩毛片| 欧美激情在线播放| 国产精品深田咏美一区二区|