CN111124479A - 配置文件的解析方法、***及电子设备 - Google Patents
配置文件的解析方法、***及电子设备 Download PDFInfo
- Publication number
- CN111124479A CN111124479A CN201911316226.1A CN201911316226A CN111124479A CN 111124479 A CN111124479 A CN 111124479A CN 201911316226 A CN201911316226 A CN 201911316226A CN 111124479 A CN111124479 A CN 111124479A
- Authority
- CN
- China
- Prior art keywords
- configuration file
- data
- result
- line
- reading
- 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
Links
- 238000004458 analytical method Methods 0.000 title claims abstract description 61
- 238000000034 method Methods 0.000 claims abstract description 73
- 238000013507 mapping Methods 0.000 claims abstract description 37
- 238000004590 computer program Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 abstract description 24
- 238000004891 communication Methods 0.000 description 7
- 238000007781 pre-processing Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 230000001629 suppression Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种配置文件的解析方法、***及电子设备,涉及服务器配置领域。该方法首先对需要解析的配置文件进行读取,获得配置文件的读取结果;然后根据配置文件的读取结果,对配置文件中的对象进行映射,得到映射结果。对配置文件的读取结果中的每一行数据进行解析得到解析结果,该解析结果通过所对应的映射结果,用于配置文件的访问。该方法提供了一种可以包含另外的配置文件并同时可以进行条件判断的配置文件解析方法,通过对本方法提供的配置文件进行条件判断,可以配置各个服务器进程,提升调试效率。
Description
技术领域
本发明涉及服务器配置领域,尤其是涉及一种配置文件的解析方法、***及电子设备。
背景技术
网络游戏服务器部署过程中,为了使服务器应用程序能够进行方便快捷的设置,通常会使用配置文件来对服务器进行设置。这样,如需对服务器设置进行修改,仅需要修改配置文件即可。另外,同样的服务器应用程序可能会根据需求的不同进行不同的设置,使用配置文件可以方便的进行此类差异化设置。因为配置文件的方便修改,所以使用配置文件也可以使调试的效率更高。
现有技术中的配置文件,通常使用JSON和XML格式文件,JSON格式的配置文件无法方便的将多个配置文件中公共使用的设置条目提取为一个文件;XML格式的配置文件编写复杂,可读性差,需要编写大量的字符导致配置文件的体积比较大,而且在上述两种配置文件中无法进行条件判断,导致服务器进程调试的过程中效率较低。
发明内容
有鉴于此,本发明的目的在于提供一种配置文件的解析方法、***及电子设备,通过该方法对配置文件进行条件判断,对各个服务器进程进行配置,提升了调试效率。
第一方面,本发明实施例提供了一种配置文件的解析方法,该方法包括:
对需要解析的配置文件进行读取,获得配置文件的读取结果;
根据配置文件的读取结果,对配置文件中的对象进行映射,得到映射结果;
对配置文件的读取结果中的每一行数据进行解析得到解析结果;解析结果通过所对应的映射结果,用于配置文件的访问。
在一些实施方式中,上述对配置文件的读取结果中的每一行数据进行解析得到解析结果的步骤,包括:
遍历配置文件的读取结果,获得配置文件的读取结果中的所有换行符;
根据换行符,获得配置文件的读取结果中的每一行数据;
对配置文件的读取结果中的每一行数据进行初级解析;
根据初级解析的结果,对行数据进行高级解析。
在一些实施方式中,上述初级解析,包括:
判断行数据是否为空数据;
如果是,则返回空行类型;如果否,判断行数据是否为注释行;
如果是,则返回注释行类型;如果否,对行数据进行高级解析。
在一些实施方式中,上述高级解析,包括:
判断行数据是否为条件编译指令数据,如果是,返回条件编译指令类型;如果否,则对行数据执行宏替换判断步骤;
如果行数据能够进行宏替换,则执行宏替换操作;如果行数据不能进行宏替换,则对行数据执行子配置文件操作;
判断行数据是否包含#include字段,如果是,则对#include字段后包含的子配置文件进行读取;如果否,则对行数据执行宏定义判断步骤;
如果行数据中包含#define字段,则对#define字段后的数据存储为宏;如果行数据中不包含#define字段,则执行对象语句快的判断;
如果行数据中是对象语句块,则查找映射结果中的对象地址;如果行数据中不是对象语句块,则进行赋值语句判断步骤;
如果行数据是赋值语句,则根据对应的属性名查找属性地址并赋值;如果行数据不是赋值语句,则提示出错。
在一些实施方式中,上述配置文件采用C语言或C++语言中的任意一种。
在一些实施方式中,上述判断行数据是否为条件编译指令数据的步骤,包括:
判断行数据中是否包含#else、#endif、#ifdef和#ifndef中的任意一种。
在一些实施方式中,上述对#include字段后包含的子配置文件进行读取的步骤,包括:
获得子配置文件的每一行数据;
对子配置文件的每一行数据进行初级解析;
根据初级解析的结果,对子配置文件的每一行数据进行高级解析。
第二方面,本发明实施例提供了一种配置文件的解析***,该***包括:
文件读取模块,用于对需要解析的配置文件进行读取,获得配置文件的读取结果;
文件映射模块,用于根据配置文件的读取结果,对配置文件中的对象进行映射,得到映射结果;
文件解析模块,用于对配置文件的读取结果中的每一行数据进行解析得到解析结果;解析结果通过所对应的映射结果,用于配置文件的访问。
第三方面,本发明实施例提供了一种电子设备,该电子设备包括:处理器和存储装置;存储装置上存储有计算机程序,计算机程序在被处理器运行时执行上述配置文件的解析方法的步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述配置文件的解析方法的步骤。
本发明实施例带来了以下有益效果:本发明实施例提供了一种配置文件的解析方法、***及电子设备,该方法首先对需要解析的配置文件进行读取,获得配置文件的读取结果;然后根据配置文件的读取结果,对配置文件中的对象进行映射,得到映射结果。对配置文件的读取结果中的每一行数据进行解析得到解析结果,该解析结果通过所对应的映射结果,用于配置文件的访问。该方法提供了一种可以包含另外的配置文件并同时可以进行条件判断的配置文件解析方法,通过对本方法提供的配置文件进行条件判断,可以配置各个服务器进程,提升调试效率。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的配置文件的解析方法流程图;
图2为本发明实施例提供的配置文件的解析方法中,对配置文件的读取结果中的每一行数据进行解析的流程图;
图3为本发明实施例提供的配置文件的解析方法中的高级解析流程图;
图4为本发明实施例提供的配置文件的解析方法中对#include字段后包含的子配置文件进行读取的流程图;
图5为本发明实施例提供的配置文件的解析***的结构示意图;
图6为本发明实施例提供的一种电子设备的结构示意图。
图标:
501-文件读取模块;502-文件映射模块;503-文件解析模块;101-处理器;102-存储器;103-总线;104-通信接口。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
网络游戏服务器部署过程中,为了使服务器应用程序能够进行方便快捷的设置,通常会使用配置文件来对服务器进行设置。如需对服务器设置进行修改,仅需要修改配置文件即可。另外,同样的服务器应用程序可能会根据需求的不同进行不同的设置,使用配置文件可以方便的进行此类差异化设置。因为配置文件的方便修改,所以使用配置文件也可以使调试的效率更高。
现有技术中,常用的配置文件有JSON文件以及XML文件,JSON(JavaScript ObjectNotation,JavaScript对象简谱)是一种轻量级的数据交换格式,是一个标记符的序列,这套标记符包含六个构造字符、字符串、数字和三个字面名。JSON作为一个序列化的对象或数组,常用于配置文件中,但JSON格式的配置文件无法方便的将多个配置文件中公共使用的设置条目提取为一个文件,如果将公共部分提取出来,则在使用的时候,每个需要这些公共设置条目的地方都需要手动加载这个文件,而且JSON格式的配置文件中无法进行条件判断。
XML(Extensible Markup Language,可扩展标记语言)一种用于标记电子文件使其具有结构性的标记语言。XML可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。利用XML可以共享数据,XML数据以纯文本格式存储,这使得XML更易读、更便于记录、更便于调试,使不同***、不同程序之间的数据共享变得更加简单。但XML格式的配置文件编写复杂,可读性差,需要编写大量的字符导致配置文件的体积比较大,而且XML格式的配置文件同样也无法在配置文件中进行条件判断。
考虑到现有配置文件解析中存在的上述问题,本发明的目的在于提供一种配置文件的解析方法、***及电子设备,该技术可以应用于服务器部署过程中,可以采用相关的软件或硬件实现,下面通过实施例进行描述。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种配置文件的解析方法进行详细介绍,该方法的流程图如图1所示,包括:
步骤S101,对需要解析的配置文件进行读取,获得配置文件的读取结果。
配置文件实现已部署在游戏服务器中,通常情况下配置文件部署在服务器固定的路径中,该路径下的文件均为配置文件。具体的,在服务器中会有文件名为Setting或Settings的文件夹,相关配置文件就保存在这些文件夹中。
读取配置文件的过程可通过相关工具得以实现,例如使用记事本程序将配置文件打开,然后直接获取配置文件中的内容。获得的配置文件的读取结果作为待处理数据,可保存到计算机内容中,方便执行后续的解析操作。
步骤S102,根据配置文件的读取结果,对配置文件中的对象进行映射,得到映射结果。
配置文件的读取结果中,包含各种服务器设置中相关对象所对应的属性以及属性值,通过解析这些对象中的属性名称,并将其进行映射,使得服务器相关程序通过该映射后属性名称字符串,即可实现对配置文件中的该属性值的设置和访问。
映射的过程可视为提供接口的过程,通过对象所对应的属性名称作为调用接口,使得服务器在自身程序中直接调用该属性名即可获得配置文件的属性值。
步骤S103,对配置文件的读取结果中的每一行数据进行解析得到解析结果;解析结果通过所对应的映射结果,用于配置文件的访问。
配置文件的读取结果中为服务器的各种设置参数,通常情况下这些配置文件中包含较多的数据,不同属性参数通过便于区分的符号进行分割,例如分号,下划线等。在涉及到不同对象的属性时,通常使用换行符进行区分。
因此该步骤中对每一行数据进行解析,对每一行数据中所包含的各种敏感字符串进行分析。例如,如果该行数据包含注释行的标识符时,则表明该行数据为注释,则不用对注释内容进行解析;如果该行数据中包含条件判断符号if或else时,则需要对上下文进行统筹解析,使得条件关系得以完整表征。
具体的,该配置文件的格式可以为类似C语言的文件格式,在该配置文件中可设置相应的条件关系,在进行配置文件数据的解析过程中,可根据条件关系对配置文件中的数据进行选择性的解析,可提升配置文件的解析效率。
在配置文件的解析过程中,还可以根据条件关系对其它配置文件进行合并读取,进一步提升解析效率。解析的结果通过步骤S102中得到的映射结果进行一一对应,实现了对配置文件的访问。
在本发明实施例提到的配置文件的解析方法中可知,该方法首先对需要解析的配置文件进行读取,获得配置文件的读取结果;然后根据配置文件的读取结果,对配置文件中的对象进行映射,得到映射结果。对配置文件的读取结果中的每一行数据进行解析得到解析结果,该解析结果通过所对应的映射结果,用于配置文件的访问。该方法提供了一种可以包含另外的配置文件并同时可以进行条件判断的配置文件解析方法,通过对本方法提供的配置文件进行条件判断,可以配置各个服务器进程,提升调试效率。
在一些实施方式中,上述对配置文件的读取结果中的每一行数据进行解析的过程,如图2所示,包括:
步骤S201,遍历配置文件的读取结果,获得配置文件的读取结果中的所有换行符。
配置文件的读取结果一般保存在计算机内存中,遍历该读取结果中的换行符的过程可通过相关查找函数对换行符进行查找。换行符一般为“/n”,也会有“\n”的形式,具体情况看配置文件的实际格式。
步骤S202,根据换行符,获得配置文件的读取结果中的每一行数据。
在获取到所有换行符所在配置文件的位置后,截取相邻的两个换行符之间的数据,极为每一行数据。配置文件的首行数据是直接通过第一个换行符来获取的;配置文件的尾行数据时直接通过最后一个换行符来获取的。
步骤S203,对配置文件的读取结果中的每一行数据进行初级解析。
初级解析不涉及具体的业务逻辑,例如判断该行数据是不是为注释或者是空行。在一些实施方式中,上述初级解析,包括:
判断行数据是否为空数据,如果是,则返回空行类型;如果否,判断行数据是否为注释行。
如果是注释行,则返回注释行类型;如果不是注释行,则对行数据进行高级解析。
步骤S204,根据初级解析的结果,对行数据进行高级解析。
如果初级解析的结果中返回了行数据,这表明该行数据中需要进行相关业务逻辑操作,因此需要对该行数据进行高级解析。
高级解析是利用类似C语言的流程进行解析,通过加入条件判断逻辑,实现了高等级的解析操作。
具体的如图3所示,在一些实施方式中,上述高级解析,包括:
步骤S301,判断行数据是否为条件编译指令数据,如果是,返回条件编译指令类型;如果否,则对行数据执行宏替换判断步骤。
条件编译指令类似常见的if-else的形式,在该配置文件中可事先对条件编译指令的形式进行设定,例如在一些实施方式中可通过判断行数据中是否包含#else、#endif、#ifdef和#ifndef中的任意一种,来判断该行数据是否为条件编译指令数据。如果是,则返回编译指令类型;如果否,则执行步骤S302。
步骤S302,如果行数据能够进行宏替换,则执行宏替换操作;如果行数据不能进行宏替换,则对行数据执行子配置文件操作。
该步骤为行数据执行宏替换判断步骤,在一些实施方式中,上述配置文件采用C语言或C++语言中的任意一种。宏替换是C/C++的预处理中的一部分,在C++标准中有4条规则来定义替换。
规则1,实参替换。
本条规则描述带参数的宏的替换过程。对于宏定义中的形参,在替换列表中,如果不是作为#或##的操作数,那么将对应实参完全展开(相当于对实参进行求值),然后将替换列表中的形参替换掉。如果是#或##的操作数,那么不进行替换。
规则2,多次扫描。
在所有的形参替换为实参后。对结果进行再次扫描,如果发现还有可替换的宏,则进行替换,否则中止。
规则3,递归替换抑制。
如果在替换列表中发现当前正在展开的宏的名字,那么这里不进行替换.更进一步,在嵌套的替换过程中发现已经替换过的宏的名字,则不进行替换。
规则4,递归预处理抑制。
如果替换后的结果形成预处理指令,则不执行这条预处理指令。
如果该行数据能够进行宏替换,则执行宏替换操作;如果该行数据不能进行宏替换,则对行数据执行步骤S303。
步骤S303,判断行数据是否包含#include字段,如果是,则对#include字段后包含的子配置文件进行读取;如果否,则对行数据执行宏定义判断步骤。
该步骤为子配置文件操作,通过判断是否包括#include的字段结果来判断该行数据是否需要进行子配置文件的读取,如果是包含#include字段,则对#include字段后所包含的子文件进行读取,如果否,则执行步骤S304。
上述对#include字段后包含的子配置文件进行读取的步骤,如图4所示,包括:
步骤S31,获得子配置文件的每一行数据。
该步骤中获取自配置文件的每一行数据与步骤S201-S202相同,均是通过换行符的截取来实现行数据的获得。
步骤S32,对子配置文件的每一行数据进行初级解析。
步骤S33,根据初级解析的结果,对子配置文件的每一行数据进行高级解析。
上述过程与步骤S203以及S204均相同,类似递归的形式对子配置文件进行再次读取。
步骤S304,如果行数据中包含#define字段,则对#define字段后的数据存储为宏;如果行数据中不包含#define字段,则执行对象语句快的判断。
#define字段通常用来判断是否为宏定义,如果包含,则存储为宏。存储的过程与执行程序类似,相比起传统配置文件只能读取和修改而言,存储为宏的操作使得配置文件的解析过程中增加了相关数据的保存过程,进一步增加了配置文件解析的灵活性。如果行数据中不包含#define字段,则执行步骤S305。
步骤S305,如果行数据中是对象语句块,则查找映射结果中的对象地址;如果行数据中不是对象语句块,则进行赋值语句判断步骤。
对象语句块的判定,通常根据是否为一组“{}”符号来判定,具体的如果该行数据中包含“{”,那么暂时将该发现结果进行标记,直到后续行数据中找到“}”时,这表面那个是对象语句块。然后再根据之前的标记,得到“{”前的对象名称。获得对象名称后,根据映射结果得到该对象的地址。如果该行数据不是对象语句块,则执行步骤S306。
步骤S306,如果行数据是赋值语句,则根据对应的属性名查找属性地址并赋值;如果行数据不是赋值语句,则提示出错。
赋值语句的判断一般通过是否包含“=”符号来实现,也可以通过是否包含“&=”符号来实现。如果该行数据是赋值语句,则根据对应的属性名查找属性地址,并对该属性进行赋值;如果该行数据不是复制语句,则提示出错。
通过上述一系列流程,将配置文件的读取结果中的每一行数据进行解析得到解析结果,所得到的解析结果通过所对应的映射结果,用于配置文件的访问。每一行数据解析完毕后自动执行下一行数据,直至对配置文件的读取结果中所有的行数据进行解析后,完成配置文件的解析过程。
由上述实施例可知,该方法实现了在包含另外的配置文件并同时可以进行条件判断的配置文件解析过程,通过对本方法提供的配置文件进行条件判断,可以配置各个服务器进程,提升调试效率。
对应于上述配置文件的解析方法的实施例,本实施例还提供一种配置文件的解析***,如图5所示,该***包括:
文件读取模块501,用于对需要解析的配置文件进行读取,获得配置文件的读取结果;
文件映射模块502,用于根据配置文件的读取结果,对配置文件中的对象进行映射,得到映射结果;
文件解析模块503,用于对配置文件的读取结果中的每一行数据进行解析得到解析结果;解析结果通过所对应的映射结果,用于配置文件的访问。
本发明实施例所提供的配置文件的解析***,其实现原理及产生的技术效果和前述配置文件的解析方法的实施例相同,为简要描述,实施例部分未提及之处,可参考前述方法实施例中相应内容。
本实施例还提供一种电子设备,为该电子设备的结构示意图如图6所示,该设备包括处理器101和存储器102;其中,存储器102用于存储一条或多条计算机指令,一条或多条计算机指令被处理器执行,以实现上述配置文件的解析方法。
图6所示的服务器还包括总线103和通信接口104,处理器101、通信接口104和存储器102通过总线103连接。
其中,存储器102可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。总线103可以是ISA总线、PCI总线或EISA总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
通信接口104用于通过网络接口与至少一个用户终端及其它网络单元连接,将封装好的IPv4报文或IPv4报文通过网络接口发送至用户终端。
处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processor,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本公开实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本公开实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器102,处理器101读取存储器102中的信息,结合其硬件完成前述实施例的方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行前述实施例的方法的步骤。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、设备和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以用软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种配置文件的解析方法,其特征在于,所述方法包括:
对需要解析的所述配置文件进行读取,获得所述配置文件的读取结果;
根据所述配置文件的读取结果,对所述配置文件中的对象进行映射,得到映射结果;
对所述配置文件的读取结果中的每一行数据进行解析得到解析结果;所述解析结果通过所对应的所述映射结果,用于所述配置文件的访问。
2.根据权利要求1所述的方法,其特征在于,对所述配置文件的读取结果中的每一行数据进行解析得到解析结果的步骤,包括:
遍历所述配置文件的读取结果,获得所述配置文件的读取结果中的所有换行符;
根据所述换行符,获得所述配置文件的读取结果中的每一行数据;
对所述配置文件的读取结果中的每一行数据进行初级解析;
根据所述初级解析的结果,对所述行数据进行高级解析。
3.根据权利要求2所述的方法,其特征在于,所述初级解析,包括:
判断所述行数据是否为空数据;
如果是,则返回空行类型;如果否,判断所述行数据是否为注释行;
如果是,则返回注释行类型;如果否,对所述行数据进行高级解析。
4.根据权利要求2所述的方法,其特征在于,所述高级解析,包括:
判断所述行数据是否为条件编译指令数据,如果是,返回条件编译指令类型;如果否,则对所述行数据执行宏替换判断步骤;
如果所述行数据能够进行宏替换,则执行宏替换操作;如果所述行数据不能进行宏替换,则对所述行数据执行子配置文件操作;
判断所述行数据是否包含#include字段,如果是,则对所述#include字段后包含的子配置文件进行读取;如果否,则对所述行数据执行宏定义判断步骤;
如果所述行数据中包含#define字段,则对所述#define字段后的数据存储为宏;如果所述行数据中不包含#define字段,则执行对象语句快的判断;
如果所述行数据中是对象语句块,则查找所述映射结果中的对象地址;如果所述行数据中不是对象语句块,则进行赋值语句判断步骤;
如果所述行数据是赋值语句,则根据对应的属性名查找属性地址并赋值;如果所述行数据不是赋值语句,则提示出错。
5.根据权利要求1所述的方法,其特征在于,所述配置文件采用C语言或C++语言中的任意一种。
6.根据权利要求4所述的方法,其特征在于,判断所述行数据是否为条件编译指令数据的步骤,包括:
判断行数据中是否包含#else、#endif、#ifdef和#ifndef中的任意一种。
7.根据权利要求4所述的方法,其特征在于,对所述#include字段后包含的子配置文件进行读取的步骤,包括:
获得所述子配置文件的每一行数据;
对所述子配置文件的每一行数据进行初级解析;
根据所述初级解析的结果,对所述子配置文件的每一行数据进行高级解析。
8.一种配置文件的解析***,其特征在于,所述***包括:
文件读取模块,用于对需要解析的所述配置文件进行读取,获得所述配置文件的读取结果;
文件映射模块,用于根据所述配置文件的读取结果,对所述配置文件中的对象进行映射,得到映射结果;
文件解析模块,用于对所述配置文件的读取结果中的每一行数据进行解析得到解析结果;所述解析结果通过所对应的所述映射结果,用于所述配置文件的访问。
9.一种电子设备,其特征在于,包括:处理器和存储装置;所述存储装置上存储有计算机程序,所述计算机程序在被所述处理器运行时执行如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行上述权利要求1至7任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911316226.1A CN111124479B (zh) | 2019-12-18 | 2019-12-18 | 配置文件的解析方法、***及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911316226.1A CN111124479B (zh) | 2019-12-18 | 2019-12-18 | 配置文件的解析方法、***及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111124479A true CN111124479A (zh) | 2020-05-08 |
CN111124479B CN111124479B (zh) | 2024-03-22 |
Family
ID=70500558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911316226.1A Active CN111124479B (zh) | 2019-12-18 | 2019-12-18 | 配置文件的解析方法、***及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111124479B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111651406A (zh) * | 2020-05-21 | 2020-09-11 | 杭州明讯软件技术有限公司 | 一种自动化载波调度***文件读取方法及装置 |
CN112764831A (zh) * | 2021-01-19 | 2021-05-07 | 中盈优创资讯科技有限公司 | 基于自定义可扩展标记语言的配置文件解析方法及装置 |
CN113190231A (zh) * | 2021-04-09 | 2021-07-30 | 大唐微电子技术有限公司 | 一种属性配置文件的生成方法和解析方法 |
CN114338854A (zh) * | 2021-12-31 | 2022-04-12 | 中国银行股份有限公司 | 报文处理方法及装置 |
CN114330278A (zh) * | 2021-12-23 | 2022-04-12 | 上海万物新生环保科技集团有限公司 | 一种判断返回数据一致性的方法及设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020178253A1 (en) * | 2001-05-24 | 2002-11-28 | International Business Machines Corporation | Method and apparatus to solve compatibility between heterogeneous web server access logs formats |
US20080198723A1 (en) * | 2005-07-22 | 2008-08-21 | Koninklijke Philips Electronics, N.V. | Method and Apparatus of Controlling Playback of an Optical Disc Program |
US7568152B1 (en) * | 2000-07-14 | 2009-07-28 | International Business Machines Corporation | Text file interface support in an object oriented application |
US20160062794A1 (en) * | 2014-08-27 | 2016-03-03 | Verizon Patent And Licensing Inc. | Big data parser |
CN107992620A (zh) * | 2017-12-22 | 2018-05-04 | 武汉楚鼎信息技术有限公司 | 一种json数据快速同步及记录的方法及***装置 |
CN109413131A (zh) * | 2018-04-28 | 2019-03-01 | 武汉思普崚技术有限公司 | 一种日志解析的方法及装置 |
CN109656813A (zh) * | 2018-11-21 | 2019-04-19 | 恒为科技(上海)股份有限公司 | 一种测试用例运行方法及装置 |
CN109670081A (zh) * | 2018-12-28 | 2019-04-23 | 中国银行股份有限公司 | 业务请求处理的方法及装置 |
CN109947711A (zh) * | 2018-08-22 | 2019-06-28 | 重庆金康特智能穿戴技术研究院有限公司 | 一种对ios项目开发过程中的多语言文件自动化管理方法 |
WO2019148671A1 (zh) * | 2018-01-30 | 2019-08-08 | 平安科技(深圳)有限公司 | 一种xml文件解析方法、装置、计算机设备及存储介质 |
-
2019
- 2019-12-18 CN CN201911316226.1A patent/CN111124479B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7568152B1 (en) * | 2000-07-14 | 2009-07-28 | International Business Machines Corporation | Text file interface support in an object oriented application |
US20020178253A1 (en) * | 2001-05-24 | 2002-11-28 | International Business Machines Corporation | Method and apparatus to solve compatibility between heterogeneous web server access logs formats |
US20080198723A1 (en) * | 2005-07-22 | 2008-08-21 | Koninklijke Philips Electronics, N.V. | Method and Apparatus of Controlling Playback of an Optical Disc Program |
US20160062794A1 (en) * | 2014-08-27 | 2016-03-03 | Verizon Patent And Licensing Inc. | Big data parser |
CN107992620A (zh) * | 2017-12-22 | 2018-05-04 | 武汉楚鼎信息技术有限公司 | 一种json数据快速同步及记录的方法及***装置 |
WO2019148671A1 (zh) * | 2018-01-30 | 2019-08-08 | 平安科技(深圳)有限公司 | 一种xml文件解析方法、装置、计算机设备及存储介质 |
CN109413131A (zh) * | 2018-04-28 | 2019-03-01 | 武汉思普崚技术有限公司 | 一种日志解析的方法及装置 |
CN109947711A (zh) * | 2018-08-22 | 2019-06-28 | 重庆金康特智能穿戴技术研究院有限公司 | 一种对ios项目开发过程中的多语言文件自动化管理方法 |
CN109656813A (zh) * | 2018-11-21 | 2019-04-19 | 恒为科技(上海)股份有限公司 | 一种测试用例运行方法及装置 |
CN109670081A (zh) * | 2018-12-28 | 2019-04-23 | 中国银行股份有限公司 | 业务请求处理的方法及装置 |
Non-Patent Citations (2)
Title |
---|
戴树唯;征容;: "基于公共信息模型的数据映射工具" * |
赵文;: "基于内存映射文件的海量点云数据快速读取方法" * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111651406A (zh) * | 2020-05-21 | 2020-09-11 | 杭州明讯软件技术有限公司 | 一种自动化载波调度***文件读取方法及装置 |
CN112764831A (zh) * | 2021-01-19 | 2021-05-07 | 中盈优创资讯科技有限公司 | 基于自定义可扩展标记语言的配置文件解析方法及装置 |
CN113190231A (zh) * | 2021-04-09 | 2021-07-30 | 大唐微电子技术有限公司 | 一种属性配置文件的生成方法和解析方法 |
CN114330278A (zh) * | 2021-12-23 | 2022-04-12 | 上海万物新生环保科技集团有限公司 | 一种判断返回数据一致性的方法及设备 |
CN114338854A (zh) * | 2021-12-31 | 2022-04-12 | 中国银行股份有限公司 | 报文处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111124479B (zh) | 2024-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111124479B (zh) | 配置文件的解析方法、***及电子设备 | |
US11740876B2 (en) | Method and system for arbitrary-granularity execution clone detection | |
US10019240B2 (en) | Method and apparatus for detecting code change | |
CN109033843B (zh) | 用于分布式静态检测***的Java文件依赖性分析方法及模块 | |
CN108427731B (zh) | 页面代码的处理方法、装置、终端设备及介质 | |
US11048798B2 (en) | Method for detecting libraries in program binaries | |
US20240061680A1 (en) | Methods and Apparatus for Finding Long Methods in Code | |
US20130125098A1 (en) | Transformation of Computer Programs | |
CN106295346B (zh) | 一种应用漏洞检测方法、装置及计算设备 | |
EP2778629A1 (en) | Method and device for code change detection | |
CN110716866A (zh) | 代码质量扫描方法、装置、计算机设备及存储介质 | |
US20190087160A1 (en) | System and method for creating domain specific language | |
CN108427580A (zh) | 配置对命名重复的检测方法、存储介质和智能设备 | |
JP2021002326A (ja) | ソフトウェアプログラムにおける静的分析違反の修復パターンの精緻化 | |
CN113076084A (zh) | 资源文件处理方法、装置、设备及存储介质 | |
CN111444456B (zh) | 一种样式编辑方法、装置及电子设备 | |
CN110245333B (zh) | 字体类型检测方法、装置、电子设备及存储介质 | |
CN109783134B (zh) | 前端页面配置方法、装置及电子设备 | |
CN113760291A (zh) | 日志输出的方法和装置 | |
JP2017151594A (ja) | 支援装置、支援方法及びプログラム | |
CN113408250B (zh) | 一种项目文件的处理方法和装置 | |
CN110244954A (zh) | 一种应用程序的编译方法及设备 | |
JP2016051367A (ja) | データ解析装置、データ解析方法、および、プログラム。 | |
CN113946347B (zh) | 函数调用的检测方法、装置、电子设备及可读介质 | |
JP6945434B2 (ja) | ソフトウェア開発装置、ソフトウェア開発方法およびソフトウェア開発プログラム |
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 |