CN110806877B - 编程文件结构化的方法、装置、介质及电子设备 - Google Patents

编程文件结构化的方法、装置、介质及电子设备 Download PDF

Info

Publication number
CN110806877B
CN110806877B CN201810887339.6A CN201810887339A CN110806877B CN 110806877 B CN110806877 B CN 110806877B CN 201810887339 A CN201810887339 A CN 201810887339A CN 110806877 B CN110806877 B CN 110806877B
Authority
CN
China
Prior art keywords
statement
file
value
processed
type
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.)
Active
Application number
CN201810887339.6A
Other languages
English (en)
Other versions
CN110806877A (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.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information 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 Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201810887339.6A priority Critical patent/CN110806877B/zh
Publication of CN110806877A publication Critical patent/CN110806877A/zh
Application granted granted Critical
Publication of CN110806877B publication Critical patent/CN110806877B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明实施例提供了一种编程文件结构化的方法、编程文件结构化的装置、计算机介质及电子设备,该编程文件结构化的方法包括:获取待处理文件,所述待处理文件使用第一编程语言编写;通过基于第二编程语言映射的方式解析所述待处理文件,获取对象实例;根据所述对象实例对所述待处理文件中的语句进行处理,以完成对所述待处理文件的结构化。本发明实施例的技术方案将结构化处理过的文件用作第二编程语言相关的集群任务的配置文件,集群任务可方便地通过调用对象实例的方式访问此配置文件的任一语句,从而,提高了访问灵活性。同时,提高了所述集群任务的执行效率。

Description

编程文件结构化的方法、装置、介质及电子设备
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种编程文件结构化的方法、装置、介质及电子设备。
背景技术
随着计算机技术的发展,集群上的任务的数量越来越多,同事对任务复杂度和对开发部署的要求也越来越高,从而,对集群任务的开发和维护工作将越来越重。而具有可配置式、组件化特点的集群任务是解决上述问题的关键因素。
现有技术中,采用标记语言为具有可配置式、组件化特点的集群任务编写配置文件。
然而,现有技术中集群任务对上述配置文件的访问灵活性差。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本发明实施例的目的在于提供一种编程文件结构化的方法、装置、介质及电子设备,进而至少在一定程度上克服现有技术中集群任务对上述配置文件的访问灵活性差的问题。
本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。
根据本发明实施例的第一方面,提供了一种编程文件结构化的方法,包括:获取待处理文件,所述待处理文件使用第一编程语言编写;通过基于第二编程语言映射的方式解析所述待处理文件,获取对象实例;根据所述对象实例对所述待处理文件中的语句进行处理,以完成对所述待处理文件的结构化。
在本发明的一些是实例中,通过基于第二编程语言映射的方式解析所述待处理文件,获取对象实例,包括:以遍历方式读取所述待处理文件的语句,通过基于第二编程语言映射的方式解析读取的语句,以获取对象实例。
在本发明的一些是实例中,取所述待处理文件的语句,根据所述语句的类型做出映射,包括:对于所述待处理文件中类型为字典的第一语句,进行以下第一递归过程:基于所述第二编程语言创建对象实例;判断所述第一语句是否为嵌套结构;若所述第一语句不是嵌套结构,则将所述第一语句的值反射至所述对象实例;若所述第一语句是嵌套结构,则进一步根据所述第一语句的值的类型对所述第一语句的值进行处理。
在本发明的一些是实例中,根据所述第一语句的值的类型对所述第一语句的值进行处理,包括:若所述第一语句的值的类型为字典,则进行所述第一递归过程。
在本发明的一些是实例中,读取所述待处理文件的语句,根据所述语句的类型做出映射,包括:对于所述待处理文件中类型为列表的第二语句,进行以下第二递归过程:判断所述第二语句是否为嵌套结构;若所述第二语句不是嵌套结构,则将所述第二语句的值添加至预设置的数组;若所述第二语句是嵌套结构,则进一步根据所述第二语句的值的类型对所述第二语句的值进行处理。
在本发明的一些是实例中,根据所述第二语句的值的类型对所述第二语句的值进行处理,包括:若所述第二语句的值的类型为列表,则进行所述第二递归过程;若所述第二语句的值的类型为字典,则进行所述第一递归过程。
在本发明的一些是实例中,本方法还包括:若所述第一语句的值的类型为列表,则进行所述第二递归过程。
在本发明的一些是实例中,本方法还包括:将所述数组中的值放射至所述对象实例。
在本发明的一些是实例中,根据所述对象实例对所述待处理文件的语句进行处理,以完成对所述待处理文件结构化,包括:以遍历方式读取所述待处理文件的语句,基于所述语句的类型,通过所述对象实例处理读取的语句,以完成对所述待处理文件结构化。
在本发明的一些是实例中,基于所述语句的类型,通过所述对象实例处理读取的语句,包括:对于所述待处理文件中类型为字典的第三语句,进行以下第三递归过程:判断所述第三语句是否为嵌套结构;若所述第三语句不是嵌套结构,则将所述第三语句根据所述对象实例进行替换计算;若所述第三语句是嵌套结构,则进一步根据所述第三语句的值的类型对所述第三语句的值进行计算。
在本发明的一些是实例中,根据所述第三语句的值的类型对所述第三语句的值进行计算,包括:若所述第三语句的值的类型为字典,则进行所述第三递归过程。
在本发明的一些是实例中,基于所述语句的类型,通过所述对象实例处理读取的语句,包括:若第四语句为列表,则进行以下第四递归过程:判断所述第四语句是否为嵌套结构;若所述第四语句不是嵌套结构,则将所述第四语句的值根据所述对象实例进行替换计算;若所述第四语句是嵌套结构,则进一步根据所述第四语句的值的类型对所述第四语句的值进行处理。
在本发明的一些是实例中,根据所述第四语句的值的类型对所述第四语句的值进行处理,包括:若所述第四语句的值的类型为列表,则进行所述第四递归过程;若所述第四语句的值的类型为字典,则进行所述第三递归过程。
在本发明的一些是实例中,根据所述第三语句的值的类型对所述第三语句的值进行计算,包括:若所述第三语句的值的类型为列表,则进行所述第四递归过程。
在本发明的一些是实例中,在将所述第一语句的值反射至所述对象实例之后,还包括:统计所述第一语句的键至元数据列表中;根据所述对象实例对所述待处理文件的语句进行处理,以完成对所述待处理文件结构化,包括:获取所述元数据列表中每个键对应的值为目标值,并进行以下第五递归过程:判断当前目标值是否属于所述元数据列表;若所述目标值不属于所述元数据列表,则判断当前目标值的类型是否为列表;若所述目标值的类型不是列表,则根据所述对象实例替换当前目标值。
在本发明的一些是实例中,在判断当前目标值的类型是否为列表之后,还包括:若所述目标值的类型是列表,则判断当前目标值是否为纯量;若所述目标值是纯量,则根据所述对象实例替换当前目标值。
在本发明的一些是实例中,在判断所述目标值的类型是否为纯量之后,还包括:若所述目标值不是纯量,则所述目标值为一列表嵌套结构,获取所述列表嵌套结构的每个值为目标值;进行所述第五递归过程。
在本发明的一些是实例中,在判断当前目标值是否属于所述元数据列表之后,还包括:若所述目标值属于所述元数据列表,则所述目标值为一字典嵌套结构的键,获取所述键对应的值为目标值;进行所述第五递归过程。
在本发明的一些是实例中,所述第一编程语言为yaml,所述第二编程语言为Python。
在本发明的一些是实例中,根据所述对象实例计算所述待处理文件之后获得的处理后文件用于Pyspark任务的配置文件。
根据本发明实施例的第二方面,提供了一种编程文件结构化的装置,包括:获取模块,用于获取待处理文件,所述待处理文件使用第一编程语言编写;解析模块,用于通过基于第二编程语言映射的方式解析所述待处理文件,获取对象实例;处理模块,用于根据所述对象实例对所述待处理文件的语句进行处理,以完成对所述待处理文件结构化。
根据本发明实施例的第三方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中第一方面所述的编程文件结构化的方法。
根据本发明实施例的第四方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中第一方面所述的编程文件结构化的方法。
本发明实施例提供的技术方案可以包括以下有益效果:
在本发明的一些实施例所提供的技术方案中,通过第二编程语言映射的方式解析第一编程语言编写的待处理文件,从而获取基于第二编程语言的对象实例,进一步根据对象实例对所述待处理文件的语句进行处理,进而将处理过的文件用作第二编程语言相关的集群任务的配置文件,集群任务可方便地通过调用对象实例的方式访问此配置文件的任一语句,从而,提高了访问灵活性。同时,相比于现有技术中直接使用第一编程语言编写的文件用作配置文件,集群任务需通过逐级方式对其配置文件进行访问,而本发明实施例中,集群任务可方便地通过调用对象实例的方式访问此配置文件的任一语句,从而提高了所述集群任务的执行效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示出了根据本发明的实施例的一种编程文件结构化的方法的流程示意图;
图2示出了根据本发明的一实施例的一种解析待处理文件的方法的流程示意图;
图3示出了根据本发明的另一实施例的一种解析待处理文件的方法的流程示意图;
图4示出了根据本发明的一实施例的一种计算待处理文件的方法的流程示意图;
图5示出了根据本发明的另一实施例的一种计算待处理文件的方法的流程示意图;
图6示出了根据本发明的另一实施例的一种编程文件结构化的方法的流程示意图;
图7示出了根据本发明的实施例的一种编程文件结构化的装置的结构示意图;
图8示出了适于用来实现本发明实施例的电子设备的计算机系统的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
图1示出了根据本发明的实施例的一种编程文件结构化的方法的流程示意图。参考图1,包括以下步骤:
步骤S101,获取待处理文件,所述待处理文件使用第一编程语言编写;
步骤S102,通过基于第二编程语言映射的方式解析所述待处理文件,获取对象实例;
步骤S103,根据所述对象实例对所述待处理文件的语句进行处理,以完成对所述待处理文件结构化。
在图1所示实施例所提供的技术方案中,通过第二编程语言映射的方式解析第一编程语言编写的待处理文件,从而获取基于第二编程语言的对象实例,进一步根据对象实例对所述待处理文件的语句进行处理,进而将处理过的文件用作第二编程语言相关的集群任务的配置文件,集群任务可方便地通过调用对象实例的方式访问此配置文件的任一语句,从而,提高了访问灵活性。同时,相比于现有技术中直接使用第一编程语言编写的文件用作配置文件,集群任务需通过逐级方式对其配置文件进行访问,而本发明实施例中,集群任务可方便地通过调用对象实例的方式访问此配置文件的任一语句,从而提高了所述集群任务的执行效率。
以下对图1的各个步骤的具体实现方式进行详细阐述:
在实例性的实施例中,在步骤S101中,获取使用第一编程语言编写的待处理文件。所述第一编程语言为yaml,所述第二编程语言为Python,而经过所述结构化处理后的文件用于Pyspark任务的配置文件。
示例性的,通过yaml编写的文件包括如下语句:
其中,yaml语句的类型分为字典、列表和嵌套结构,所述嵌套结构包括字典嵌套结构(例如嵌套体为:列表/字典),和列表嵌套结构(例如嵌套体为:列表/字典)。
可以通过以上yaml文件解释yaml以及的类型。例如:上述“name:Tom Smith”为字典,具体的,“name”为字典的键,“Tom Smith”为字典的值;以“-”开头的两个“-name”为列表,此列表的值均为“name”;而
“spouse:
name:Jane Smith
age:25”
为字典嵌套结构(其键为“spouse”),嵌套体为列表,同时嵌套体中的的每个值为字典。
在实例性的实施例中,若直接访问上述yaml文件中的语句为逐级方式,例如:“conf['name']”可访问文件中的“name”键,“conf['children'][0]”可访问“Tom Smith”的第一个子女。可见,当yaml文件语句复杂时,需自上而下逐级访问,而无法自由访问,因而对yaml文件中语句的访问灵活性差。
在实例性的实施例中,在步骤S102中,通过基于第二编程语言映射的方式解析所述待处理文件,获取对象实例。示例性的,以遍历方式读取所述待处理文件的语句,通过基于第二编程语言映射的方式解析读取的语句,以获取对象实例。
图2示出了根据本发明的一实施例的一种解析待处理文件的方法的流程示意图,参考图2,对步骤S102的遍历所述待处理文件的过程中,当前语句为字典时,对当前语句的处理过程。包括以下步骤:
步骤S201,对于所述待处理文件中类型为字典的第一语句。进行以下第一递归过程:
步骤S202,基于所述第二编程语言创建对象实例;
步骤S203,判断所述第一语句是否为嵌套结构;
若所述第一语句不是嵌套结构,则执行步骤S204,将所述第一语句的值反射至所述对象实例;
若所述第一语句是嵌套结构,则执行步骤S205,进一步根据所述第一语句的值的类型对所述第一语句的值进行处理。
在实例性的实施例中,根据字典的键创建符合第二编程语言语法的对象实例,并进一步根据此字典的值是否可以映射至此对象实例。在实例性的实施例中,在后创建的对象实例在递归过程中,须判断是否可以映射到在先创建的对象实例。
可见,对于待处理文件中的类型为字典的语句,首先,基于所述第二编程语言创建对象实例,并判断此字典是否为嵌套结构。包括以下两种情况:第一种情况,此字典的值为纯量,即此字典不是嵌套结构,则将此字典的值映射至上述创建的对象实例;第二种情况,此字典的值不是纯量,即此字典是嵌套结构,则须进一步根据此字典的值的类型对此字典的值进行处理。
示例性的,此字典的值的类型也包括两种情况:第一种情况,若此字典的值的类型为字典,则进行步骤S202-步骤S205所述第一递归过程;第二种情况,若此字典的值的类型为列表,则进行以下图3所涉及的第二递归过程。
其中,所述纯量是指不可再划分的量,在yaml中,纯量是最基本的、不可再分的值,例如可以是:字符串、布尔值、整数、浮点数、Null、时间以及日期等。
图3示出了根据本发明的另一实施例的一种解析待处理文件的方法的流程示意图,参考图3,对步骤S102的遍历所述待处理文件的过程中,当前语句为列表时,对当前语句的处理过程。包括以下步骤:
步骤S301,对于所述待处理文件中类型为列表的第二语句,进行以下第二递归过程:
步骤S302,判断所述第二语句是否为嵌套结构;
若所述第二语句是嵌套结构,则执行步骤S303,进一步根据所述第二语句的值的类型对所述第二语句的值进行处理;
若所述第二语句不是嵌套结构,则执行步骤S304,将所述第二语句的值添加至预设置的数组;以及步骤S305,将所述数组中的值放射至所述对象实例。
可见,对于待处理文件中的类型为列表的语句,首先,判断此列表是否为嵌套结构。包括以下两种情况:第一种情况,此列表的值为纯量,即此列表不是嵌套结构,则将此列表的值的值添加至预设置的数组;并将所述数组中的值放射至已经建立的对象实例;第二种情况,此列表的值不是纯量,即此列表是嵌套结构,则须进一步根据此列表的值的类型对此字典的值进行处理。
示例性的,此列表的值的类型也包括两种情况:第一种情况,若此列表的值的类型为列表,则进行步骤S302-步骤S305所述第二递归过程;第二种情况,若此列表的值的类型为字典,则进行以上图2所涉及的第一递归过程。
根据图2、图3分别提供了语句类型为字典、列表时,解析待处理文件的实施例。图2、图3分别提供的解析待处理文件的实施例中,均考虑看语句是否嵌套结构以及语句的值的类型的各种情况,为步骤S103中计算所述待处理文件提供了对象实例。
需要说明的是,以遍历地方式读取yaml编写的、用作Pyspark任务的配置文件(即上述待处理文件)时,首先出现的语句类型一般是字典。
在实例性的实施例中,在步骤S103中,根据所述对象实例对所述待处理文件的语句进行处理,以完成对所述待处理文件结构化。示例性的,以遍历方式读取所述待处理文件的语句,基于所述语句的类型,通过所述对象实例处理读取的语句,以完成对所述待处理文件结构化。
图4示出了根据本发明的一实施例的一种计算待处理文件的方法的流程示意图,参考图4,对步骤S103的遍历所述待处理文件的过程中,当前语句为字典时,对当前语句的处理过程。包括以下步骤:
步骤S401,对于所述待处理文件中类型为字典的第三语句,进行以下第三递归过程:
步骤S402,判断所述第三语句是否为嵌套结构;
若所述第三语句不是嵌套结构,则执行步骤S403,将所述第三语句根据所述对象实例进行替换计算;
若所述第三语句是嵌套结构,则执行步骤S404,进一步根据所述第三语句的值的类型对所述第三语句的值进行计算。
可见,对于待处理文件中的类型为字典的语句,首先,判断此字典是否为嵌套结构。包括以下两种情况:第一种情况,此字典的值为纯量,即此字典不是嵌套结构,则将此字典根据步骤S102中创建的对象实例进行替换计算;一种可实现的实施方式为:获取此字典的键,进一步查找于此键对应的对象实例,最后,将查找到的对象实例替换此字典。第二种情况,此字典的值不是纯量,即此字典是嵌套结构,则须进一步根据此字典的值的类型对此字典的值进行处理。
示例性的,此字典的值的类型也包括两种情况:第一种情况,若此字典的值的类型为字典,则进行步骤S402-步骤S404所述第三递归过程;第二种情况,若此字典的值的类型为列表,则进行以下图5所涉及的第四递归过程。
图5示出了根据本发明的另一实施例的一种计算待处理文件的方法的流程示意图,参考图5,对步骤S103的遍历所述待处理文件的过程中,当前语句为列表时,对当前语句的处理过程。包括以下步骤:
步骤S501,对于所述待处理文件中类型为列表的第四语句,进行以下第四递归过程:
步骤S502,判断所述第四语句是否为嵌套结构;
若所述第二语句不是嵌套结构,则执行步骤S503,将所述第四语句的值根据所述对象实例进行替换计算;
若所述第四语句是嵌套结构,则执行步骤S504,进一步根据所述第四语句的值的类型对所述第四语句的值进行处理。
可见,对于待处理文件中的类型为列表的语句,首先,判断此列表是否为嵌套结构。包括以下两种情况:第一种情况,此列表的值为纯量,即此列表不是嵌套结构,则将此列表的值的值添加至预设置的数组;并将所述数组中的值放射至已经建立的对象实例;第二种情况,此列表的值不是纯量,即此列表是嵌套结构,则须进一步根据此列表的值的类型对此字典的值进行处理。
示例性的,此列表的值的类型也包括两种情况:第一种情况,若此列表的值的类型为列表,则进行步骤S502-步骤S504所述第四递归过程;第二种情况,若此列表的值的类型为字典,则进行以上图4所涉及的第三递归过程。
根据图4、图5分别提供了,语句类型为字典、列表时,计算待处理文件的实施例。图4、图5分别提供的计算待处理文件的实施例中,均考虑看语句是否嵌套结构以及语句的值的类型的各种情况,从而根据步骤S102中提供的对象实例计算所述待处理文件。
图6示出了根据本发明的另一实施例的一种编程文件结构化的方法的流程示意图。参考图6,包括步骤S601-步骤S613。
在实例性的实施例中,步骤S601-步骤S605的具体实施方式,与图2中的步骤S201-步骤S205的具体实施方式相同,在此不再赘述。
在实例性的实施例中,执行步骤S604之后,本实施例提供的方法,还包括:在步骤S606中,统计所述第一语句的键至元数据列表中。即,将所述待处理文件中类型为字典的语句的键均收集至元数据列表中。
进而,步骤S103根据所述对象实例对所述待处理文件的语句进行处理,以完成对所述待处理文件结构化的具体实施方法,包括:
在步骤S607中,获取所述元数据列表中每个键对应的值为目标值,并进入以下第五递归过程:
在步骤S608中,判断当前目标值是否属于所述元数据列表;
若当前目标值不属于所述元数据列表,则基于当前目标值的类型,根据所述对象实例对当前目标值进行处理,以完成对所述待处理文件结构化。
在示例性的实施例中,上述基于当前目标值的类型,根据所述对象实例对当前目标值进行处理的具体实现方式可以为:
在步骤S610中,判断当前目标值的类型是否为列表;
若当前目标值的类型不是列表,此时即可确定即为字典且字典的值为纯量,则在步骤S612中,根据所述对象实例替换当前目标值;
若当前目标值的类型是列表,则在步骤S611中,判断当前目标值是否为纯量;
若当前目标值是纯量,则在步骤S612中,根据所述对象实例替换当前目标值;
若当前目标值不是纯量,则说明当前目标值为一列表嵌套结构,在步骤S613中,获取所述列表嵌套结构的每个值为目标值;并执行步骤S608,即进行所述第五递归过程。
在示例性的实施例中,上述基于当前目标值的类型,根据所述对象实例对当前目标值进行处理的具体实现方式,还包括:
若当前目标值属于所述元数据列表,则当前目标值为一字典嵌套结构的键,在步骤S609中获取所述键对应的值为目标值;并执行步骤S608,即进行所述第五递归过程。
在图6所示实施例所提供的技术方案中,在基于第二编程语言映射的方式解析所述待处理文件,获取对象实例的过程中,将所述待处理文件中类型为字典的语句的键均收集至元数据列表中进行记录。进而在根据所述对象实例对所述待处理文件中的语句进行处理过程中,无需对待处理文件中的每个语句进行图3或图4提供的语句类型的判断,而是根据元数据列表进行排查。从而,提高了对待处理文件进行结构化处理的效率。
以下介绍本发明的装置实施例,可以用于执行本发明上述的编程文件结构化的方法。
图7示出了根据本发明的实施例的一种编程文件结构化的装置的结构示意图。参考图7,编程文件结构化的装置700,包括:获取模块701、解析模块702以及处理模块703。
其中,获取模块701用于获取待处理文件,所述待处理文件使用第一编程语言编写;解析模块702用于通过基于第二编程语言映射的方式解析所述待处理文件,获取对象实例;处理模块703用于根据所述对象实例对所述待处理文件的语句进行处理,以完成对所述待处理文件结构化。
在示例性的实施例中,解析模块702具体以遍历方式读取所述待处理文件的语句,通过基于第二编程语言映射的方式解析读取的语句,以获取对象实例。
在示例性的实施例中,解析模块702包括:第一递归单元。
第一递归单元用于:对于所述待处理文件中类型为字典的第一语句,进行以下第一递归过程:基于所述第二编程语言创建对象实例;判断所述第一语句是否为嵌套结构;若所述第一语句不是嵌套结构,则将所述第一语句的值反射至所述对象实例;若所述第一语句是嵌套结构,则进一步根据所述第一语句的值的类型对所述第一语句的值进行处理。
在示例性的实施例中,若所述第一语句的值的类型为字典,则第一递归单元进行所述第一递归过程。
在示例性的实施例中,解析模块702包括:第二递归单元。
第二递归单元用于:对于所述待处理文件中类型为列表的第二语句,进行以下第二递归过程:判断所述第二语句是否为嵌套结构;若所述第二语句不是嵌套结构,则将所述第二语句的值添加至预设置的数组;若所述第二语句是嵌套结构,则进一步根据所述第二语句的值的类型对所述第二语句的值进行处理。
在示例性的实施例中,若所述第二语句的值的类型为列表,则第二递归单元进行所述第二递归过程;若所述第二语句的值的类型为字典,则第二递归单元进行所述第一递归过程。
在示例性的实施例中,若所述第一语句的值的类型为列表,则第一递归单元进行所述第二递归过程。
在示例性的实施例中,第一递归单元还用于:将所述数组中的值放射至所述对象实例。
在示例性的实施例中,处理模块703具体以遍历方式读取所述待处理文件的语句,基于所述语句的类型,通过所述对象实例处理读取的语句,以完成对所述待处理文件结构化。
在示例性的实施例中,处理模块703,包括:第三递归单元;
第三递归单元用于:对于所述待处理文件中类型为字典的第三语句,进行以下第三递归过程:判断所述第三语句是否为嵌套结构;若所述第三语句不是嵌套结构,则将所述第三语句根据所述对象实例进行替换计算;若所述第三语句是嵌套结构,则进一步根据所述第三语句的值的类型对所述第三语句的值进行计算。
在示例性的实施例中,若所述第三语句的值的类型为字典,则第三递归单元进行所述第三递归过程。
在示例性的实施例中,处理模块703,包括:第四递归单元;
第四递归单元用于:对于所述待处理文件中类型为列表的第四语句,进行以下第四递归过程:判断所述第四语句是否为嵌套结构;若所述第四语句不是嵌套结构,则将所述第四语句的值根据所述对象实例进行替换计算;若所述第四语句是嵌套结构,则进一步根据所述第四语句的值的类型对所述第四语句的值进行处理。
在示例性的实施例中,若所述第四语句的值的类型为列表,则第四递归单元进行所述第四递归过程;若所述第四语句的值的类型为字典,则第四递归单元进行所述第三递归过程。
在示例性的实施例中,若所述第三语句的值的类型为列表,则第三递归单元进行所述第四递归过程。
在示例性的实施例中,解析模块702,还包括:统计单元,用于统计所述第一语句的键至元数据列表中。
在示例性的实施例中,在示例性的实施例中,处理模块703,包括:第五递归单元。
第五递归单元用于:获取所述元数据列表中每个键对应的值为目标值,并进入以下第五递归过程:判断当前目标值是否属于所述元数据列表;若当前目标值不属于所述元数据列表,则基于当前目标值的类型,根据所述对象实例对当前目标值进行处理,以完成对所述待处理文件结构化。
在示例性的实施例中,第五递归单元具体用于基于当前目标值的类型,根据所述对象实例对所述目标值进行处理,包括:判断当前目标值的类型是否为列表;若当前目标值的类型不是列表,则根据所述对象实例替换当前目标值。
在示例性的实施例中,第五递归单元具体用于若当前目标值的类型是列表,则判断当前目标值是否为纯量;若所述目标值是纯量,则根据所述对象实例替换当前目标值。
在示例性的实施例中,第五递归单元具体用于若所述目标值不是纯量,则当前目标值为一列表嵌套结构,获取所述列表嵌套结构的每个值为目标值;进行所述第五递归过程。
在示例性的实施例中,第五递归单元具体用于若当前目标值属于所述元数据列表,则当前目标值为一字典嵌套结构的键,获取所述键对应的值为目标值;进行所述第五递归过程(S608)。
在示例性的实施例中,所述第一编程语言为yaml,所述第二编程语言为Python。
在示例性的实施例中,根据所述对象实例计算所述待处理文件之后获得的处理后文件用于Pyspark任务的配置文件。
由于本发明的示例实施例的编程文件结构化的装置的各个功能模块与上述编程文件结构化的方法的示例实施例的步骤对应,因此对于本发明装置实施例中未披露的细节,请参照本发明上述的编程文件结构化的方法的实施例。
下面参考图8,其示出了适于用来实现本发明实施例的电子设备的计算机系统800的结构示意图。图8示出的电子设备的计算机系统800仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,计算机系统800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有系统操作所需的各种程序和数据。CPU801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本申请的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如上述实施例中所述的编程文件结构化的方法。
例如,所述的电子设备可以实现如图1中所示的:步骤S101,获取待处理文件,所述待处理文件使用第一编程语言编写;步骤S102,通过基于第二编程语言映射的方式解析所述待处理文件,获取对象实例;步骤S103,根据所述对象实例对所述待处理文件中的语句进行处理,以完成对所述待处理文件的结构化。
又如,所述的电子设备可以实现如图6所示的各个步骤。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本发明实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

Claims (21)

1.一种编程文件结构化的方法,其特征在于,包括:
获取待处理文件,所述待处理文件使用第一编程语言编写;
通过基于第二编程语言映射的方式解析所述待处理文件,获取对象实例;
根据所述对象实例对所述待处理文件中的语句进行处理,以完成对所述待处理文件的结构化;
其中,通过基于第二编程语言映射的方式解析所述待处理文件,获取对象实例,包括:
以遍历方式读取所述待处理文件的语句,通过基于第二编程语言映射的方式解析读取的语句,以获取对象实例;
其中,通过基于第二编程语言映射的方式解析读取的语句,包括:
对于所述待处理文件中类型为字典的第一语句,进行以下第一递归过程:
基于所述第二编程语言创建对象实例;
判断所述第一语句是否为嵌套结构;
若所述第一语句不是嵌套结构,则将所述第一语句的值反射至所述对象实例;
若所述第一语句是嵌套结构,则进一步根据所述第一语句的值的类型对所述第一语句的值进行处理,
其中,将所述第一语句的值反射至所述对象实例之后,还包括:
将所述待处理文件中类型为字典的语句的键均收集至元数据列表中;
其中,根据所述对象实例对所述待处理文件的语句进行处理,以完成对所述待处理文件结构化,包括:
获取所述元数据列表中每个键对应的值为目标值,并进入以下第五递归过程;
将处理过的待处理文件作为第二编程语言的集群任务的配置文件;所述集群任务通过调用对象实例的方式访问配置文件的任一语句,其中,所述第一编程语言yaml,所述第二编程语言为Python。
2.根据权利要求1所述的方法,其特征在于,根据所述第一语句的值的类型对所述第一语句的值进行处理,包括:
若所述第一语句的值的类型为字典,则进行所述第一递归过程。
3.根据权利要求2所述的方法,其特征在于,通过基于第二编程语言映射的方式解析所述待处理文件,包括:
对于所述待处理文件中类型为列表的第二语句,进行以下第二递归过程:
判断所述第二语句是否为嵌套结构;
若所述第二语句不是嵌套结构,则将所述第二语句的值添加至预设置的数组;
若所述第二语句是嵌套结构,则进一步根据所述第二语句的值的类型对所述第二语句的值进行处理。
4.根据权利要求3所述的方法,其特征在于,根据所述第二语句的值的类型对所述第二语句的值进行处理,包括:
若所述第二语句的值的类型为列表,则进行所述第二递归过程;
若所述第二语句的值的类型为字典,则进行所述第一递归过程。
5.根据权利要求3所述的方法,其特征在于,还包括:
若所述第一语句的值的类型为列表,则进行所述第二递归过程。
6.根据权利要求3所述的方法,其特征在于,还包括:
将所述数组中的值放射至所述对象实例。
7.根据权利要求1所述的方法,其特征在于,根据所述对象实例对所述待处理文件的语句进行处理,以完成对所述待处理文件结构化,包括:
以遍历方式读取所述待处理文件的语句,基于所述语句的类型,通过所述对象实例处理读取的语句,以完成对所述待处理文件结构化。
8.根据权利要求7所述的方法,其特征在于,基于所述语句的类型,通过所述对象实例处理读取的语句,包括:
对于所述待处理文件中类型为字典的第三语句,进行以下第三递归过程:
判断所述第三语句是否为嵌套结构;
若所述第三语句不是嵌套结构,则将所述第三语句根据所述对象实例进行替换计算;
若所述第三语句是嵌套结构,则进一步根据所述第三语句的值的类型对所述第三语句的值进行计算。
9.根据权利要求8所述的方法,其特征在于,根据所述第三语句的值的类型对所述第三语句的值进行计算,包括:
若所述第三语句的值的类型为字典,则进行所述第三递归过程。
10.根据权利要求9所述的方法,其特征在于,基于所述语句的类型,通过所述对象实例处理读取的语句,包括:
对于所述待处理文件中类型为列表的第四语句,进行以下第四递归过程:
判断所述第四语句是否为嵌套结构;
若所述第四语句不是嵌套结构,则将所述第四语句的值根据所述对象实例进行替换计算;
若所述第四语句是嵌套结构,则进一步根据所述第四语句的值的类型对所述第四语句的值进行处理。
11.根据权利要求10所述的方法,其特征在于,根据所述第四语句的值的类型对所述第四语句的值进行处理,包括:
若所述第四语句的值的类型为列表,则进行所述第四递归过程;
若所述第四语句的值的类型为字典,则进行所述第三递归过程。
12.根据权利要求10所述的方法,其特征在于,根据所述第三语句的值的类型对所述第三语句的值进行计算,包括:
若所述第三语句的值的类型为列表,则进行所述第四递归过程。
13.根据权利要求1所述的方法,其特征在于,所述获取所述元数据列表中每个键对应的值为目标值,并进入以下第五递归过程,包括:判断当前目标值是否属于所述元数据列表;
若当前目标值不属于所述元数据列表,则基于当前目标值的类型,根据所述对象实例对当前目标值进行处理,以完成对所述待处理文件结构化。
14.根据权利要求13所述的方法,其特征在于,基于当前目标值的类型,根据所述对象实例对所述目标值进行处理,包括:
判断当前目标值的类型是否为列表;
若当前目标值的类型不是列表,则根据所述对象实例替换当前目标值。
15.根据权利要求14所述的方法,其特征在于,在判断当前目标值的类型是否为列表之后,还包括:
若当前目标值的类型是列表,则判断当前目标值是否为纯量;
若所述目标值是纯量,则根据所述对象实例替换当前目标值。
16.根据权利要求15所述的方法,其特征在于,在判断当前目标值是否为纯量之后,还包括:
若所述目标值不是纯量,则当前目标值为一列表嵌套结构,获取所述列表嵌套结构的每个值为目标值;
进行所述第五递归过程。
17.根据权利要求13所述的方法,其特征在于,在判断当前目标值是否属于所述元数据列表之后,还包括:
若当前目标值属于所述元数据列表,则当前目标值为一字典嵌套结构的键,获取所述键对应的值为目标值;
进行所述第五递归过程。
18.根据权利要求1所述的方法,其特征在于,根据所述对象实例计算所述待处理文件之后获得的处理后文件用于Pyspark任务的配置文件。
19.一种编程文件结构化的装置,其特征在于,包括:
获取模块,用于获取待处理文件,所述待处理文件使用第一编程语言编写;
解析模块,用于通过基于第二编程语言映射的方式解析所述待处理文件,获取对象实例;
处理模块,用于根据所述对象实例对所述待处理文件的语句进行处理,以完成对所述待处理文件结构化;
所述解析模块,还用于以遍历方式读取所述待处理文件的语句,通过基于第二编程语言映射的方式解析读取的语句,以获取对象实例;
所述解析模块中的第一递归单元,用于对于所述待处理文件中类型为字典的第一语句,进行以下第一递归过程:基于所述第二编程语言创建对象实例;判断所述第一语句是否为嵌套结构;若所述第一语句不是嵌套结构,则将所述第一语句的值反射至所述对象实例;若所述第一语句是嵌套结构,则进一步根据所述第一语句的值的类型对所述第一语句的值进行处理,获取对象实例;
所述解析模块中的统计单元,用于将所述待处理文件中类型为字典的语句的键均收集至元数据列表中;
所述解析模块中的第五递归单元,用于获取所述元数据列表中每个键对应的值为目标值,并进入以下第五递归过程;
所述处理模块,还用于将处理过的待处理文件作为第二编程语言的集群任务的配置文件;所述集群任务通过调用对象实例的方式访问配置文件的任一语句,其中,所述第一编程语言yaml,所述第二编程语言为Python。
20.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至18中任一项所述的编程文件结构化的方法。
21.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至18中任一项所述的编程文件结构化的方法。
CN201810887339.6A 2018-08-06 2018-08-06 编程文件结构化的方法、装置、介质及电子设备 Active CN110806877B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810887339.6A CN110806877B (zh) 2018-08-06 2018-08-06 编程文件结构化的方法、装置、介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810887339.6A CN110806877B (zh) 2018-08-06 2018-08-06 编程文件结构化的方法、装置、介质及电子设备

Publications (2)

Publication Number Publication Date
CN110806877A CN110806877A (zh) 2020-02-18
CN110806877B true CN110806877B (zh) 2024-04-16

Family

ID=69487120

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810887339.6A Active CN110806877B (zh) 2018-08-06 2018-08-06 编程文件结构化的方法、装置、介质及电子设备

Country Status (1)

Country Link
CN (1) CN110806877B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101135891A (zh) * 2006-09-01 2008-03-05 费舍-柔斯芒特系统股份有限公司 图形编程语言对象编辑及报告工具
CN101208660A (zh) * 2005-06-27 2008-06-25 奎朴兹有限公司 代码转换
CN104267935A (zh) * 2014-09-11 2015-01-07 联动优势电子商务有限公司 代码转换方法与装置
CN105793818A (zh) * 2013-12-06 2016-07-20 起元科技有限公司 源代码翻译

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101208660A (zh) * 2005-06-27 2008-06-25 奎朴兹有限公司 代码转换
CN101135891A (zh) * 2006-09-01 2008-03-05 费舍-柔斯芒特系统股份有限公司 图形编程语言对象编辑及报告工具
CN105793818A (zh) * 2013-12-06 2016-07-20 起元科技有限公司 源代码翻译
CN104267935A (zh) * 2014-09-11 2015-01-07 联动优势电子商务有限公司 代码转换方法与装置

Also Published As

Publication number Publication date
CN110806877A (zh) 2020-02-18

Similar Documents

Publication Publication Date Title
US10296307B2 (en) Method and system for template extraction based on source code similarity
CN109871311B (zh) 一种推荐测试用例的方法和装置
CN110941964B (zh) 双语语料筛选方法、装置及存储介质
CN114424257A (zh) 使用机器学习对表格数据进行自动描绘和提取
CN110688544A (zh) 一种查询数据库的方法、设备及存储介质
CN113419789A (zh) 数据模型脚本的生成方法和装置
CN110688111A (zh) 业务流程的配置方法、装置、服务器和存储介质
CN115168398A (zh) 数据查询方法、装置、电子设备及存储介质
CN116244387A (zh) 实体关系构建方法、装置、电子设备及存储介质
CN109815241B (zh) 数据查询方法、装置、设备和存储介质
CN111143390A (zh) 更新元数据的方法及装置
CN113110843A (zh) 合约生成模型训练方法、合约生成方法及电子设备
CN111124541B (zh) 一种配置文件的生成方法、装置、设备及介质
CN110806877B (zh) 编程文件结构化的方法、装置、介质及电子设备
CN114328700B (zh) 医疗数据etl任务中的数据核查方法及装置
CN111401934A (zh) 分布式广告统计方法以及装置
CN114547086B (zh) 数据处理方法、装置、设备及计算机可读存储介质
CN113741864B (zh) 基于自然语言处理的语义化服务接口自动设计方法与系统
CN113138767B (zh) 代码语言转换方法、装置、电子设备及存储介质
CN115643094A (zh) 一种威胁情报融合方法、装置、电子设备及存储介质
US11442650B2 (en) Generating predicted usage of storage capacity
CN114020774A (zh) 多轮问答语句的处理方法、装置、设备及存储介质
CN110471708B (zh) 基于可重用组件的配置项获取的方法及装置
CN113609128A (zh) 生成数据库实体类的方法、装置、终端设备及存储介质
CN112947941A (zh) 一种添加异常处理代码的方法和装置

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