一种RPA系统中基于lambda表达式解析的流处理方法和系统技术方案

技术编号:36787707 阅读:19 留言:0更新日期:2023-03-08 22:33
本发明专利技术公开了一种RPA系统中基于lambda表达式解析的流处理方法和系统,属于机器人流程自动化领域。对输入的字符串进行预处理,去除字符串中的空格;分割字符串,将字符串分为lambda表达式、操作符和操作变量,从上下文字典中获取操作变量的值作为操作数,将操作数和表达式作为操作符的两个参数进入后续计算;对表达式进行解析,将其拆分为参数列表和方法体两个部分,然后建立一个输入为上下文字典,函数体为表达式的方法体,输出为通用类型的匿名函数;并将参数列表中的参数作为键,值设置为空,存入上下文字典;遍历操作数的中每一个元素,将元素对应的值赋值给上下文字典,依据匿名函数的返回值和操作符的规则计算出结果。名函数的返回值和操作符的规则计算出结果。名函数的返回值和操作符的规则计算出结果。

【技术实现步骤摘要】
一种RPA系统中基于lambda表达式解析的流处理方法和系统


[0001]本专利技术涉及机器人流程自动化(Robotic Process Automation,简称RPA)
,具体涉及一种RPA系统中基于lambda表达式解析的流处理方法和系统。

技术介绍

[0002]RPA系统中提供了一种循环列表和字典的指令,可以对系统中字典和列表元素进行逐个操作。但是由于存在大量不必要的与计算无关的开销,因此速度较慢。因此可以设计一种固定的表达式结构,将字典和列表抽象为流结构,通过统一的函数名对列表和字典进行操作。此外流处理还可以减少流程中的代码量,一个典型循环过程至少包括四行代码:循环开始,元素判断,判断后执行的代码,循环结束。使用流处理仅需一行即可实现循环过程中四行代码完成的工作。为了描述程序对流中元素的操作过程,因此引入的lambda表达式
[0003]为了让程序明白如何对列表和字典操作,因此lambda表达式。

技术实现思路

