一种基于词法分析及正则的编码器制造技术

技术编号:35411293 阅读:17 留言:0更新日期:2022-11-03 11:07
本发明专利技术公开了一种基于词法分析及正则的编码器,包括:前端功能层,用于提供规则代码的管理以及编码生成;规则模型层,与前端功能层通信,用于提供规则模型作为编码器的组成单元;规则模型定义层,与规则模型层通信,用于为规则模型的描述元数据,包含模型编码、属性、属性值。本发明专利技术的基于词法分析及正则的编码器,将编码器的编码规则抽象为规则表达式,用户可根据业务需要,随时增加或修改规则表达式并实时生效。时生效。时生效。

【技术实现步骤摘要】
一种基于词法分析及正则的编码器


[0001]本专利技术涉及一种编码器,更具体的说是涉及一种基于词法分析及正则的编码器。

技术介绍

[0002]软件开发过程中,开发人员根据需求定制编码器功能。交付用户使用后,用户无法调整编码规则。
[0003]而企业应用中的编码器大多和业务紧密结合,生成的编号中包含了很多复杂的业务含义。需要增加编码规则或修改编码规则时,将需要重新开发和发布应用。增加用户的使用成本,且多次的发布对应用稳定性也有影响,因此现有技术中的编码器存在不够通用,灵活性不足的问题。

技术实现思路

[0004]针对现有技术存在的不足,本专利技术的目的在于提供一种通用且灵活的基于词法分析及正则的编码器。
[0005]为实现上述目的,本专利技术提供了如下技术方案:一种基于词法分析及正则的编码器,包括:
[0006]前端功能层,用于提供规则代码的管理以及编码生成;
[0007]规则模型层,与前端功能层通信,用于提供规则模型作为编码器的组成单元;
[0008]规则模型定义层,与规则模型层通信,用于为规则模型的描述元数据,包含模型编码、属性、属性值。
[0009]作为本专利技术的进一步改进,所述前端功能层包括:
[0010]规则代码管理模块,用于提供规则代码的新增、删除、修改、查询及预览功能;
[0011]编码生成API模块,用于在用户录入编码唯一标识、占位符信息后,根据规则代码的编码规则自动生成编码结果;
[0012]编码日志管理模块,用于自动记录下每一次的编码结果,形成日志记录以供用户查找和追溯使用记录。
[0013]作为本专利技术的进一步改进,所述规则代码管理模块在接收到录入的规则代码后,将优先过滤转义的元字符,再用正则解析出规则模型列表,之后通过遍历规则模型列表,逐个匹配出组成规则模型需要的属性和参数,完成所有规则模型的预编译工作,并在之后将规则的描述文本持久化。
[0014]作为本专利技术的进一步改进,所述规则模型的预编译具体步骤如下:
[0015]步骤一,在接收到用户录入的规则代码后,并转为字符数组a[];
[0016]步骤二,声明字符串b,同时声明i值等于0;
[0017]步骤三,判断i是否小于字符数组a[]的长度,若小于则进行下一步,若不小于则保存规则、转义字符及下标位置后返回给用户录入成功信息后结束;
[0018]步骤四,判断字符a[i]是否为转义字符,若为转义字符则缓存转义字符和下标位
置后将i值加1,并返回步骤三,若不是转义字符则继续下一步;
[0019]步骤五,判断字符a[i]是否为空字符,若是则将i值加1后返回步骤三,若不是则继续下一步;
[0020]步骤六,判断字符a[i]是否为结束符,若不是则拼接到字符串b的右侧,之后将i值加1后返回步骤三,若字符a[i]为结束符则继续下一步;
[0021]步骤七,将字符a[i]正则匹配字符串b,以此方式判断是否为可识别的规则模型,若不是则将i值加1后返回步骤三,若是则进行词法解析之后缓存规则模型及定义,之后将i值加1后返回步骤三;
[0022]其中,步骤七中的词法解析包括以空格解析模型属性定义和以“=”解析属性名及属性值,i为计数用数值,a[i]为取字符数组a[]中,下标为i的数组元素。
[0023]作为本专利技术的进一步改进,所述编码生成API模块自动生成编码结果的具体步骤如下:
[0024]步骤1,在接收到用户输入的编码器编号后取预编译规则模型集合c;
[0025]步骤2,声明字符串b,同时声明i值等于0;
[0026]步骤3,判断i是否小于集合c的大小,若小于则继续下一步;若不小于则获取字符串b后返回字符串b给用户后结束;
[0027]步骤4,声明tmp=c.get(i),判断tmp是否为固定字符,若是则拼接到字符串b之后,将i值加1后返回步骤3;
[0028]步骤5,获取tmp模型实现类,之后调用generateCode方法,获取相应的执行结果,之后将tmp拼接到b之后,将i值加1后返回步骤3;
[0029]其中,c.get(i)为获取集合c中下标为i的元素,tmp为一个变量,tmp=c.get(i)表示获取集合c中下标为i的元素,并值赋给tmp。
[0030]本专利技术的有益效果:
[0031]1、提升开发及实施效率。降低了开发工作量,开发人员无需重复编码来实现一套编码器的逻辑。
[0032]2、编码规则更灵活、可扩展性更强。通过使用自定义的规则代码,替换了原有硬编码形式(定制的程序)的编码规则,使得编码的规则更灵活、更易于调整和后期维护,且新维护的规则代码可以实时生效,无需再发布应用。
[0033]3、通用性强。不限制使用的场景,用户可根据自身情况来编写需要的规则代码。
[0034]4、所见即所得,通过支持在线预览的方式,用户可以快速创建规则。
附图说明
[0035]图1为本专利技术的基于词法分析及正则的编码器的模块框图;
[0036]图2为预编译的流程图;
[0037]图3为生成编码的流程图。
具体实施方式
[0038]下面将结合附图所给出的实施例对本专利技术做进一步的详述。
[0039]参照图1所示,本实施例的一种基于词法分析及正则的编码器,包括:
[0040]前端功能层,用于提供规则代码的管理以及编码生成;
[0041]规则模型层,与前端功能层通信,用于提供规则模型作为编码器的组成单元;规则模型定义层,与规则模型层通信,用于为规则模型的描述元数据,包含模型编码、属性、属性值,如随机数可以用代码“(Random:letter=3number=5)”表示,其中Random未模型编码,letter、number为属性,letter的属性值为3,number的属性值为5,在使用本实施例的编码器的过程中,首先通过前端功能层读取用户提交的规则代码字符流,然后用词法分析及正则匹配的方式识别出所有的语素,并使用内部单词解析器提取所有规则。执行完所有规则代码的扫描后,编码器会生成规则模型描述文件。编码器收到调用方事件后,将根据规则模型定义层所定义出的规则模型描述文件生成编码并返回。通过代码的方式定义编码规则,用户可以根据不同的使用场景,实现任意组合的编码规则并即时生效,其中本实施例中的规则模型主要分为以下几类:日期、时间、固定字符、随机数/字母、占位符、序列号。详细功能如下:
[0042]日期模型,提供以下格式:YYYY

