亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

基于機頂盒瀏覽器的JavaScript解釋器實現(xiàn)方法

文檔序號:7671465閱讀:207來源:國知局
專利名稱:基于機頂盒瀏覽器的JavaScript解釋器實現(xiàn)方法
技術(shù)領(lǐng)域
本發(fā)明涉 及數(shù)字家庭技術(shù)領(lǐng)域,具體涉及一種基于機頂盒瀏覽器的JavaScript 解釋器實現(xiàn)方法。
背景技術(shù)
數(shù)字電視的一個重要功能就是實現(xiàn)條件接收功能機頂盒又是一種基于 Internet的終端,因此,需要一種平臺支付的手段。為了支持平臺支付,需要JavaScript擴充其內(nèi)置函數(shù)庫,提供與平臺支付相關(guān)的函數(shù),如,扣費函數(shù),終端消息簽名函數(shù)等。另外, 隨著數(shù)字電視的部署,機頂盒將大規(guī)模的進入百姓家里,這樣要求嚴格控制機頂盒的成本。 因此機頂盒的配置將非常低,目前市場上常見的數(shù)字電視機頂盒配置是4M Flash,16M內(nèi)存,CPU處理主頻在130M左右(近期已有很多高主頻產(chǎn)品出現(xiàn)),這樣對瀏覽器和解釋器的要求非常高。一般來說,要求數(shù)字電視機頂盒的嵌入式瀏覽器運行期間占用內(nèi)存在6M下, 代碼大小小于1M。IPTV機頂盒的配置會相對比數(shù)字電視機頂盒高,使嵌入式瀏覽器發(fā)揮空間更大。在性能方面針對嵌入式系統(tǒng)的特點,要求解釋效率高,對JavaScript的支持能夠進行方便的擴充;同時要求與瀏覽器間的交叉盡可能少以便將JavaScript解釋引擎向插件的形式方向發(fā)展。在對此方法的研究和實踐過程中,本發(fā)明的發(fā)明人發(fā)現(xiàn)本發(fā)明的解釋器能夠在嵌入式瀏覽器中快速、高效地執(zhí)行網(wǎng)頁中嵌入的JavaScript語言,提高了嵌入式瀏覽器與用戶的實時性、動態(tài)性以及交互性。能夠有效地降低了小內(nèi)存塊的大規(guī)模使用,提高了內(nèi)存利用率,效果良好。

