一种JS引擎容错方法和装置制造方法及图纸

技术编号:15690730 阅读:216 留言:0更新日期:2017-06-24 03:21
本申请公开一种JS引擎容错方法和装置。JS引擎在获取JavaScript脚本后并将JavaScript脚本进行解析生成JS引擎可识别的token代码。进而,对解析生成token代码进行检测,确定token代码中的异常代码,并记录所述异常代码的起始位置和长度,从而确定JavaScript脚本中错误脚本的所在位置。进一步,根据异常代码的起始位置和长度,确定下一条正常脚本的起始位置,从而跳过错误脚本而继续执行正常脚本。

Fault tolerant method and device for JS engine

The present invention discloses a JS engine fault-tolerant method and device. The JS engine parses the JavaScript script after the JavaScript script is acquired and generates the token code that can be identified by the JS engine. Then, analysis of the generated token code for testing, to determine the exception code in token code, and the length and position of recording the exception code, so as to determine the error in the location of the JavaScript script script. Further, the starting position of the next normal script is determined according to the starting position and length of the exception code, thereby skipping the error script and continuing to execute the normal script.

【技术实现步骤摘要】
一种JS引擎容错方法和装置
本申请涉及计算机领域,更具体地说,涉及一种JS引擎容错方法和装置。
技术介绍
JavaScript是一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言。它的解释器被称为JavaScript引擎,为浏览器的一部分,是一个专门处理JavaScript脚本的虚拟机。参见图1示出了JavaScript引擎的工作原理示意图。JavaScript引擎先将脚本代码进行词法分析和语法分析。词法分析(lexer),其实就是一个扫描器,依据语言的定义,提取出源文件中的内容变为一个个语法可以识别的token,比如关键字,操作符,常量等。语法分析(paser),它的功能就是根据语法(token的顺序组合),识别出不同的语义(目标操作)。这是输入文本转为一种它可以理解的语义形式(抽象语法树),或者更进一步生成供后续使用的中间代码(字节码),解释器就是负责执行解析输出的结果。比如一段JavaScript脚本:vara=1;经过词法lexer可能被识别为以下的tokens:VARIABLEEQUALCONSTANTEND经过语法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脚本中错误脚本的所在位置。进一步,根据异常代码的起始位置和长度,确定下一条正常脚本的起始位置,从而跳过错误脚本而继续执行正常脚本。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1示出了JavaScript引擎的工作原理示意图;图2示出了本专利技术一个实施例公开的一种JS引擎容错方法的流程示意图;图3示出了本专利技术另一个实施例公开的一种JS引擎容错方法的流程示意图;图4示出了本专利技术另一个实施例公开的一种JS引擎容错装置的结构示意图;图5示出了本专利技术另一个实施例公开的一种JS引擎容错装置的结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。参见图2示出了本专利技术一个实施例公开的一种JS引擎容错方法的流程示意图。由图2可知,本专利技术包括:S201:获取所有JavaScript脚本,并将所述JavaScript脚本进行解析生成所述JS引擎可识别的token代码。JavaScript引擎先将脚本代码进行词法分析,依据语言的定义,提取出源文件中的内容变为一个个语法可以识别的token,比如关键字,操作符,常量等。S202:对所述token代码进行检测,确定所述token代码中的异常代码,并记录所述异常代码的起始位置和长度,以确定错误JavaScript脚本的所在位置。JavaScript脚本报错的原因其实有很多种,比如变量、函数没定义,break、return语句使用不当,各种笔误等等。当JavaScript脚本出现错误时,JavaScript脚本所对应的token代码也会出现错误,通过对token代码进行检测即可确定出现错误的JavaScript脚本。S203:根据所述异常代码的起始位置和长度,确定下一条正常JavaScript脚本的起始位置。记录异常代码的起始位置start_position,根据异常代码的长度计算出偏移量offect,最后start_position+offect得出下一条正常JavaScript脚本的开始位置。由上述实施例可知,本申请公开一种JS引擎容错方法。JS引擎在获取JavaScript脚本后并将JavaScript脚本进行解析生成JS引擎可识别的token代码。进而,对解析生成token代码进行检测,确定token代码中的异常代码,并记录所述异常代码的起始位置和长度,从而确定JavaScript脚本中错误脚本的所在位置。进一步,根据异常代码的起始位置和长度,确定下一条正常脚本的起始位置,从而跳过错误脚本而继续执行正常脚本。参见图3示出了本专利技术另一个实施例公开的一种JS引擎容错方法的流程示意图。由图3可知,该方法包括:S301:获取所有JavaScript脚本,并将所述JavaScript脚本进行解析生成所述JS引擎可识别的token代码。JavaScript引擎先将脚本代码进行词法分析,依据语言的定义,提取出源文件中的内容变为一个个语法可以识别的token,比如关键字,操作符,常量等。S302:对所述token代码进行检测本文档来自技高网...
一种JS引擎容错方法和装置

【技术保护点】
一种JS引擎容错方法,其特征在于,包括:获取所有JavaScript脚本,并将所述JavaScript脚本进行解析生成所述JS引擎可识别的token代码;对所述token代码进行检测,确定所述token代码中的异常代码,并记录所述异常代码的起始位置和长度,以确定错误JavaScript脚本的所在位置;根据所述异常代码的起始位置和长度,确定下一条正常JavaScript脚本的起始位置。

【技术特征摘要】
1.一种JS引擎容错方法,其特征在于,包括:获取所有JavaScript脚本,并将所述JavaScript脚本进行解析生成所述JS引擎可识别的token代码;对所述token代码进行检测,确定所述token代码中的异常代码,并记录所述异常代码的起始位置和长度,以确定错误JavaScript脚本的所在位置;根据所述异常代码的起始位置和长度,确定下一条正常JavaScript脚本的起始位置。2.根据权利要求1所述的方法,其特征在于,所述对所述token代码进行检测,确定所述token代码中的异常代码,并记录所述异常代码的起始位置和长度,以确定错误JavaScript脚本的所在位置,之后还包括:确定所述错误JavaScript脚本的错误类型,并采用错误码进行标识。3.根据权利要求2所述的方法,其特征在于,所述确定所述错误JavaScript脚本的错误类型,并采用错误码进行标识,之后还包括:对所述异常代码进行...

【专利技术属性】
技术研发人员:徐佳宏朱吕亮梁达源
申请(专利权)人:深圳市茁壮网络股份有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1