MM

DD、YYYYMMDD、YYYY、MM、DD、MM

DD,同时支持生成当前日期、昨日、明日、上月、下月。
[0043]时间模型,提供以下格式支持:HH:MM:SS、HH、MM、SS。时间模型支持获取当前时间、一天的起始时间(00:00:00)、截止时间(23:59:59)。
[0044]固本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于词法分析及正则的编码器,其特征在于:包括:前端功能层,用于提供规则代码的管理以及编码生成;规则模型层,与前端功能层通信,用于提供规则模型作为编码器的组成单元;规则模型定义层,与规则模型层通信,用于为规则模型的描述元数据,包含模型编码、属性、属性值。2.根据权利要求1所述的基于词法分析及正则的编码器,其特征在于:所述前端功能层包括:规则代码管理模块,用于提供规则代码的新增、删除、修改、查询及预览功能;编码生成API模块,用于在用户录入编码唯一标识、占位符信息后,根据规则代码的编码规则自动生成编码结果;编码日志管理模块,用于自动记录下每一次的编码结果,形成日志记录以供用户查找和追溯使用记录。3.根据权利要求2所述的基于词法分析及正则的编码器,其特征在于:所述规则代码管理模块在接收到录入的规则代码后,将优先过滤转义的元字符,再用正则解析出规则模型列表,之后通过遍历规则模型列表,逐个匹配出组成规则模型需要的属性和参数,完成所有规则模型的预编译工作,并在之后将规则的描述文本持久化。4.根据权利要求3所述的基于词法分析及正则的编码器,其特征在于:所述规则模型的预编译具体步骤如下:步骤一,在接收到用户录入的规则代码后,并转为字符数组a[];步骤二,声明字符串b,同时声明i值等于0;步骤三,判断i是否小于字符数组a[]的长度,若小于则进行下一步,若不小于则保存规则、转义字符及下标位置后返回给用户录入成功信息后结束;步骤四,判断字符a[i]是否为转义字符,若为转义字符则缓存转义字符和下标位置后将i值加1,并返回步骤三,...

【专利技术属性】
技术研发人员:钱杨张弥
申请(专利权)人:重庆云内核智能科技有限公司
类型:发明
国别省市:

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

1