發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種基于機頂盒瀏覽器的JavaScript解釋器實現(xiàn)方法能夠在嵌入式瀏覽器中快速、高效地執(zhí)行網(wǎng)頁中嵌入的JavaScript語言,提高了嵌入式瀏覽器與用戶的實時性、動態(tài)性以及交互性。能夠有效地降低小內(nèi)存塊的大規(guī)模使用,提高內(nèi)存利用率。一種基于機頂盒瀏覽器的JavaScript解釋器實現(xiàn)方法,其特征在于包括解釋器系統(tǒng)包括解釋前端和解釋后端及解釋執(zhí)行控制模塊。解釋前端包括詞法分析器模塊、語法分析器模塊、源文件模塊、出錯處理模塊、中間碼生成模塊;解釋后端包括執(zhí)行棧模塊、對象庫模塊、子句解釋器模塊、表達式規(guī)約模塊、對象解釋模塊、與瀏覽器交互模塊、系統(tǒng)資源管理模塊;其中,
詞法分析器模塊將源程序以字符串的方式讀入,并將其分為若干個記號,記號于自然語言中的單詞類似。我們將JavaScript語言的單詞分為標識符、字符串、整數(shù)、浮點數(shù)、布爾值、運算符等。源程序經(jīng)過詞法分析后生成一個單詞雙向鏈表,供后面的語法分析器模塊調(diào)用。語法分析器模塊以單詞鏈表作為輸入,分別調(diào)用不同的語句識別器,識別它們是否符合給定文法,并最終生成一個語法樹結(jié)構(gòu)的中間代碼,供后面解釋執(zhí)行控制模塊執(zhí)行。中間碼生成模塊是把源程序經(jīng)詞法分析和語法分析后產(chǎn)生的結(jié)果生成為中間結(jié)果。它包含程序流程結(jié)構(gòu)和數(shù)據(jù)字典兩方面的內(nèi)容。程序流程結(jié)構(gòu)中包含了各種語句結(jié)構(gòu),數(shù)據(jù)字典是用 來存放程序數(shù)據(jù)的地方,它是指存貯的全局變量、子程序中的局部變量和復(fù)合語句中的局部變量的集合。數(shù)據(jù)字典供表達式歸約模塊在歸約過程中查找所需要的數(shù)據(jù)。解釋執(zhí)行控制模塊解釋執(zhí)行控制器負責根據(jù)預(yù)先生成好的中間數(shù)據(jù)結(jié)構(gòu),按照語句的語義對源程序語句進行逐條解釋執(zhí)行。它控制程序的順序執(zhí)行過程。執(zhí)行過程中調(diào)用語句解釋器解釋執(zhí)行單條語句,并根據(jù)解釋結(jié)果控制程序的繼續(xù)執(zhí)行或終止。執(zhí)行棧模塊是表達式歸約模塊所要用到的數(shù)據(jù)結(jié)構(gòu),它包含一個符號棧和一個操作數(shù)棧,分別用來存放表達式歸約過程中的終結(jié)符號和操作數(shù)。對象庫模塊也是用來存放程序數(shù)據(jù)的地方,它是指存貯的系統(tǒng)定義對象、
瀏覽器文檔模型中的對象和用戶自定義對象的集合。對象庫為解釋器的對象解釋提供了運行基礎(chǔ),同時也為解釋器與瀏覽器的交互提供了運行機制。它包含了對象的屬性、方法和事件處理等方面的內(nèi)容。出錯處理模塊負責處理詞法分析、語法分析及解釋執(zhí)行過程中出現(xiàn)的錯
誤,如果源程序詞法語法不符合JavaScript語言的規(guī)則,或者執(zhí)行時出現(xiàn)錯誤,則記錄當前執(zhí)行的語句,并立即返回。子句解釋器模塊完成單條語句的解釋執(zhí)行。每一種類型的語句都對應(yīng)一個語句解釋器。它根據(jù)語句類型完成相應(yīng)的語義動作。子句解釋器在解釋過程中調(diào)用表達式歸約模塊計算表達式的值,并根據(jù)計算結(jié)果控制語句流程。表達式歸約模塊完成在語句執(zhí)行過程中組成語句的各種表達式的運算。表達式歸約模塊按照表達式的產(chǎn)生式規(guī)則找出子表達式進行歸約最終得出表達式的運算結(jié)果。對象解釋模塊實現(xiàn)JavaScript語言基于對象的特性,它包含對象的引用、方法調(diào)用和事件處理。在對象解釋過程中,解釋器通過對象屬性值的變化、對象的方法調(diào)用或事件處理完成與瀏覽器的交互。與瀏覽器交互模塊完成腳本程序的解釋執(zhí)行對網(wǎng)頁產(chǎn)生的副作用,修改瀏覽器對象的屬性,影響或改變?yōu)g覽器的輸出顯示。如引起網(wǎng)頁中的控件位置變化、觸發(fā)網(wǎng)頁中表單的提交等。系統(tǒng)資源管理模塊系統(tǒng)資源管理作用于整個解釋器,對解釋器所用到的內(nèi)存資源進行分配和回收,對CPU資源進行合理控制。所述的解釋前端的設(shè)計上,語法分析器模塊在邏輯上高于詞法分析器模塊和語義動作部件,采取“即用即取”的策略,節(jié)省了單詞鏈表等中間數(shù)據(jù)結(jié)構(gòu)的內(nèi)存開銷。解釋器的后端系統(tǒng)實際上是一個解釋自定義字節(jié)碼的虛擬機。后端虛擬機系統(tǒng)是由字節(jié)碼解釋控制程序和函數(shù)調(diào)用關(guān)系棧、操作數(shù)棧、變量數(shù)據(jù)棧和對象信息記錄表五部分組成的。其中,字節(jié)碼字節(jié)控制程序根據(jù)字節(jié)碼的操作符碼,對操作數(shù)進行操作,比如進棧出棧等。函數(shù)調(diào)用關(guān)系棧記錄了 JavaScript各種可執(zhí)行代碼的相互調(diào)用關(guān)系,每當進入一個新的可執(zhí)行代碼,就在函數(shù)調(diào)用關(guān)系棧棧頂壓入當前可執(zhí)行代碼的的執(zhí)行上下文環(huán)境信息。操作數(shù)棧主要用于進行各種計算和中間結(jié)果的保存。中間字節(jié)碼的所有計算均基于它來進行。變量數(shù)據(jù)棧用于記錄字節(jié)碼執(zhí)行時的變量信息。每當進入一個新的可執(zhí)行代碼, 就在變量數(shù)據(jù)棧壓入當前可執(zhí)行代碼的局部變量信息(包括變量名稱、類型、值等),一旦當前的可執(zhí)行代碼執(zhí)行完畢,變量數(shù)據(jù)棧頂元素即被彈出,同時函數(shù)調(diào)用關(guān)系棧和操作數(shù)棧中相關(guān)元素彈出。對象信息記錄表是存儲各種JavaScript對象的內(nèi)存區(qū)。由于手機中間件平臺的可用內(nèi)存資源有限和小內(nèi)存塊利用不充分的特點,將固定長度的結(jié)構(gòu)數(shù)組作為對象信息記錄表。對象記錄表中記錄包括對象的屬性個數(shù)、對象的屬性信息等。在JavaScript 中,對象的方法也被視作對象的屬性上述技術(shù)方案可以看出,本發(fā)明具有如下有益效果
本發(fā)明的解釋器能夠在嵌入式瀏覽器中快速、高效地執(zhí)行網(wǎng)頁中嵌入的JavaScript 語言,提高了嵌入式瀏覽器與用戶的實時性、動態(tài)性以及交互性。能夠有效地降低了小內(nèi)存塊的大規(guī)模使用,提高了內(nèi)存利用率,效果良好。


