一种代码转换方法、设备和存储介质技术

技术编号:25224695 阅读:51 留言:0更新日期:2020-08-11 23:13
本发明专利技术提供本发明专利技术提供一种代码转换方法、设备和存储介质,包括:将第一源代码中所有以双斜杠“//”开头,以换行结尾的代码删除后并生成第一文本;将第一文本中所有的空格字符删除后生成第二文本;判断第一文本中左右花括号数量是否相等:是,则顺序遍历第二文本,根据匹配的花括号类型执行对应的操作以生成节点树;根据节点树按照设定的层级、缩进规则生成第二代码。本发明专利技术根据不同的花括号类型做出不同的操作,以供构造节点树,并根据节点树按照相应的规则快速直接生成第二代码。

【技术实现步骤摘要】
一种代码转换方法、设备和存储介质
本申请涉及计算机
,具体涉及一种代码转换方法、设备和存储介质。
技术介绍
在前端领域,使用标准CSS时,要为多层嵌套的元素定义样式,要么使用后代选择器从外到内的嵌套定义,要么给这个元素加上类名或id来定义。这样的写法虽然简单,但维护起来很不方便,原因在于CSS语法分散,无法清晰了解到样式之间的层级和关联。因此诞生了Less这样的语言,它是一种CSS预处理器,可以允许你使用嵌套的语法定义样式。在Less中,嵌套规则使得CSS语法分散,层级不清晰这样的问题迎刃而解。嵌套规则允许在一个选择器中嵌套另一个选择器,这更容易设计出精简的代码,并且样式之间的关系一目了然,而且在相应的html代码中,Less层级和html层级对应关系也更明确,在维护和修改代码时,能更快速的定位。但是,在编写CSS代码或Less代码时,还需再手动编写相应的html代码,我们可以利用Less的代码规则,自动生成相对应的html代码,减少工作量。但目前还没有能将Less代码转换成相应html代码的方法。
技术实现思路
鉴于现有技术中的上述缺陷或不足,期望提供一种简单有效的代码转换方法、设备和存储介质。第一方面,本专利技术提供一种代码转换方法,包括:将第一源代码中所有以双斜杠“//”开头,以换行结尾的代码删除后并生成第一文本;将第一文本中所有的空格字符删除后生成第二文本;判断第一文本中左右花括号数量是否相等:是,则顺序遍历第二文本,根据匹配的花括号类型执行对应的操作以生成节点树;根据节点树按照设定的层级、缩进规则生成第二代码。进一步,将第一源代码中所有以双斜杠“//”开头,以换行结尾的代码删除后并生成第一文本,包括:通过第一正则表达式///.*\n/识别第一源代码中所有双斜杠“//”开头,以换行结尾的代码,删除后生成第一文本;其中,/代表匹配一个左斜杠;.代表一个任意字符;*代表匹配次数,0次或n次,.*即代表匹配不确定数目的任意字符;\n代表换行字符,即一行的结尾。进一步,将第一文本中所有的空格字符删除后生成第二文本,包括:通过第二正则表达式/\s+/识别第一文本中空格字符,删除后生成第二文本;其中,s代表匹配一个空格字符;+代表匹配次数,匹配一次或多次,则\s+代表匹配任意长度的连续空格。进一步,根据匹配的花括号类型执行对应的操作以生成节点树,包括:配置一根节点压入栈底;根节点包括节点类型、节点名称、节点值和子节点列表;判断匹配的花括号类型:若类型为左花括号,则生成第一节点后压入堆栈;若类型为右花括号,则将堆栈中的当前节点推出后作为下一节点的子节点,并放入下一节点的子节点列表;遍历第二文本直到遍历完所有的花括号。进一步,根据节点树按照设定的层级、缩进规则生成第二代码,包括:获取节点树的根节点的信息,根据节点类型,节点名,节点值,创建一个html的父标签;根据子节点列表的若干子节点的信息生成对应的若干html子标签,并依次放置在父标签内;根据每个层级,按照设定的缩进规则对各html的标签进行填充后生成第二代码,即html代码。进一步,第一源代码为Less代码和/或Scss代码。第二方面,本专利技术还提供一种设备,包括一个或多个处理器和存储器,其中存储器包含可由该一个或多个处理器执行的指令以使得该一个或多个处理器执行根据本专利技术各实施例提供的代码转换方法。第三方面,本专利技术还提供一种存储有计算机程序的存储介质,该计算机程序使计算机执行根据本专利技术各实施例提供的代码转换方法。本专利技术诸多实施例提供的一种代码转换方法、设备和存储介质通过将第一源代码转换成无空格字符的代码文本后,根据不同的花括号类型做出不同的操作,以供构造节点树,并根据节点树按照相应的规则快速直接生成第二代码。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:图1为本专利技术一实施例提供的一种代码转换方法的流程图。图2为图1所示一优选实施例生成的节点树结构图。图3为图1所示方法一优选实施方式中步骤13的场景示意图。图4为本专利技术一实施例提供的一种设备的结构示意图。具体实施方式下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关专利技术,而非对该专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与专利技术相关的部分。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。图1为本专利技术一实施例提供的一种代码转换方法的流程图。如图1所示,在本实施例中,本专利技术提供一种代码转换方法,包括:S11、将第一源代码中所有以双斜杠“//”开头,以换行结尾的代码删除后并生成第一文本;S12、将第一文本中所有的空格字符删除后生成第二文本;S13、判断第一文本中左右花括号数量是否相等:是,则顺序遍历第二文本,根据匹配的花括号类型执行对应的操作以生成节点树;S14、根据节点树按照设定的层级、缩进规则生成第二代码。具体地,以下面less源代码为例:将第一源代码中所有以双斜杠“//”开头,以换行结尾的代码删除后并生成第一文本;如下:将第一文本中所有的空格字符删除后生成第二文本;如下:.common-select-wraper{position:relative;.common-select-search{cursor:pointer;font-size:16px;position:absolute;top:50%;margin-top:-8px;}.common-select{cursor:initial;}p{height:32px;line-height:31px;font-size:14px;}}如上述第二文本所示,左花括号数量(4个)与右花括号数量(4个)一致,则顺序遍历第二文本,根据匹配的花括号类型执行对应的操作以生成节点树,如图2所示。最后根据节点树按照设定的层级、缩进规则生成第二代码,即:需要说明的是,本方法中的第一语言代码适用于大多数程序语言,如JavaScript,less,css,Scss等,根据具体语言的属性的不同,使得有些语言在转换成html的语言后并不能很好的实现需要的功能,本方法对于less语言和Scss语言是较优的选择。进一步优选地,将第一源代码中所有以双斜杠“//”开头,以换行结尾的代码删除后并生成第一文本,包括:通过第一正则表达式///.*\n/识别第一源代码中所有双斜杠“//”开头、以换行结尾的代码,删除后生成第一文本;其中,/代表匹配一个左斜杠;.代表一个任意字符;*代表匹配次数,本文档来自技高网...

