本發(fā)明專利技術(shù)公開了一種基于機(jī)頂盒瀏覽器的JavaScript解釋器實(shí)現(xiàn)方法。本發(fā)明專利技術(shù)的方法包括:解釋器系統(tǒng)包括解釋前端和解釋后端及解釋執(zhí)行控制模塊。解釋前端包括詞法分析器模塊、語法分析器模塊、源文件模塊、出錯(cuò)處理模塊、中間碼生成模塊;解釋后端包括執(zhí)行棧模塊、對象庫模塊、子句解釋器模塊、表達(dá)式規(guī)約模塊、對象解釋模塊、與瀏覽器交互模塊、系統(tǒng)資源管理模塊等。本發(fā)明專利技術(shù)的解釋器能夠在嵌入式瀏覽器中快速、高效地執(zhí)行網(wǎng)頁中嵌入的JavaScript語言,提高了嵌入式瀏覽器與用戶的實(shí)時(shí)性、動(dòng)態(tài)性以及交互性。能夠有效地降低了小內(nèi)存塊的大規(guī)模使用,提高了內(nèi)存利用率,效果良好。
【技術(shù)實(shí)現(xiàn)步驟摘要】
【技術(shù)保護(hù)點(diǎn)】
1.一種基于機(jī)頂盒瀏覽器的JavaScript解釋器實(shí)現(xiàn)方法,其特征在于:解釋器系統(tǒng)包括解釋前端和解釋后端及解釋執(zhí)行控制模塊,解釋前端包括詞法分析器模塊、語法分析器模塊、源文件模塊、出錯(cuò)處理模塊、中間碼生成模塊;解釋后端包括執(zhí)行棧模塊、對象庫模塊、子句解釋器模塊、表達(dá)式規(guī)約模塊、對象解釋模塊、與瀏覽器交互模塊、系統(tǒng)資源管理模塊;其中,詞法分析器模塊將源程序以字符串的方式讀入,并將其分為若干個(gè)記號,記號于自然語言中的單詞類似;我們將JavaScript語言的單詞分為標(biāo)識符、字符串、整數(shù)、浮點(diǎn)數(shù)、布爾值、運(yùn)算符等;源程序經(jīng)過詞法分析后生成一個(gè)單詞雙向鏈表,供后面的語法分析器模塊調(diào)用;語法分析器模塊以單詞鏈表作為輸入,分別調(diào)用不同的語句識別器,識別它們是否符合給定文法,并最終生成一個(gè)語法樹結(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ù)字典供表達(dá)式歸約模塊在歸約過程中查找所需要的數(shù)據(jù),解釋執(zhí)行控制模塊解釋執(zhí)行控制器負(fù)責(zé)根據(jù)預(yù)先生成好的中間數(shù)據(jù)結(jié)構(gòu),按照語句的語義對源程序語句進(jìn)行逐條解釋執(zhí)行,它控制程序的順序執(zhí)行過程;執(zhí)行過程中調(diào)用語句解釋器解釋執(zhí)行單條語句,并根據(jù)解釋結(jié)果控制程序的繼續(xù)執(zhí)行或終止;執(zhí)行棧模塊是表達(dá)式歸約模塊所要用到的數(shù)據(jù)結(jié)構(gòu),它包含一個(gè)符號棧和一個(gè)操作數(shù)棧,分別用來存放表達(dá)式歸約過程中的終結(jié)符號和操作數(shù);對象庫模塊也是用來存放程序數(shù)據(jù)的地方,它是指存貯的系統(tǒng)定義對象、瀏覽器文檔模型中的對象和用戶自定義對象的集合;對象庫為解釋器的對象解釋提供了運(yùn)行基礎(chǔ),同時(shí)也為解釋器與瀏覽器的交互提供了運(yùn)行機(jī)制;它包含了對象的屬性、方法和事件處理等方面的內(nèi)容;出錯(cuò)處理模塊負(fù)責(zé)處理詞法分析、語法分析及解釋執(zhí)行過程中出現(xiàn)的錯(cuò)誤,如果源程序詞法語法不符合JavaScript語言的規(guī)則,或者執(zhí)行時(shí)出現(xiàn)錯(cuò)誤,則記錄當(dāng)前執(zhí)行的語句,并立即返回;子句解釋器模塊完成單條語句的解釋執(zhí)行;每一種類型的語句都對應(yīng)一個(gè)語句解釋器;它根據(jù)語句類型完成相應(yīng)的語義動(dòng)作;子句解釋器在解釋過程中調(diào)用表達(dá)式歸約模塊計(jì)算表達(dá)式的值,并根據(jù)計(jì)算結(jié)果控制語句流程;表達(dá)式歸約模塊完成在語句執(zhí)行過程中組成語句的各種表達(dá)式的運(yùn)算;表達(dá)式歸約模塊按照表達(dá)式的產(chǎn)生式規(guī)則找出子表達(dá)式進(jìn)行歸約最終得出表達(dá)式的運(yùn)算結(jié)果;對象解釋模塊實(shí)現(xiàn)JavaScript語言基于對象的特性,它包含對象的引用、方法調(diào)用和事件處理;在對象解釋過程中,解釋器通過對象屬性值的變化、對象的方法調(diào)用或事件處理完成與瀏覽器的交互;與瀏覽器交互模塊完成腳本程序的解釋執(zhí)行對網(wǎng)頁產(chǎn)生的副作用,修改瀏覽器對象的屬性,影響或改變?yōu)g覽器的輸出顯示;系統(tǒng)資源管理模塊系統(tǒng)資源管理作用于整個(gè)解釋器,對解釋器所用到的內(nèi)存資源進(jìn)行分配和回收,對CPU資源進(jìn)行合理控制。...
【技術(shù)特征摘要】
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:黃旭陽,雷曾榮,羅育澤,劉宇,
申請(專利權(quán))人:廣東星海數(shù)字家庭產(chǎn)業(yè)技術(shù)研究院有限公司,中山大學(xué),
類型:發(fā)明
國別省市:81
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會(huì)獲得科技券。