為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其它的附圖。圖1是本發(fā)明一種基于機頂盒瀏覽器的JavaScript解釋器實現(xiàn)方法的系統(tǒng)結(jié)構(gòu)圖2是本發(fā)明一種基于機頂盒瀏覽器的JavaScript解釋器實現(xiàn)方法的詞法分析器模塊結(jié)構(gòu)圖3是本發(fā)明一種基于機頂盒瀏覽器的JavaScript解釋器實現(xiàn)方法的語法分析器模塊結(jié)構(gòu)圖。
具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其它實施例,都屬于本發(fā)明保護的范圍。本發(fā)明實施例提供一種基于機頂盒瀏覽器的JavaScript解釋器實現(xiàn)方法,以下分別進行詳細說明。如圖1所示解釋器系統(tǒng)包括解釋前端和解釋后端及解釋執(zhí)行控制模塊。解釋前端包括詞法分析器模塊、語法分析器模塊、源文件模塊、出錯處理模塊、中間碼生成模塊;解釋后端包括執(zhí)行棧模塊、對象庫模塊、子句解釋器模塊、表達式規(guī)約模塊、對象解釋模塊、與瀏覽器交互模塊、系統(tǒng)資源管理模塊;
其中,詞法分析器模塊將源程序以字符串的方式讀入,并將其分為若干個記號,記號于自然語言中的單詞類似。我們將JavaScript語言的單詞分為標識符、字符串、整數(shù)、浮點數(shù)、布爾值、運算符等。源程序經(jīng)過詞法分析后生成一個單詞雙向鏈表,供后面的語法分析器模塊調(diào)用。
語法分析器模塊以單詞鏈表作為輸入,分別調(diào)用不同的語句識別器,識別它們是否符合給定文法,并最終生成一個語法樹結(jié)構(gòu)的中間代碼,供后面解釋執(zhí)行控制模塊執(zhí)行。 中間碼生成模塊是把源程序經(jīng)詞法分析和語法分析后產(chǎn)生的結(jié)果生成為中間結(jié)果。它包含程序流程結(jié)構(gòu)和數(shù)據(jù)字典兩方面的內(nèi)容。程序流程結(jié)構(gòu)中包含了各種語句結(jié)構(gòu),數(shù)據(jù)字典是用來存放程序數(shù)據(jù)的地方,它是指存貯的全局變量、子程序中的局部變量和復(fù)合語句中的局部變量的集合。數(shù)據(jù)字典供表達式歸約模塊在歸約過程中查找所需要的數(shù)據(jù)。解釋執(zhí)行控制模塊解釋執(zhí)行控制器負責根據(jù)預(yù)先生成好的中間數(shù)據(jù)結(jié)構(gòu),按照語句的語義對源程序語句進行逐條解釋執(zhí)行。它控制程序的順序執(zhí)行過程。執(zhí)行過程中調(diào)用語句解釋器解釋執(zhí)行單條語句,并根據(jù)解釋結(jié)果控制程序的繼續(xù)執(zhí)行或終止。執(zhí)行棧模塊是表達式歸約模塊所要用到的數(shù)據(jù)結(jié)構(gòu),它包含一個符號棧和一個操作數(shù)棧,分別用來存放表達式歸約過程中的終結(jié)符號和操作數(shù)。對象庫模塊也是用來存放程序數(shù)據(jù)的地方,它是指存貯的系統(tǒng)定義對象、
瀏覽器文檔模型中的對象和用戶自定義對象的集合。對象庫為解釋器的對象解釋提供了運行基礎(chǔ),同時也為解釋器與瀏覽器的交互提供了運行機制。它包含了對象的屬性、方法和事件處理等方面的內(nèi)容。出錯處理模塊負責處理詞法分析、語法分析及解釋執(zhí)行過程中出現(xiàn)的錯
誤,如果源程序詞法語法不符合JavaScript語言的規(guī)則,或者執(zhí)行時出現(xiàn)錯誤,則記錄當前執(zhí)行的語句,并立即返回。 子句解釋器模塊完成單條語句的解釋執(zhí)行。每一種類型的語句都對應(yīng)一個語句解釋器。它根據(jù)語句類型完成相應(yīng)的語義動作。子句解釋器在解釋過程中調(diào)用表達式歸約模塊計算表達式的值,并根據(jù)計算結(jié)果控制語句流程。表達式歸約模塊完成在語句執(zhí)行過程中組成語句的各種表達式的運算。表達式歸約模塊按照表達式的產(chǎn)生式規(guī)則找出子表達式進行歸約最終得出表達式的運算結(jié)果。對象解釋模塊實現(xiàn)JavaScript語言基于對象的特性,它包含對象的引用、方法調(diào)用和事件處理。在對象解釋過程中,解釋器通過對象屬性值的變化、對象的方法調(diào)用或事件處理完成與瀏覽器的交互。與瀏覽器交互模塊完成腳本程序的解釋執(zhí)行對網(wǎng)頁產(chǎn)生的副作用,修改瀏覽器對象的屬性,影響或改變?yōu)g覽器的輸出顯示。如引起網(wǎng)頁中的控件位置變化、觸發(fā)網(wǎng)頁中表單的提交等。系統(tǒng)資源管理模塊系統(tǒng)資源管理作用于整個解釋器,對解釋器所用到的內(nèi)存資源進行分配和回收,對CPU資源進行合理控制。所述的解釋前端的設(shè)計上,語法分析器模塊在邏輯上高于詞法分析器模塊和語義動作部件,采取“即用即取”的策略,節(jié)省了單詞鏈表等中間數(shù)據(jù)結(jié)構(gòu)的內(nèi)存開銷。解釋器的后端系統(tǒng)實際上是一個解釋自定義字節(jié)碼的虛擬機。后端虛擬機系統(tǒng)是由字節(jié)碼解釋控制程序和函數(shù)調(diào)用關(guān)系棧、操作數(shù)棧、變量數(shù)據(jù)棧和對象信息記錄表五部分組成的。其中,字節(jié)碼字節(jié)控制程序根據(jù)字節(jié)碼的操作符碼,對操作數(shù)進行操作,比如進棧出棧等。函數(shù)調(diào)用關(guān)系棧記錄了 JavaScript各種可執(zhí)行代碼的相互調(diào)用關(guān)系,每當進入一個新的可執(zhí)行代碼,就在函數(shù)調(diào)用關(guān)系棧棧頂壓入當前可執(zhí)行代碼的的執(zhí)行上下文環(huán)境信息。操作數(shù)棧主要用于進行各種計算和中間結(jié)果的保存。中間字節(jié)碼的所有計算均基于它來進行。變量數(shù)據(jù)棧用于記錄字節(jié)碼執(zhí)行時的變量信息。每當進入一個新的可執(zhí)行代碼, 就在變量數(shù)據(jù)棧壓入當前可執(zhí)行代碼的局部變量信息(包括變量名稱、類型、值等),一旦當前的可執(zhí)行代碼執(zhí)行完畢,變量數(shù)據(jù)棧頂元素即被彈出,同時函數(shù)調(diào)用關(guān)系棧和操作數(shù)棧中相關(guān)元素彈出。對象信息記錄表是存儲各種JavaScript對象的內(nèi)存區(qū)。由于手機中間件平臺的可用內(nèi)存資源有限和小內(nèi)存塊利用不充分的特點,將固定長度的結(jié)構(gòu)數(shù)組作為對象信息記錄表。對象記錄表中記錄包括對象的屬性個數(shù)、對象的屬性信息等。在JavaScript 中,對象的方法也被視作對象的屬性。如圖2所示詞法分析器模塊處理流程是當詞法分析器調(diào)用預(yù)處理子程序剔除無用的空格、跳格、回車和換行等編輯性文字,處理出一串輸入字符放進掃描緩沖區(qū)之后,掃描器就從緩沖區(qū)中逐一識別單詞符號。當緩沖區(qū) 里的字符串被處理之后,它又調(diào)用預(yù)處理程序裝入新串。如圖3所示語法分析器模塊處理流程是以詞法分析所生成的單詞符號雙向鏈表為輸入,依據(jù)語法分析法,對源程序語句進行逐一分析,最終生成源程序的語句流程圖和數(shù)據(jù)字典。執(zhí)行過程中調(diào)用語句識別器,對不同種類的語句進行識別,同時還要生成數(shù)據(jù)字典,以供解釋執(zhí)行控制模塊對表達式規(guī)約使用。語句識別器完成對單條語句的識別,對于不同種類的語句都有一語句識別器與之相對應(yīng)。語句識別器是按照語句的語法規(guī)則和語義進行語句識別的。數(shù)據(jù)字典是存放程序數(shù)據(jù)的地方,它包括全局變量、函數(shù)形參變量以及語句塊中的局部變量。數(shù)據(jù)字典供解釋執(zhí)行模塊的表達式規(guī)約模塊在進行表達式規(guī)約時查找所需要的數(shù)據(jù)。需要說明的是,上述裝置和系統(tǒng)內(nèi)的各單元之間的信息交互、執(zhí)行過程等內(nèi)容,由于與本發(fā)明方法實施例基于同一構(gòu)思,具體內(nèi)容可參見本發(fā)明方法實施例中的敘述,此處不再贅述。本領(lǐng)域普通技術(shù)人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于一計算機可讀存儲介質(zhì)中,存儲介質(zhì)可以包括只讀存儲器(ROM,Read Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁盤或光盤等。以上對本發(fā)明實施例所提供的一種基于機頂盒瀏覽器的JavaScript解釋器實現(xiàn)方法,進行了詳細介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式
及應(yīng)用范圍上均會有改變之處,綜上所述, 本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1.一種基于機頂盒瀏覽器的JavMcript解釋器實現(xiàn)方法,其特征在于解釋器系統(tǒng)包括解釋前端和解釋后端及解釋執(zhí)行控制模塊,解釋前端包括詞法分析器模塊、語法分析器模塊、源文件模塊、出錯處理模塊、中間碼生成模塊;解釋后端包括執(zhí)行棧模塊、對象庫模塊、子句解釋器模塊、表達式規(guī)約模塊、對象解釋模塊、與瀏覽器交互模塊、系統(tǒng)資源管理模塊;其中,詞法分析器模塊將源程序以字符串的方式讀入,并將其分為若干個記號,記號于自然語言中的單詞類似;我們將JavMcript語言的單詞分為標識符、字符串、整數(shù)、浮點數(shù)、布爾值、運算符等;源程序經(jīng)過詞法分析后生成一個單詞雙向鏈表,供后面的語法分析器模塊調(diào)用;語法分析器模塊以單詞鏈表作為輸入,分別調(diào)用不同的語句識別器,識別它們是否符合給定文法,并最終生成一個語法樹結(jié)構(gòu)的中間代碼,供后面解釋執(zhí)行控制模塊執(zhí)行;中間碼生成模塊是把源程序經(jīng)詞法分析和語法分析后產(chǎn)生的結(jié)果生成為中間結(jié)果,它包含程序流程結(jié)構(gòu)和數(shù)據(jù)字典兩方面的內(nèi)容,程序流程結(jié)構(gòu)中包含了各種語句結(jié)構(gòu),數(shù)據(jù)字典是用來存放程序數(shù)據(jù)的地方,它是指存貯的全局變量、子程序中的局部變量和復(fù)合語句中的局部變量的集合;數(shù)據(jù)字典供表達式歸約模塊在歸約過程中查找所需要的數(shù)據(jù),解釋執(zhí)行控制模塊解釋執(zhí)行控制器負責根據(jù)預(yù)先生成好的中間數(shù)據(jù)結(jié)構(gòu),按照語句的語義對源程序語句進行逐條解釋執(zhí)行,它控制程序的順序執(zhí)行過程;執(zhí)行過程中調(diào)用語句解釋器解釋執(zhí)行單條語句,并根據(jù)解釋結(jié)果控制程序的繼續(xù)執(zhí)行或終止;執(zhí)行棧模塊是表達式歸約模塊所要用到的數(shù)據(jù)結(jié)構(gòu),它包含一個符號棧和一個操作數(shù)棧,分別用來存放表達式歸約過程中的終結(jié)符號和操作數(shù);對象庫模塊也是用來存放程序數(shù)據(jù)的地方,它是指存貯的系統(tǒng)定義對象、 瀏覽器文檔模型中的對象和用戶自定義對象的集合;對象庫為解釋器的對象解釋提供了運行基礎(chǔ),同時也為解釋器與瀏覽器的交互提供了運行機制;它包含了對象的屬性、方法和事件處理等方面的內(nèi)容;出錯處理模塊負責處理詞法分析、語法分析及解釋執(zhí)行過程中出現(xiàn)的錯誤,如果源程序詞法語法不符合JavMcript語言的規(guī)則,或者執(zhí)行時出現(xiàn)錯誤,則記錄當前執(zhí)行的語句,并立即返回;子句解釋器模塊完成單條語句的解釋執(zhí)行;每一種類型的語句都對應(yīng)一個語句解釋器;它根據(jù)語句類型完成相應(yīng)的語義動作;子句解釋器在解釋過程中調(diào)用表達式歸約模塊計算表達式的值,并根據(jù)計算結(jié)果控制語句流程;表達式歸約模塊完成在語句執(zhí)行過程中組成語句的各種表達式的運算;表達式歸約模塊按照表達式的產(chǎn)生式規(guī)則找出子表達式進行歸約最終得出表達式的運算結(jié)果;對象解釋模塊實現(xiàn)JavMcript語言基于對象的特性,它包含對象的引用、方法調(diào)用和事件處理;在對象解釋過程中,解釋器通過對象屬性值的變化、對象的方法調(diào)用或事件處理完成與瀏覽器的交互;與瀏覽器交互模塊完成腳本程序的解釋執(zhí)行對網(wǎng)頁產(chǎn)生的副作用, 修改瀏覽器對象的屬性,影響或改變?yōu)g覽器的輸出顯示;系統(tǒng)資源管理模塊系統(tǒng)資源管理作用于整個解釋器,對解釋器所用到的內(nèi)存資源進行分配和回收,對CPU資源進行合理控制。
2.根據(jù)權(quán)利要求1所述的一種基于機頂盒瀏覽器的JavMcript解釋器實現(xiàn)方法,其特征在于所述的解釋前端的設(shè)計上,語法分析器模塊在邏輯上高于詞法分析器模塊和語義動作部件,采取“即用即取”的策略,節(jié)省了單詞鏈表等中間數(shù)據(jù)結(jié)構(gòu)的內(nèi)存開銷。
3.根據(jù)權(quán)利要求1所述的一種基于機頂盒瀏覽器的JavaScript解釋器實現(xiàn)方法,其特征在于解釋器的后端系統(tǒng)實際上是一個解釋自定義字節(jié)碼的虛擬機,后端虛擬機系統(tǒng)是由字節(jié)碼解釋控制程序和函數(shù)調(diào)用關(guān)系棧、操作數(shù)棧、變量數(shù)據(jù)棧和對象信息記錄表五部分組成的;其中,字節(jié)碼字節(jié)控制程序根據(jù)字節(jié)碼的操作符碼,對操作數(shù)進行操作,比如進棧出棧等;函數(shù)調(diào)用關(guān)系棧記錄了 JavaScript各種可執(zhí)行代碼的相互調(diào)用關(guān)系,每當進入一個新的可執(zhí)行代碼,就在函數(shù)調(diào)用關(guān)系棧棧頂壓入當前可執(zhí)行代碼的的執(zhí)行上下文環(huán)境信息; 操作數(shù)棧主要用于進行各種計算和中間結(jié)果的保存,中間字節(jié)碼的所有計算均基于它來進行,變量數(shù)據(jù)棧用于記錄字節(jié)碼執(zhí)行時的變量信息,每當進入一個新的可執(zhí)行代碼,就在變量數(shù)據(jù)棧壓入當前可執(zhí)行代碼的局部變量信息,包括變量名稱、類型、值,一旦當前的可執(zhí)行代碼執(zhí)行完畢,變量數(shù)據(jù)棧頂元素即被彈出,同時函數(shù)調(diào)用關(guān)系棧和操作數(shù)棧中相關(guān)元素彈出;對象信息記錄表是存儲各種JavaScript對象的內(nèi)存區(qū);由于手機中間件平臺的可用內(nèi)存資源有限和小內(nèi)存塊利用不充分的特點,將固定長度的結(jié)構(gòu)數(shù)組作為對象信息記錄表;對象記錄表中記錄包括對象的屬性個數(shù)、對象的屬性信息等;在JavaScript中,對象的方法也被視作對象的屬性。
全文摘要
本發(fā)明公開了一種基于機頂盒瀏覽器的JavaScript解釋器實現(xiàn)方法。本發(fā)明的方法包括解釋器系統(tǒng)包括解釋前端和解釋后端及解釋執(zhí)行控制模塊。解釋前端包括詞法分析器模塊、語法分析器模塊、源文件模塊、出錯處理模塊、中間碼生成模塊;解釋后端包括執(zhí)行棧模塊、對象庫模塊、子句解釋器模塊、表達式規(guī)約模塊、對象解釋模塊、與瀏覽器交互模塊、系統(tǒng)資源管理模塊等。本發(fā)明的解釋器能夠在嵌入式瀏覽器中快速、高效地執(zhí)行網(wǎng)頁中嵌入的JavaScript語言,提高了嵌入式瀏覽器與用戶的實時性、動態(tài)性以及交互性。能夠有效地降低了小內(nèi)存塊的大規(guī)模使用,提高了內(nèi)存利用率,效果良好。
文檔編號H04N21/4782GK102202242SQ20111013140
公開日2011年9月28日 申請日期2011年5月19日 優(yōu)先權(quán)日2011年5月19日
發(fā)明者劉宇, 羅育澤, 雷曾榮, 黃旭陽 申請人:中山大學(xué), 廣東星海數(shù)字家庭產(chǎn)業(yè)技術(shù)研究院有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1