[0004]为了减少流程中的指令量以及增加代码的可读性,本专利技术提出了一种RPA系统中基于lambda表达式解析的流处理方法和系统。
[0005]本专利技术采用的技术方案如下:
[0006]第一个方面,本专利技术提供了一种RPA系统中基于lambda表达式解析的流处理方法,其特征在于,包含以下步骤:
[0007]S1,对输入的字符串进行预处理,去除字符串中的空格;
[0008]S2,分割字符串,将字符串分为lambda表达式、操作符和操作变量,从上下文字典中获取操作变量的值作为操作数,将操作数和lambda表达式作为操作符的两个参数进入后续计算;
[0009]S3,对lambda表达式进行解析,将其拆分为参数列表和方法体两个部分,然后建立一个输入为上下文字典,函数体为lambda表达式的方法体,输出为通用类型的匿名函数;并将参数列表中的参数作为键,值设置为空,存入上下文字典;
[0010]S4,遍历操作数的中每一个元素,将元素对应的值赋值给上下文字典,依据匿名函数的返回值和操作符的规则计算出结果。
[0011]进一步地,所述的操作变量是指表达式开始到字符“.”中间的部分,操作符是指字符“.”到字符“(”的部分;Lambda表达式是从字符“(”到与之匹配的“)”中的内容。
[0012]进一步地,所述Lambda表达式的获取方法为:设置并初始化变量sum为0,然后向后遍历字符串,遇到“(”则sum加1,记录第一次遇到的“(”;遇到“)”则sum减1,当遍历到“)”并且sum为0时,记录此时的“)”,则记录下的“(”和“)”及其两者之间的内容为Lambda表达式。
[0013]进一步地,所述的操作变量包括列表和字典两种类型。
[0014]进一步地,步骤S3中,依据“=>”符号分割lambda表达式中的参数列表和方法体,其中,“=>”符号前部分为参数列表,“=>”符号后部分为方法体。
[0015]进一步地,所述的操作符包括filter操作符、sorted操作符、map操作符、allMatch操作符、noneMatch操作符、anyMatch操作符;
[0016]Filter操作符表示遍历列表或者字典中的每一个元素,将元素输入匿名函数中,匿名函数会返回一个通用类型的值,判断匿名函数返回值是否是布尔值,若不是布尔值,则报错;若是布尔值且该值为真,则将当前元素放入结果列表或者字典中,继续遍历下一个元素;若是布尔值且该值为假,直接遍历下一个元素;
[0017]Map操作符表示遍历列表或者字典中的每一个元素,将元素输入匿名函数中,匿名函数会返回一个值,将匿名函数返回值放入结果列表或者字典中;
[0018]sorted操作符表示仅使用与列表,遍历列表中的每一个元素,将元素输入匿名函数中,匿名函数会返回一个值,将匿名函数返回值放入结果列表,最后将结果列表升序排列;
[0019]allMatch操作符表示遍历列表或者字典中的每一个元素,将元素输入匿名函数中,匿名函数会返回一个通用类型的值,判断匿名函数返回值是否是布尔值,若不是布尔值,则报错;若是布尔值且该值为真,直接遍历下一个元素,当遍历完所有元素后返回真;若是布尔值且该值为假,则返回假,遍历结束;
[0020]noneMatch操作符表示遍历列表或者字典中的每一个元素,将元素输入匿名函数中,匿名函数会返回一个通用类型的值,判断匿名函数返回值是否是布尔值,若不是布尔值,则报错;若是布尔值且该值为真,则返回假,遍历结束;若是布尔值且该值为假,直接遍历下一个元素,当遍历完所有元素后返回真。
[0021]anyMatch操作符表示遍历列表或者字典中的每一个元素,将元素输入匿名函数中,匿名函数会返回一个通用类型的值,判断匿名函数返回值是否是布尔值,若不是布尔值,则报错;若是布尔值且该值为真,则返回真,遍历结束;若是布尔值且该值为假,直接遍历下一个元素,当遍历完所有元素后返回假。
[0022]进一步地,步骤S4中,对于操作数为列表的情况,参数列表只有一个参数,将当前元素作为上下文字典中键名为参数的值;
[0023]对于操作数为字典的情况,参数列表有两个参数,则当前元素中键作为下文字典中键名为第一个参数的值,当前元素中值作为下文字典中键名为第二个参数的值。
[0024]第二个方面,本专利技术提供了一种RPA系统中基于lambda表达式解析的流处理系统,其特征在于,包含:
[0025]字符串预处理模块,其用于对输入的字符串进行预处理,去除字符串中的空格;
[0026]字符串分割模块,其用于将字符串分为lambda表达式、操作符和操作变量,从上下文字典中获取操作变量的值作为操作数,将操作数和lambda表达式作为操作符的两个参数进入后续计算;
[0027]lambda表达式解析模块,其用于对lambda表达式进行解析,将其拆分为参数列表和方法体两个部分,并将参数列表中的参数作为键,值设置为空,存入上下文字典;
[0028]匿名函数构建模块,其用于建立一个输入为上下文字典,函数体为lambda表达式的方法体,输出为通用类型的匿名函数;
[0029]计算模块,其用于遍历操作数的中每一个元素,将元素对应的值赋值给上下文字典,依据匿名函数的返回值和操作符的规则计算出结果。
中的内容。操作变量包括列表和字典两种类型。
[0046]所述Lambda表达式的获取方法为:设置并初始化变量sum为0,然后向后遍历字符串,遇到“(”则sum加1,记录第一次遇到的“(”;遇到“)”则sum减1,当遍历到“)”并且sum为0时,记录此时的“)”,则记录下的“(”和“)”及其两者之间的内容为Lambda表达式。
[0047]S03,对lambda表达式进行解析,将其拆分为参数列表和方法体两个部分,然后建立一个输入为上下文字典,函数体为lambda表达式的方法体,输出为通用本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种RPA系统中基于lambda表达式解析的流处理方法,其特征在于,包含以下步骤:S1,对输入的字符串进行预处理,去除字符串中的空格;S2,分割字符串,将字符串分为lambda表达式、操作符和操作变量,从上下文字典中获取操作变量的值作为操作数,将操作数和lambda表达式作为操作符的两个参数进入后续计算;S3,对lambda表达式进行解析,将其拆分为参数列表和方法体两个部分,然后建立一个输入为上下文字典,函数体为lambda表达式的方法体,输出为通用类型的匿名函数;并将参数列表中的参数作为键,值设置为空,存入上下文字典;S4,遍历操作数的中每一个元素,将元素对应的值赋值给上下文字典,依据匿名函数的返回值和操作符的规则计算出结果。2.根据权利要求1所述的一种RPA系统中基于lambda表达式解析的流处理方法,其特征在于,所述的操作变量是指表达式开始到字符“.”中间的部分,操作符是指字符“.”到字符“(”的部分;Lambda表达式是从字符“(”到与之匹配的“)”中的内容。3.根据权利要求2所述的一种RPA系统中流处理和lambda表达式解析方法,其特征在于,所述Lambda表达式的获取方法为:设置并初始化变量sum为0,然后向后遍历字符串,遇到“(”则sum加1,记录第一次遇到的“(”;遇到“)”则sum减1,当遍历到“)”并且sum为0时,记录此时的“)”,则记录下的“(”和“)”及其两者之间的内容为Lambda表达式。4.根据权利要求1所述的一种RPA系统中基于lambda表达式解析的流处理方法,其特征在于,所述的操作变量包括列表和字典两种类型。5.根据权利要求1所述的一种RPA系统中流处理和lambda表达式解析方法,其特征在于,步骤S3中,依据“=>”符号分割lambda表达式中的参数列表和方法体,其中,“=>”符号前部分为参数列表,“=>”符号后部分为方法体。6.根据权利要求1所述的一种RPA系统中流处理和lambda表达式解析方法,其特征在于,所述的操作符包括filter操作符、sorted操作符、map操作符、allMatch操作符、noneMatch操作符、anyMatch操作符;Filter操作符表示遍历列表或者字典中的每一个元素,将元素输入匿名函数中,匿名函数会返回一个通用类型的值,判断匿名函数返回值是否是布尔值,若不是布尔值,则报错;若是布尔值且该值为真,则将当前元素放入结果列表或者字典中,继续遍历下一个元素;若是布尔值且该值为假,直接遍历下一个元素;Map操作符表示遍历列表或者字典中的每一个元素,将元素输入匿名函数中,匿名函数会返回一个值,将匿名函数返回值放入结果列表或者字典中;sorted操作符表示仅使用与列表,遍历列表中的每一个元素,将元素输入匿名函数中,匿名函数会返回一个值,将匿名函数返回值放入结果列表,最...

【专利技术属性】
技术研发人员:叶上维
申请(专利权)人:杭州一知智能科技有限公司
类型:发明
国别省市:

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

1