CN112015430A - JavaScript代码翻译方法、装置、计算机设备及存储介质 - Google Patents

JavaScript代码翻译方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN112015430A
CN112015430A CN202010931258.9A CN202010931258A CN112015430A CN 112015430 A CN112015430 A CN 112015430A CN 202010931258 A CN202010931258 A CN 202010931258A CN 112015430 A CN112015430 A CN 112015430A
Authority
CN
China
Prior art keywords
node object
code
target
language
javascript
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010931258.9A
Other languages
English (en)
Other versions
CN112015430B (zh
Inventor
郑鸿生
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An International Smart City Technology Co Ltd
Original Assignee
Ping An International Smart City Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ping An International Smart City Technology Co Ltd filed Critical Ping An International Smart City Technology Co Ltd
Priority to CN202010931258.9A priority Critical patent/CN112015430B/zh
Publication of CN112015430A publication Critical patent/CN112015430A/zh
Application granted granted Critical
Publication of CN112015430B publication Critical patent/CN112015430B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • G06F40/154Tree transformation for tree-structured or markup documents, e.g. XSLT, XSL-FO or stylesheets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/40Processing or translation of natural language
    • G06F40/58Use of machine translation, e.g. for multi-lingual retrieval, for server-side translation for client devices or for real-time translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本申请实施例属于研发领域,涉及一种翻译JavaScript代码方法,包括:通过node.Js读取代码文件中的JavaScript代码;通过babylon或者parser编译所述JavaScript代码,得到抽象语法树;通过traverse遍历所述抽象语法树中的节点对象,得到目标节点对象;通过正则表达式识别所述目标节点对象中的初始语言;将所述节点对象中的初始语言转换成目标语言。此外,本申请还涉及区块链技术,翻译信息可存储于区块链中。本申请还提供一种翻译JavaScript代码装置、计算机设备及存储介质。降低了代码的重构成本。

Description

JavaScript代码翻译方法、装置、计算机设备及存储介质
技术领域
本申请涉及研发领域,尤其涉及一种翻译JavaScript代码方法、装置、计算机设备及存储介质。
背景技术
随着时代信息化、全球化步伐的发展,越来越多的产品定位国际化,在页面开发的时候需要考虑多语言版本或者预设多国应用的场景。针对定位本土、地域性发展并且已成熟运营的产品,后续却要支持多语言场景,则要对项目进行侵入性的重构,譬如将交互层面与文字相关的内容替换成变量,以动态的读取不同语言配置场景下映射中存在的值。但是一个成熟的产品当经历过多个迭代版本,通常具有成千上万行代码,业务流程之间的关系十分复杂,甚至需要有几百个页面进行支撑。如果依靠人为去进行排查与替换翻译的代码,一旦在代码排查环节中不小心多加了个字符,或者少删了个字符,则可能会导致某段代码都引发bug,甚至可能导致业务代码可能被重构,对于回归测试与排查问题的工作量不可估量,如果上线了,损失的不止是留存率,还包括产品形象。
发明内容
本申请实施例的目的在于提出一种翻译JavaScript代码方法、装置、计算机设备及存储介质,以解决翻译代码中重构成本以及重构风险较高技术问题。
为了解决上述技术问题,本申请实施例提供一种翻译JavaScript代码方法,采用了如下所述的技术方案:
通过node.Js读取代码文件中的JavaScript代码;
通过babylon或者parser编译所述JavaScript代码,得到抽象语法树;
通过traverse遍历所述抽象语法树中的节点对象,得到目标节点对象;
通过正则表达式识别所述目标节点对象中的初始语言;
将所述节点对象中的初始语言转换成目标语言。
进一步的,所述节点对象包括子节点类型以及参数值中的至少一项;所述通过traverse遍历所述抽象语法树中的节点对象,得到目标节点对象的步骤具体包括:
根据所述抽象语法树的起始位置以及结束位置,循环遍历所有所述节点对象;
通过所述节点对象中的所述参数值以及所述子节点类型,识别所述节点对象中是否存在初始语言;
若所述节点对象中存在初始语言,则标识所述节点对象,得到目标节点对象。
进一步的,所述若所述节点对象中存在初始语言,则标识所述节点对象,得到目标节点对象的步骤之后还包括:
当存在所述目标节点对象时,则返回一个非空子集,所述非空子集用于指示目标节点对象位置;
当不存在所述目标节点对象时,则返回空集。
进一步的,所述通过正则表达式识别所述目标节点对象中的初始语言的步骤具体包括:
读取所述目标节点对象;
将所述目标节点对象转换成对应的字符串,得到输入字符串;
若所述输入字符串存在所述初始语言并且所述输入字符串满足语法规范,则根据所述语法规范生成对应的数据库查询语句;
根据所述输入字符串,运行所述数据库查询语句,并根据运行结果识别所述目标节点对象中的初始语言。
进一步的,所述通过babylon或者parser编译所述JavaScript代码,得到抽象语法树的步骤具体包括:
通过所述babylon或者所述parser分词处理所述Java Script代码,得到多个语法单元;
通过所述babylon或者所述parser根据所述JavaScript代码的逻辑顺序,确定所述多个语法单元之间的关系,得到代码的关联关系;
根据所述语法单元和所述关联关系生成抽象语法树。
进一步的,所述将所述节点对象中的初始语言转换成目标语言的步骤之后还包括:
当完成所述将所述节点对象中的初始语言转换成目标语言后,生成一个32位的2进制数的标志信息并将所述标志信息返回用户;
若第i位是1,则确定第i+1个的所述子节点翻译正常,所述i是大于等于0且小于32的整数;
若第i位是0,则确定第i+1个所述子节点翻译异常。
进一步的,所述将所述节点对象中的初始语言转换成目标语言的步骤之后还包括:
若所述节点对象中对应的所述第i位是0,则按照预设格式将代码行号、翻译信息及所述标志信息组合所生成的通知。
为了解决上述技术问题,本申请实施例还提供一种翻译JavaScript代码装置,采用了如下所述的技术方案:
代码获取模块,用于通过node.Js读取代码文件中的JavaScript代码;
编译模块,用于通过babylon或者parser编译所述JavaScript代码,得到抽象语法树;
遍历模块,用于通过traverse遍历所述抽象语法树中的节点对象,得到目标节点对象;
识别模块,用于通过正则表达式识别所述目标节点对象中的初始语言;
翻译模块,用于将所述节点对象中的初始语言转换成目标语言。
进一步的,所述遍历模块还用于:
根据所述抽象语法树的起始位置以及结束位置,循环遍历所有所述节点对象;
通过所述节点对象中的所述参数值以及所述子节点类型,识别所述节点对象中是否存在初始语言;
若所述节点对象中存在初始语言,则标识所述节点对象,得到目标节点对象。
进一步的,所述翻译JavaScript代码装置还包括检测模块,所述检测模块还用于:
当当存在所述目标节点对象时,则返回一个非空子集,所述非空子集用于指示目标节点对象位置;
当不存在所述目标节点对象时,则返回空集。
进一步的,所述识别模块还用于:
读取所述目标节点对象;
将所述目标节点对象转换成对应的字符串,得到输入字符串;
若所述输入字符串存在所述初始语言并且所述输入字符串满足语法规范,则根据所述语法规范生成对应的数据库查询语句;
根据所述输入字符串,运行所述数据库查询语句,并根据运行结果识别所述目标节点对象中的初始语言。
进一步的,所述编译模块还用于:
通过所述babylon或者所述parser分词处理所述Java Script代码,得到多个语法单元;
通过所述babylon或者所述parser根据所述JavaScript代码的逻辑顺序,确定所述多个语法单元之间的关系,得到代码的关联关系;
根据所述语法单元和所述关联关系生成抽象语法树。
进一步的,所述翻译JavaScript代码装置还包括指示模块,所述指示模块还用于:
当完成所述将所述节点对象中的初始语言转换成目标语言后,生成一个32位的2进制数的标志信息并将所述标志信息返回用户;
若第i位是1,则确定第i+1个的所述子节点翻译正常,所述i是大于等于0且小于32的整数;
若第i位是0,则确定第i+1个所述子节点翻译异常。
进一步的,所述翻译JavaScript代码装置还包括错误信息模块,所述错误信息模块还用于:
若所述节点对象中对应的所述第i位是0,则按照预设格式将代码行号、翻译信息及所述标志信息组合所生成的通知。
为了解决上述技术问题,本申请实施例还提供一种计算机设备,采用了如下所述的技术方案:
一种计算机设备,其包括至少一个连接的处理器、存储器、输入输出单元,其中,所述存储器用于存储计算机可读指令,所述处理器用于调用所述存储器中的计算机可读指令来执行上述所述的翻译JavaScript代码方法的步骤。
为了解决上述技术问题,本申请实施例还提供一种计算机可读存储介质,采用了如下所述的技术方案:
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现上述所述的翻译JavaScript代码方法的步骤。
与现有技术相比,本申请实施例主要有以下有益效果:
本申请将代码转换成抽象语法树,在抽象语法树中遍历访问抽象语法树中的节点识别定位文本内容,判断是否存在初始语言,若存在初始语言的字符,则提取对应的文本,将对应的提取的文本转换成字符串,替换字符串,实现初始语言和目标语言之间的转换。通过以上方法节省了JavaScript的重构成本。
附图说明
为了更清楚地说明本申请中的方案,下面将对本申请实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请可以应用于其中的示例性系统架构图;
图2根据本申请的翻译JavaScript代码方法的一个实施例的流程图;
图3是根据本申请的翻译JavaScript代码装置的一个实施例的结构示意图;
图4是根据本申请的计算机设备的一个实施例的结构示意图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了使本技术领域的人员更好地理解本申请方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving PictureExpertsGroup Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(MovingPictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的页面提供支持的后台服务器。
需要说明的是,本申请实施例所提供的翻译JavaScript代码方法一般由服务器/终端设备执行,相应地,翻译JavaScript代码装置一般设置于服务器/终端设备中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,示出了根据本申请的翻译JavaScript代码的方法的一个实施例的流程图。所述的翻译JavaScript代码方法,包括以下步骤:
步骤201,通过node.Js读取代码文件中的JavaScript代码。
在本实施例中,翻译JavaScript代码方法运行于其上的电子设备(例如图1所示的服务器/终端设备)可以通过有线连接方式或者无线连接方式服务器接收用户请求进行标定。需要指出的是,上述无线连接方式可以包括但不限于3G/4G连接、WiFi连接、蓝牙连接、WiMAX连接、Zigbee连接、UWB(ultra wideband)连接、以及其他现在已知或将来开发的无线连接方式。
在本实施中,所述Node.js是一个基于Chrome V8引擎的JavaScript运行环境,提供了许多JavaScript的应用程序接口。
步骤202,通过babylon或者parser编译所述JavaScript代码,得到抽象语法树。
在本实施例中,babylon和parser是Babel框架下的开发工具,Babel是一个JavaScript编译器,Babel是一个工具链,主要用于将ECMAScript 2015+版本的代码转换为向后兼容的JavaScript语法,以便能够运行在当前和旧版本的浏览器或其他环境中。Babel能实现的包括语法转换、通过Polyfill方式在目标环境中添加缺失的特性、源码转换等。
步骤203,通过traverse遍历所述抽象语法树中的节点对象,得到目标节点对象。
在本实施例中,babylon只能解析抽象语法树(Abstract Syntax Tree,AST)的功能,要遍历AST树需要配套traverse进行。AST有多个节点连接而成,每个节点都存储着大量代码的信息,每个节点对象由至少一个节点组成,用于描述至少一段代码的代码信息。若所述节点对象中存在初始语言,则标识所述节点对象,得到目标节点对象。
步骤204,通过正则表达式识别所述目标节点对象中的初始语言。
在本实施例中,将所述目标节点对象转换成对应的字符串,得到输入字符串,若所述输入字符串存在中文且所述输入字符串满足语法规范,则根据所述语法规范生成对应的数据库查询语句;所述语法规范至少包括开发规范及设计、命名规范、声明规范、注释规范、常量规范、bean定义规范、事务规范、脚本规范、日志规范、异常处理规范及Junit规范中的至少一种。若所述输入字符串不存在中文或所述输入字符串不满足语法规范,则不生成数据库查询语句,跳过此操作,返回失败信息给用户。
步骤205,将所述节点对象中的初始语言转换成目标语言。
在本实施例中,将代码转换成抽象语法树,遍历访问抽象语法树中的节点,识别定位文本内容,定位字符串字面量,判断是否存在中文字符,若存在字符,则提取文本,将对应的提取的文本转换成字符串,替换字符串,实现简繁体、中英文识别替换,对结果进行变换等操作生成新的抽象语法树,最后以新的抽象语法树为基础生成代码。通过以上方法节省了JavaScript的重构成本。
在一些可选的实现方式中,所述节点对象包括子节点类型以及参数值中的至少一项;所述通过traverse遍历所述抽象语法树中的节点对象,得到目标节点对象的步骤具体包括:
根据所述抽象语法树的起始位置以及结束位置,循环遍历所有所述节点对象;
通过所述节点对象中的所述参数值以及所述子节点类型,识别所述节点对象中是否存在初始语言;
若所述节点对象中存在初始语言,则标识所述节点对象,得到目标节点对象。
上述实施方式中,在抽象语法树中找到节点对象对应的类型,起始位置和结束位置,子节点,节点类型包括值类型,函数类型,变量类型等。遍历访问抽象语法树中的节点识别定位文本内容,定位字符串字面量,判断是否存在中文字符。若存在中文,则标记此处的节点对象。例如以需要翻译一个函数或者用户要读取的文本,就根据起始位置和结束位置遍历AST中的所有对象,找到所有函数以及文本类型对应的节点,然后判断这个节点是函数还是文本,以及里面参数对应的参数值,例如当识别出为参数值时,不需要翻译则不做改变,判断是否有要进行翻译的语言,如果有则进行翻译,例如当节点对象存储的为代码的起始位置和终点位置,通过字符串的形式保存,则每个节点都会存储代码的行号,例如起始位置:110行,终点位置:330行,在这段范围内,通过参数值和节点类型找到对应要翻译的节点对象,例如130行对应的节点对象参数值为1则需要翻译,若不需要翻译则为0,当需要翻译时。节点类型也是同理,只有部分需要翻译的节点类型才进行翻译。只有同时满足参数值为1和节点为需要翻译的节点才进行翻译。
在一些可选的实现方式中,所述若所述检测结果为所述节点对象中存在初始语言,则标识所述节点对象,得到目标节点对象的步骤之后还包括:
当存在所述目标节点对象时,则返回一个非空子集,所述非空子集用于指示目标节点对象位置;
当不存在所述目标节点对象时,则返回空集。
上述实施方式中,通过非空子集指示存在中文的代码位置,若是对应地方是空集,则意味着此处并不存在中文,从而可以快速获取有中文代码的位置,进行翻译。
在一些可选的实现方式中,所述通过正则表达式识别所述目标节点对象中的初始语言的步骤具体包括:
读取所述目标节点对象;
将所述目标节点对象转换成对应的字符串,得到输入字符串;
若所述输入字符串存在所述初始语言并且所述输入字符串满足语法规范,则根据所述语法规范生成对应的数据库查询语句;
根据所述输入字符串,运行所述数据库查询语句,并根据运行结果识别所述目标节点对象中的初始语言。
上述实施方式中,在逐个读取字符串时,当读取到字符检查时,判断出此处节点类型需要翻译,并发现“@”字符后检查为存在中文,则判断检查输入的字符串是否规范,若符合规范,则生成检查对应的数据库查询语句;在生成的数据库查询语句符合数据库查询规则的情形下,将“@”字符后的内容替换成节点对象中的初始语言;运行节点对象中的初始语言数据库查询语句;然后重复执行,获取到最终的数据库语句,并根据数据库语句定位到节点对象中的初始语言。
在一些可选的实现方式中,所述通过babylon或者parser编译所述JavaScript代码,得到抽象语法树的步骤具体包括:
通过所述babylon或者所述parser分词处理所述Java Script代码,得到多个语法单元;
通过所述babylon或者所述parser根据所述JavaScript代码的逻辑顺序,确定所述多个语法单元之间的关系,得到代码的关联关系;
根据所述语法单元和所述关联关系生成抽象语法树。
上述实施方式中,例如,可以将Javscript代码中空格符、换行符、缩进等没有任何实际的意义组合在一起作为一个语法单元;可以将Javscript代码中的注释作为一个不可拆分的语法单元;还可以将Javscript代码中的字符串作为一个语法单元;也可以将Javscript代码中的标识符,即没有被引号括起来的连续字符,例如字母_,$及数字或true,false等内置常量以及if,return,function等关键字作为一个语法单元。根据分词处理后的入口文件可以得到多个语法单元,进而可以利用页面跳转关键词确定代码的逻辑顺序,根据逻辑顺序确定多个语法单元之间的关系,例如利用函数之间的接口确定不同代码块中的联系,例如确定该上一个语法单元与下一个语法单元之间是属于先后步骤关系,还是属于判断是否关系,又或者是属于从属关系等,进而可以根据所确定的多个语法单元之间的关系生成AST树。生成AST的方法具体包括:通过扫描器读取源代码中的每一个字符,转换成词法令牌(多个语法单元),最后,源代码可能会被转换成词法令牌列表(语法单元的关联关系),通过解析器解析词法令牌列表转换成对应的树形节点(生成抽象语法树),再将这些树形节点按照代码执行顺序拼接起来,就得到对应的抽象语法树。
在一些可选的实现方式中,所述将所述节点对象中的初始语言转换成目标语言的步骤之后还包括:
当完成所述将所述节点对象中的初始语言转换成目标语言后,生成一个32位的2进制数的标志信息并将所述标志信息返回用户;
若第i位是1,则确定第i+1个的所述子节点翻译正常,所述i是大于等于0且小于32的整数;
若第i位是0,则确定第i+1个所述子节点翻译异常。
上述实施方式中,翻译状态通过标志位指示。例如,所述2进制数的第0位代第一个子节点翻译是否成功。执行完整个流程后,返回一个32位的2进制数来指示各个子节点的翻译状态,若第0位是1,则第一个子节点翻译成功,若第0位是0,则第一个子节点翻译失败,通过此方法判断子节点是否翻译成功。
在一些可选的实现方式中,所述将所述节点对象中的初始语言转换成目标语言的步骤之后还包括:
若所述节点对象中对应的所述第i位是0,则按照预设格式将代码行号、翻译信息及所述标志信息组合所生成的通知。
上述实施方式中,若翻译失败,则按照固定格将代码行号、翻译信息及所述标志信息组合所生成的通知。所述固定格式用于指示所述异常通知的格式;当确定异常代码后,可以基于异常代码、异常信息及异常数据生成异常通知,以便基于异常通知对开发人员进行通知。例如脚本检测代码行号110行有一个A变量存在未定义的问题,该变量标志信息为32768,若采用固定格式为错误X标志信息-第X行代码行号中存在变量X存在X异常信息,则该异常信息提醒为错误32768-第110行中的A变量存在未定义的问题。
需要强调的是,为进一步保证上述Javscript代码信息的私密和安全性,上述Javscript代码信息还可以存储于一区块链的节点中。
本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指令相关的硬件来完成,该计算机可读指令可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
进一步参考图3,作为对上述图2所示方法的实现,本申请提供了一种翻译JavaScript代码装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图3所示,本实施例所述的翻译JavaScript代码装置300包括:代码获取模块301、编译模块302、遍历模块303、识别模块304以及翻译模块305。
其中:
代码获取模块301用于通过node.Js读取代码文件中的JavaScript代码;
编译模块302用于通过babylon或者parser编译所述JavaScript代码,得到抽象语法树;
遍历模块303用于通过traverse遍历所述抽象语法树中的节点对象,得到目标节点对象;
识别模块304用于通过正则表达式识别所述目标节点对象中的初始语言;
翻译模块305用于将所述节点对象中的初始语言转换成目标语言。
在本实施例的一些可选的实现方式中,上述遍历模块进一步用于:
根据所述抽象语法树的起始位置以及结束位置,循环遍历所有所述节点对象;
通过所述节点对象中的所述参数值以及所述子节点类型,识别所述节点对象中是否存在初始语言;
若所述节点对象中存在初始语言,则标识所述节点对象,得到目标节点对象。
在本实施例的一些可选的实现方式中,上述装置300还包括:检测模块用于:
当存在所述目标节点对象时,则返回一个非空子集,所述非空子集用于指示目标节点对象位置;
当不存在所述目标节点对象时,则返回空集。
在本实施例的一些可选的实现方式中,上述识别模块进一步用于:
读取所述目标节点对象;
将所述目标节点对象转换成对应的字符串,得到输入字符串;
若所述输入字符串存在所述初始语言并且所述输入字符串满足语法规范,则根据所述语法规范生成对应的数据库查询语句;
根据所述输入字符串,运行所述数据库查询语句,并根据运行结果识别所述目标节点对象中的初始语言。
在本实施例的一些可选的实现方式中,上述编译模块进一步用于:
通过所述babylon或者所述parser分词处理所述Java Script代码,得到多个语法单元;
通过所述babylon或者所述parser根据所述JavaScript代码的逻辑顺序,确定所述多个语法单元之间的关系,得到代码的关联关系;
根据所述语法单元和所述关联关系生成抽象语法树。
在本实施例的一些可选的实现方式中,上述装置300还包括:指示模块用于:
当完成所述将所述节点对象中的初始语言转换成目标语言后,生成一个32位的2进制数的标志信息并将所述标志信息返回用户;
若第i位是1,则确定第i+1个的所述子节点翻译正常,所述i是大于等于0且小于32的整数;
若第i位是0,则确定第i+1个所述子节点翻译异常。
在本实施例的一些可选的实现方式中,上述装置300还包括:错误信息模块用于:
若所述节点对象中对应的所述第i位是0,则按照预设格式将代码行号、翻译信息及所述标志信息组合所生成的通知。
本申请通过特征向量的概念,将检测出的特征点放在相应的尺度空间上进行特征点描述,有利于突出特征。利用算法中提出的对平移、旋转以及缩放具有不变性的描述方法对特征向量进行定量的描述,提高特征点匹配效率。根据实际情况,提出基于统计学的简单的错配点剔除算法,使得算法稳定可行且运算时间短。
为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图4,图4为本实施例计算机设备基本结构框图。
所述计算机设备4包括通过系统总线相互通信连接存储器41、处理器42、网络接口43。需要指出的是,图中仅示出了具有组件41-43的计算机设备4,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable GateArray,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
所述存储器41至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器41可以是所述计算机设备4的内部存储单元,例如该计算机设备4的硬盘或内存。在另一些实施例中,所述存储器41也可以是所述计算机设备4的外部存储设备,例如该计算机设备6上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)等。当然,所述存储器41还可以既包括所述计算机设备4的内部存储单元也包括其外部存储设备。本实施例中,所述存储器41通常用于存储安装于所述计算机设备4的操作系统和各类应用软件,例如翻译JavaScript代码方法的计算机可读指令等。此外,所述存储器41还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器42在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器42通常用于控制所述计算机设备4的总体操作。本实施例中,所述处理器42用于运行所述存储器41中存储的计算机可读指令或者处理数据,例如运行所述翻译JavaScript代码方法的计算机可读指令。
所述网络接口43可包括无线网络接口或有线网络接口,该网络接口43通常用于在所述计算机设备4与其他电子设备之间建立通信连接。
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令可被至少一个处理器执行,以使所述至少一个处理器执行如上述的翻译JavaScript代码方法的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。

Claims (10)

1.一种翻译JavaScript代码方法,其特征在于,包括下述步骤:
通过node.Js读取代码文件中的JavaScript代码;
通过babylon或者parser编译所述JavaScript代码,得到抽象语法树;
通过traverse遍历所述抽象语法树中的节点对象,得到目标节点对象;
通过正则表达式识别所述目标节点对象中的初始语言;
将所述节点对象中的初始语言转换成目标语言。
2.根据权利要求1所述的翻译JavaScript代码方法,其特征在于,所述节点对象包括子节点类型以及参数值中的至少一项;所述通过traverse遍历所述抽象语法树中的节点对象,得到目标节点对象的步骤具体包括:
根据所述抽象语法树的起始位置以及结束位置,循环遍历所有所述节点对象;
通过所述节点对象中的所述参数值以及所述子节点类型,识别所述节点对象中是否存在初始语言;
若所述节点对象中存在初始语言,则标识所述节点对象,得到目标节点对象。
3.根据权利要求2所述的翻译JavaScript代码方法,其特征在于,所述若所述节点对象中存在初始语言,则标识所述节点对象,得到目标节点对象的步骤之后还包括:
当存在所述目标节点对象时,则返回一个非空子集,所述非空子集用于指示目标节点对象位置;
当不存在所述目标节点对象时,则返回空集。
4.根据权利要求2所述的翻译JavaScript代码方法,其特征在于,所述通过正则表达式识别所述目标节点对象中的初始语言的步骤具体包括:
读取所述目标节点对象;
将所述目标节点对象转换成对应的字符串,得到输入字符串;
若所述输入字符串存在所述初始语言并且所述输入字符串满足语法规范,则根据所述语法规范生成对应的数据库查询语句;
根据所述输入字符串,运行所述数据库查询语句,并根据运行结果识别所述目标节点对象中的初始语言。
5.根据权利要求1-4中任一项所述的翻译JavaScript代码方法,其特征在于,所述通过babylon或者parser编译所述JavaScript代码,得到抽象语法树的步骤具体包括:
通过所述babylon或者所述parser分词处理所述Java Script代码,得到多个语法单元;
通过所述babylon或者所述parser根据所述JavaScript代码的逻辑顺序,确定所述多个语法单元之间的关系,得到代码的关联关系;
根据所述语法单元和所述关联关系生成抽象语法树。
6.根据权利要求5所述的翻译JavaScript代码方法,其特征在于,所述将所述节点对象中的初始语言转换成目标语言的步骤之后还包括:
当完成所述将所述节点对象中的初始语言转换成目标语言后,生成一个32位的2进制数的标志信息并将所述标志信息返回用户;
若第i位是1,则确定第i+1个的所述子节点翻译正常,所述i是大于等于0且小于32的整数;
若第i位是0,则确定第i+1个所述子节点翻译异常。
7.根据权利要求6所述的翻译JavaScript代码方法,其特征在于,所述将所述节点对象中的初始语言转换成目标语言的步骤之后还包括:
若所述节点对象中对应的所述第i位是0,则按照预设格式将代码行号、翻译信息及所述标志信息组合所生成的通知。
8.一种翻译JavaScript代码装置,其特征在于,包括:
代码获取模块,用于通过node.Js读取代码文件中的JavaScript代码;
编译模块,用于通过babylon或者parser编译所述JavaScript代码,得到抽象语法树;
遍历模块,用于通过traverse遍历所述抽象语法树中的节点对象,得到目标节点对象;
识别模块,用于通过正则表达式识别所述目标节点对象中的初始语言;
翻译模块,用于将所述节点对象中的初始语言转换成目标语言。
9.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如权利要求1至7中任一项所述的翻译JavaScript代码方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如权利要求1至7中任一项所述的翻译JavaScript代码方法的步骤。
CN202010931258.9A 2020-09-07 2020-09-07 JavaScript代码翻译方法、装置、计算机设备及存储介质 Active CN112015430B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010931258.9A CN112015430B (zh) 2020-09-07 2020-09-07 JavaScript代码翻译方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010931258.9A CN112015430B (zh) 2020-09-07 2020-09-07 JavaScript代码翻译方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN112015430A true CN112015430A (zh) 2020-12-01
CN112015430B CN112015430B (zh) 2024-08-16

Family

ID=73516243

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010931258.9A Active CN112015430B (zh) 2020-09-07 2020-09-07 JavaScript代码翻译方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN112015430B (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112445468A (zh) * 2020-12-16 2021-03-05 深圳市房多多网络科技有限公司 Typescript类型文件生成方法、装置、设备及计算机可读存储介质
CN112667208A (zh) * 2020-12-22 2021-04-16 深圳壹账通智能科技有限公司 翻译错误识别方法、装置、计算机设备及可读存储介质
CN112906404A (zh) * 2021-04-26 2021-06-04 腾讯音乐娱乐科技(深圳)有限公司 翻译文案校验方法及电子设备和可读存储介质
CN113010183A (zh) * 2021-04-30 2021-06-22 中国工商银行股份有限公司 一种代码转换方法及装置
CN113220709A (zh) * 2021-05-10 2021-08-06 建信金融科技有限责任公司 一种操作数据库的语法处理方法、装置、设备和存储介质
CN113326048A (zh) * 2021-06-24 2021-08-31 上海万向区块链股份公司 浮点数计算精度处理方法、系统、介质及设备
CN113420569A (zh) * 2021-06-22 2021-09-21 康键信息技术(深圳)有限公司 代码翻译方法、装置、设备及存储介质
CN113434625A (zh) * 2021-08-27 2021-09-24 中汽研(天津)汽车信息咨询有限公司 专利检索式的代码化方法、设备和存储介质
CN113608746A (zh) * 2021-08-16 2021-11-05 北京字节跳动网络技术有限公司 一种代码转换处理方法、装置、计算机设备和存储介质
CN113971027A (zh) * 2021-10-26 2022-01-25 北京字节跳动网络技术有限公司 一种代码转换方法、装置、计算机设备和存储介质
CN113971028A (zh) * 2021-10-26 2022-01-25 腾讯科技(深圳)有限公司 数据处理方法、装置、设备、存储介质及计算机程序产品
CN114089960A (zh) * 2021-10-11 2022-02-25 阿里云计算有限公司 对象处理方法以及装置
CN114816425A (zh) * 2022-04-27 2022-07-29 珠海市奥德维科技有限公司 将自动化语言程序转换为lua语言程序的方法、系统、电子设备及存储介质
CN117195918A (zh) * 2023-07-24 2023-12-08 达州市斑马工业设计有限公司 软件开发包的翻译方法及软件开发系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6981212B1 (en) * 1999-09-30 2005-12-27 International Business Machines Corporation Extensible markup language (XML) server pages having custom document object model (DOM) tags
CN104657189A (zh) * 2013-11-20 2015-05-27 财团法人资讯工业策进会 混合式动态码编译装置、方法及其服务系统
CN110134397A (zh) * 2019-04-12 2019-08-16 深圳壹账通智能科技有限公司 代码片段翻译方法、装置、计算机设备和存储介质
CN110134404A (zh) * 2019-04-12 2019-08-16 深圳壹账通智能科技有限公司 代码翻译方法、装置、计算机设备和存储介质
CN110688307A (zh) * 2019-09-09 2020-01-14 平安普惠企业管理有限公司 JavaScript代码检测方法、装置、设备和存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6981212B1 (en) * 1999-09-30 2005-12-27 International Business Machines Corporation Extensible markup language (XML) server pages having custom document object model (DOM) tags
CN104657189A (zh) * 2013-11-20 2015-05-27 财团法人资讯工业策进会 混合式动态码编译装置、方法及其服务系统
CN110134397A (zh) * 2019-04-12 2019-08-16 深圳壹账通智能科技有限公司 代码片段翻译方法、装置、计算机设备和存储介质
CN110134404A (zh) * 2019-04-12 2019-08-16 深圳壹账通智能科技有限公司 代码翻译方法、装置、计算机设备和存储介质
CN110688307A (zh) * 2019-09-09 2020-01-14 平安普惠企业管理有限公司 JavaScript代码检测方法、装置、设备和存储介质

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112445468A (zh) * 2020-12-16 2021-03-05 深圳市房多多网络科技有限公司 Typescript类型文件生成方法、装置、设备及计算机可读存储介质
WO2022134577A1 (zh) * 2020-12-22 2022-06-30 深圳壹账通智能科技有限公司 翻译错误识别方法、装置、计算机设备及可读存储介质
CN112667208A (zh) * 2020-12-22 2021-04-16 深圳壹账通智能科技有限公司 翻译错误识别方法、装置、计算机设备及可读存储介质
CN112906404A (zh) * 2021-04-26 2021-06-04 腾讯音乐娱乐科技(深圳)有限公司 翻译文案校验方法及电子设备和可读存储介质
CN112906404B (zh) * 2021-04-26 2023-10-13 腾讯音乐娱乐科技(深圳)有限公司 翻译文案校验方法及电子设备和可读存储介质
CN113010183A (zh) * 2021-04-30 2021-06-22 中国工商银行股份有限公司 一种代码转换方法及装置
CN113220709A (zh) * 2021-05-10 2021-08-06 建信金融科技有限责任公司 一种操作数据库的语法处理方法、装置、设备和存储介质
CN113220709B (zh) * 2021-05-10 2023-06-20 建信金融科技有限责任公司 一种操作数据库的语法处理方法、装置、设备和存储介质
CN113420569A (zh) * 2021-06-22 2021-09-21 康键信息技术(深圳)有限公司 代码翻译方法、装置、设备及存储介质
CN113326048A (zh) * 2021-06-24 2021-08-31 上海万向区块链股份公司 浮点数计算精度处理方法、系统、介质及设备
CN113608746A (zh) * 2021-08-16 2021-11-05 北京字节跳动网络技术有限公司 一种代码转换处理方法、装置、计算机设备和存储介质
CN113608746B (zh) * 2021-08-16 2023-10-27 北京字节跳动网络技术有限公司 一种代码转换处理方法、装置、计算机设备和存储介质
CN113434625B (zh) * 2021-08-27 2021-12-07 中汽信息科技(天津)有限公司 专利检索式的代码化方法、设备和存储介质
CN113434625A (zh) * 2021-08-27 2021-09-24 中汽研(天津)汽车信息咨询有限公司 专利检索式的代码化方法、设备和存储介质
CN114089960A (zh) * 2021-10-11 2022-02-25 阿里云计算有限公司 对象处理方法以及装置
CN113971028A (zh) * 2021-10-26 2022-01-25 腾讯科技(深圳)有限公司 数据处理方法、装置、设备、存储介质及计算机程序产品
CN113971027A (zh) * 2021-10-26 2022-01-25 北京字节跳动网络技术有限公司 一种代码转换方法、装置、计算机设备和存储介质
CN114816425A (zh) * 2022-04-27 2022-07-29 珠海市奥德维科技有限公司 将自动化语言程序转换为lua语言程序的方法、系统、电子设备及存储介质
CN117195918A (zh) * 2023-07-24 2023-12-08 达州市斑马工业设计有限公司 软件开发包的翻译方法及软件开发系统

Also Published As

Publication number Publication date
CN112015430B (zh) 2024-08-16

Similar Documents

Publication Publication Date Title
CN112015430B (zh) JavaScript代码翻译方法、装置、计算机设备及存储介质
CN102693323B (zh) 级联样式表解析方法及解析器、网页展示方法及服务器
CN111507086B (zh) 本地化应用程序中翻译文本位置的自动发现
CN110688307B (zh) JavaScript代码检测方法、装置、设备和存储介质
CN113094625B (zh) 页面元素定位方法、装置、电子设备及存储介质
CN117033249B (zh) 一种测试用例生成方法、装置、计算机设备及存储介质
CN114416481A (zh) 日志分析方法、装置、设备及存储介质
CN111881183B (zh) 企业名称匹配方法和装置、以及存储介质和电子设备
CN114153459A (zh) 接口文档生成方法及装置
CN116644213A (zh) Xml文件读取方法、装置、设备及存储介质
CN115599386A (zh) 代码生成方法、装置、设备及存储介质
CN113627168A (zh) 一种元器件封装冲突的检查方法、装置、介质及设备
CN111984262A (zh) 微信层叠样式表文件的处理方法、装置、设备及存储介质
CN110737431A (zh) 软件开发方法、开发平台、终端设备及存储介质
CN113869789A (zh) 一种风险监控的方法、装置、计算机设备及存储介质
CN111178025A (zh) 核电站运行导则的编辑方法、装置、计算机设备及存储介质
CN113885876A (zh) 一种参数校验方法、装置、存储介质及计算机系统
CN112667208A (zh) 翻译错误识别方法、装置、计算机设备及可读存储介质
CN115640279A (zh) 一种数据血缘关系的构建方法和装置
CN115033489A (zh) 代码资源检测方法、装置、电子设备及存储介质
CN114625372A (zh) 组件自动编译方法、装置、计算机设备及存储介质
CN113656044A (zh) 安卓安装包压缩方法、装置、计算机设备及存储介质
CN113268617A (zh) 论文元数据的检测方法及装置
CN111475403A (zh) 测试脚本的动态生成方法及相关装置
Al-Msie’deen BushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant