[發明專利]一種JS引擎容錯方法和裝置在審
| 申請號: | 201710157757.5 | 申請日: | 2017-03-16 |
| 公開(公告)號: | CN106874137A | 公開(公告)日: | 2017-06-20 |
| 發明(設計)人: | 徐佳宏;朱呂亮;梁達源 | 申請(專利權)人: | 深圳市茁壯網絡股份有限公司 |
| 主分類號: | G06F11/07 | 分類號: | G06F11/07;G06F9/455 |
| 代理公司: | 深圳市深佳知識產權代理事務所(普通合伙)44285 | 代理人: | 王仲凱 |
| 地址: | 518004 廣東省*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 js 引擎 容錯 方法 裝置 | ||
技術領域
本申請涉及計算機領域,更具體地說,涉及一種JS引擎容錯方法和裝置。
背景技術
JavaScript是一種直譯式腳本語言,是一種動態類型、弱類型、基于原型的語言。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,是一個專門處理JavaScript腳本的虛擬機。
參見圖1示出了JavaScript引擎的工作原理示意圖。JavaScript引擎先將腳本代碼進行詞法分析和語法分析。
詞法分析(lexer),其實就是一個掃描器,依據語言的定義,提取出源文件中的內容變為一個個語法可以識別的token,比如關鍵字,操作符,常量等。
語法分析(paser),它的功能就是根據語法(token的順序組合),識別出不同的語義(目標操作)。這是輸入文本轉為一種它可以理解的語義形式(抽象語法樹),或者更進一步生成供后續使用的中間代碼(字節碼),解釋器就是負責執行解析輸出的結果。
比如一段JavaScript腳本:
var a=1;
經過詞法lexer可能被識別為以下的tokens:
VARIABLE EQUAL CONSTANT END
經過語法parser一分析,就了解這是一個“賦值操作,向變量a賦值常量1”。隨后再調用對應的操作加以執行。
在現有技術中,當JavaScript的某條腳本錯誤時,JS引擎則會中斷程序執行,無法讀取下一條腳本。
發明內容
有鑒于此,本申請提供一種JS引擎容錯方法和裝置,以在JavaScript腳本的某條語句有誤時,仍可以讀取下一條腳本。
為了實現上述目的,現提出的方案如下:
一種JS引擎容錯方法,包括:
獲取所有JavaScript腳本,并將所述JavaScript腳本進行解析生成所述JS引擎可識別的token代碼;
對所述token代碼進行檢測,確定所述token代碼中的異常代碼,并記錄所述異常代碼的起始位置和長度,以確定錯誤JavaScript腳本的所在位置;
根據所述異常代碼的起始位置和長度,確定下一條正常JavaScript腳本的起始位置。
優選的,所述對所述token代碼進行檢測,確定所述token代碼中的異常代碼,并記錄所述異常代碼的起始位置和長度,以確定錯誤JavaScript腳本的所在位置,之后還包括:
確定所述錯誤JavaScript腳本的錯誤類型,并采用錯誤碼進行標識。
優選的,所述確定所述錯誤JavaScript腳本的錯誤類型,并采用錯誤碼進行標識,之后還包括:
對所述異常代碼進行處理,以使所述異常代碼可正常執行。
一種JS引擎容錯裝置,包括:
腳本獲取解析單元,用于獲取所有JavaScript腳本,并將所述JavaScript腳本進行解析生成所述JS引擎可識別的token代碼;
錯誤腳本位置確定單元,用于對所述token代碼進行檢測,確定所述token代碼中的異常代碼,并記錄所述異常代碼的起始位置和長度,以確定錯誤JavaScript腳本的所在位置;
正常腳本執行單元,用于根據所述異常代碼的起始位置和長度,跳過所述錯誤JavaScript腳本,以執行下一條正常JavaScript腳本。
優選的,還包括:錯誤腳本類型確定單元,用于確定所述錯誤JavaScript腳本的錯誤類型,并采用錯誤碼進行標識。
優選的,還包括:錯誤腳本處理單元,用于對所述錯誤腳本對應的所述異常代碼進行處理,以使所述異常代碼可正常執行。
經由上述技術方案可知,本申請公開一種JS引擎容錯方法和裝置。JS引擎在獲取JavaScript腳本后并將JavaScript腳本進行解析生成JS引擎可識別的token代碼。進而,對解析生成token代碼進行檢測,確定token代碼中的異常代碼,并記錄所述異常代碼的起始位置和長度,從而確定JavaScript腳本中錯誤腳本的所在位置。進一步,根據異常代碼的起始位置和長度,確定下一條正常腳本的起始位置,從而跳過錯誤腳本而繼續執行正常腳本。
附圖說明
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于深圳市茁壯網絡股份有限公司,未經深圳市茁壯網絡股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710157757.5/2.html,轉載請聲明來源鉆瓜專利網。