【技术保护点】
1.一种代码转换方法,其特征在于,包括/n将第一源代码中所有以双斜杠“//”开头,以换行结尾的代码删除后并生成第一文本;/n将所述第一文本中所有的空格字符删除后生成第二文本;/n判断第一文本中左右花括号数量是否相等:/n是,则顺序遍历所述第二文本,根据匹配的花括号类型执行对应的操作以生成节点树;/n根据所述节点树按照设定的层级、缩进规则生成第二代码。/n

【技术特征摘要】
1.一种代码转换方法,其特征在于,包括
将第一源代码中所有以双斜杠“//”开头,以换行结尾的代码删除后并生成第一文本;
将所述第一文本中所有的空格字符删除后生成第二文本;
判断第一文本中左右花括号数量是否相等:
是,则顺序遍历所述第二文本,根据匹配的花括号类型执行对应的操作以生成节点树;
根据所述节点树按照设定的层级、缩进规则生成第二代码。


2.根据权利要求1所述的方法,其特征在于,所述将第一源代码中所有以双斜杠“//”开头,以换行结尾的代码删除后并生成第一文本,包括:
通过第一正则表达式///.*\n/识别所述第一源代码中所有双斜杠“//”开头,以换行结尾的代码,删除后生成第一文本;其中,/代表匹配一个左斜杠;.代表一个任意字符;*代表匹配次数,0次或n次,.*即代表匹配不确定数目的任意字符;\n代表换行字符,即一行的结尾。


3.根据权利要求2所述的方法,其特征在于,将所述第一文本中所有的空格字符删除后生成第二文本,包括:
通过第二正则表达式/\s+/识别第一文本中空格字符,删除后生成第二文本;其中,s代表匹配一个空格字符;+代表匹配次数,匹配一次或多次,\s+即代表匹配任意长度的连续空格。


4.根据权利要求3所述的方法,其特征在于,根据匹配的花括号类型执行对应的操作以生成节点树,包括:

【专利技术属性】
技术研发人员:蔡亮张帅李伟匡立中邱炜伟
申请(专利权)人:杭州趣链科技有限公司
类型:发明
国别省市:浙江;33

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

1