CN112612470B - 用户界面文件生成方法及装置 - Google Patents
用户界面文件生成方法及装置 Download PDFInfo
- Publication number
- CN112612470B CN112612470B CN202110010030.0A CN202110010030A CN112612470B CN 112612470 B CN112612470 B CN 112612470B CN 202110010030 A CN202110010030 A CN 202110010030A CN 112612470 B CN112612470 B CN 112612470B
- Authority
- CN
- China
- Prior art keywords
- ast
- ast node
- target
- node types
- types
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明提供一种用户界面文件生成方法及装置,方法包括:基于抽象语法树AST对目标用户界面UI的目标源码文件进行处理,获取第一预设数目个AST节点,根据第一预设数目个AST节点在预设的P个AST节点类型中确定N个AST节点类型;根据预设策略对N个AST节点类型归并,确定M个第一目标AST节点类型,M小于N;基于M个第一目标AST节点类型,生成包括标准节点数据流和标准解析接口的目标语法树;根据标准解析接口在标准节点数据流中进行信息提取,生成目标UI对应的结构描述文件和代理文件。本发明可以基于AST生成UI文件,无需人工转义且降低了开发难度,同时降低了业务复杂度,提高了源码文件的可维护性。
Description
技术领域
本发明涉及计算机数据处理技术领域,尤其涉及一种用户界面文件生成方法及装置。
背景技术
Flutter(跨平台的图形渲染引擎)是谷歌提供的移动用户界面(User Interface,UI)UI框架,可以在IOS和Android(安卓)上构建高质量的原生用户界面。现有技术中,Flutter UI动态化框架(简称Fair)通过解析UI对应的结构描述文件(可以简称为领域特定语言(Domain Specific Language,DSL)文件)来实现UI的动态化布局,其中,UI对应的结构描述文件由人工编写,或人工翻译UI的源码文件生成。
在通过人工编写生成UI对应的结构描述文件时,需要开发者对Fair有深刻的理解,对开发者要求较高;通过人工转义UI的源码文件生成UI对应的结构描述文件时,耗时较长,易错,且不易维护。
由此可见,在生成UI对应的结构描述文件时存在对开发者要求高或者生成效率低、准确率低且不易维护的问题。
发明内容
本发明实施例提供一种用户界面文件生成方法及装置,以解决现有技术中在生成UI对应的结构描述文件时存在的对开发者要求高或者生成效率低、准确率低且不易维护的问题。
第一方面,本发明实施例提供一种用户界面文件生成方法,包括:
基于抽象语法树AST对目标用户界面UI对应的目标源码文件进行处理,获取第一预设数目个AST节点,并根据所述第一预设数目个AST节点在预设的P个AST节点类型中确定N个AST节点类型,所述P个AST节点类型对应于包括至少一个源码文件的源码文件集合,每个所述源码文件对应于一UI,各所述UI基于Flutter引擎进行图形渲染;
根据预设策略对所述N个AST节点类型归并,确定M个第一目标AST节点类型,M、N为正整数,M小于N,且M大于或者等于1;
基于所述M个第一目标AST节点类型,生成包括标准节点数据流和标准解析接口的目标语法树;
根据所述标准解析接口在所述标准节点数据流中进行信息提取,生成所述目标UI对应的结构描述文件和代理文件。
第二方面,本发明实施例提供一种用户界面文件生成装置,包括:
第一处理模块,用于基于抽象语法树AST对目标用户界面UI对应的目标源码文件进行处理,获取第一预设数目个AST节点,并根据所述第一预设数目个AST节点在预设的P个AST节点类型中确定N个AST节点类型,所述P个AST节点类型对应于包括至少一个源码文件的源码文件集合,每个所述源码文件对应于一UI,各所述UI基于Flutter引擎进行图形渲染;
确定模块,用于根据预设策略对所述N个AST节点类型归并,确定M个第一目标AST节点类型,M、N为正整数,M小于N,且M大于或者等于1;
第一生成模块,用于基于所述M个第一目标AST节点类型,生成包括标准节点数据流和标准解析接口的目标语法树;
第二生成模块,用于根据所述标准解析接口在所述标准节点数据流中进行信息提取,生成所述目标UI对应的结构描述文件和代理文件。
第三方面,本发明实施例提供一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述的用户界面文件生成方法的步骤。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现上述的用户界面文件生成方法的步骤。
本发明实施例的技术方案,通过对目标UI对应的目标源码文件进行处理获取AST节点,并根据预设策略对基于AST节点在P个AST节点类型中确定的N个AST节点类型进行类型归并,生成标准节点数据流和标准解析接口,进而生成结构描述文件和代理文件,可以实现基于AST生成结构描述文件和代理文件,无需人工转义且降低了开发难度,同时降低了业务复杂度,提高了源码文件的可维护性。
附图说明
图1表示本发明实施例用户界面文件生成方法示意图;
图2表示本发明实施例用户界面文件生成方法具体实施流程图;
图3表示本发明实施例用户界面文件生成装置示意图;
图4表示本发明实施例电子设备示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
在本发明的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
本发明实施例提供一种用户界面文件生成方法,如图1所示,包括:
步骤101、基于抽象语法树AST对目标用户界面UI对应的目标源码文件进行处理,获取第一预设数目个AST节点,并根据所述第一预设数目个AST节点在预设的P个AST节点类型中确定N个AST节点类型,所述P个AST节点类型对应于包括至少一个源码文件的源码文件集合,每个所述源码文件对应于一UI,各所述UI基于Flutter引擎进行图形渲染。
本发明实施例提供的UI文件生成方法,首先获取目标UI对应的目标源码文件,然后基于抽象语法树(Abstract Syntax Tree,AST)对所获取的目标源码文件进行处理,生成第一预设数目个AST节点。AST是源码文件语法结构的一种抽象表示,以树状的形式表现编程语言的语法结构。
在获取第一预设数目个AST节点之后,可以根据第一预设数目个AST节点在预设的P个AST节点类型中确定N个AST节点类型,其中,针对每个AST节点类型,可以对应于至少一个AST节点。
其中,P个AST节点类型对应于包括至少一个源码文件的源码文件集合,即根据源码文件集合可以确定P个AST节点类型,源码文件集合中的每个源码文件可对应于一UI,针对每个UI,可基于Flutter引擎进行图形渲染。
步骤102、根据预设策略对所述N个AST节点类型归并,确定M个第一目标AST节点类型,M、N为正整数,M小于N,且M大于或者等于1。
在确定N个AST节点类型之后,可以根据预设策略对N个AST节点类型进行归并处理,以实现简化节点类型,通过对N个AST节点类型进行归并处理,可以获取M个第一目标AST节点类型,其中M的取值小于N,且M为大于或者等于1的整数。通过简化节点类型,可以实现将复杂语法进行整合,进而可以为后续获取目标UI的相关文件提供保障。
步骤103、基于所述M个第一目标AST节点类型,生成包括标准节点数据流和标准解析接口的目标语法树。
在获取M个第一目标AST节点类型之后,可以基于M个第一目标AST节点类型,生成包括标准节点数据流和标准解析接口的目标语法树。
其中,步骤101至步骤103的实施过程可以对应于目标源码文件的一段解析过程,即,一段解析过程可以为:基于AST获取目标UI的目标源码文件对应的AST节点,根据AST节点在P个AST节点类型中确定N个AST节点类型,对N个AST节点类型进行归并处理,实现将复杂的语法进行整合,并在进行节点类型归并处理之后,生成目标语法树,以实现为后续过程提供标准节点数据流和标准解析接口。
步骤104、根据所述标准解析接口在所述标准节点数据流中进行信息提取,生成所述目标UI对应的结构描述文件和代理文件。
在生成包括标准节点数据流和标准解析接口的目标语法树之后,可以根据标准解析接口在标准节点数据流中进行信息提取,并根据所提取的信息生成目标UI对应的结构描述文件以及目标UI对应的代理文件。其中,目标UI对应的结构描述文件为确定UI布局的文件,目标UI对应的代理文件为用户确定UI显示逻辑的文件。
其中,根据标准解析接口在标准节点数据流中进行信息提取,并基于所提取的信息生成结构描述文件和代理文件的过程为二段解析的过程,通过预先进行一段解析,可以降低二段解析的复杂度,同时可以提高源码文件的可维护性。
本发明上述实施过程,通过对目标UI对应的目标源码文件进行处理获取AST节点,并根据预设策略对基于AST节点在P个AST节点类型中确定的N个AST节点类型进行类型归并,生成标准节点数据流和标准解析接口,进而生成结构描述文件和代理文件,可以实现基于AST生成结构描述文件和代理文件,无需人工转义且降低了开发难度,且通过将根据源码文件获取结构描述文件和代理文件的过程分为两个阶段,可以降低业务解析的复杂度,增加源码文件的可维护性。
在上述实施例的基础上,本发明还提供一种可选实施例,在当前可选实施例中,步骤101:基于抽象语法树AST对目标用户界面UI对应的目标源码文件进行处理,获取第一预设数目个AST节点,并根据所述第一预设数目个AST节点在预设的P个AST节点类型中确定N个AST节点类型,包括:
基于所述AST对所述目标源码文件进行分析、组装,将所述目标源码文件转化为对应的AST信息,所述AST信息包括所述第一预设数目个AST节点;
根据所述第一预设数目个AST节点,在所述P个AST节点类型中确定第二预设数目个AST节点类型,每个所述AST节点类型对应于至少一个AST节点;
基于第一过滤原则,将所述第二预设数目个AST节点类型中的部分AST节点类型进行过滤,获取所述N个AST节点类型。
在基于AST对目标源码文件进行处理时,具体为,基于AST对目标源码文件进行分析、组装,实现将目标源码文件转化为对应的AST信息,其中目标源码文件所对应的AST信息中包括第一预设数目个AST节点。在获取第一预设数目个AST节点之后,可以根据第一预设数目个AST节点,在预设的P个AST节点类型中确定第二预设数目个AST节点类型,针对每一个AST节点类型,可以对应于至少一个AST节点,且第二预设数目小于或者等于第一预设数目。
然后针对所确定的第二预设数目个AST节点类型,采用第一过滤原则,对第二预设数目个AST节点类型进行过滤处理,过滤掉第二预设数目个AST节点类型中的部分AST节点类型,其中所过滤掉的AST节点类型为重要程度较低的AST节点类型,或者可以理解为关注度低的AST节点类型。在进行过滤处理之后,可以获取N个AST节点类型。
例如,AST信息包括400个AST节点,且根据400个AST节点在P个(如200个)AST节点类型中确定100个AST节点类型,其中200个AST节点类型中包括重要程度低的40个可过滤AST节点类型。在确定100个AST节点类型之后,可以基于第一过滤原则,针对100个AST节点类型进行过滤操作,以过滤掉重要程度低的20个可过滤AST节点类型(即100个AST节点类型中包括40个可过滤AST节点类型中的20个可过滤AST节点类型),获取剩余的80个AST节点类型。
本发明上述实施过程,通过对目标源码文件进行分析、组装,获取对应于第一预设数目个AST节点的AST信息,并确定第二预设数目个AST节点类型,针对第二预设数目个AST节点类型进行过滤处理,可以实现获取需求的AST节点类型,以实现简化AST节点类型,避免不必要的解析操作。
本发明还提供一种可选实施例,在当前可选实施例中,在步骤102:根据预设策略对所述N个AST节点类型归并,确定M个第一目标AST节点类型之前,还包括:
针对所述N个AST节点类型中的每个AST节点类型,基于第二过滤原则,对当前AST节点类型对应的每个AST节点中的第一内容进行过滤,获取当前AST节点类型对应的每个AST节点的目标内容;
其中,所述第一内容对应的重要等级小于预设等级。
针对每个AST节点类型而言,由于对应于至少一个AST节点,且每个AST节点对应有相应的内容,但是并非AST节点中的全部内容均为可利用内容,因此,在获取N个AST节点类型,且对N个AST节点类型进行归并处理之前,可以首先针对N个AST节点类型,基于第二过滤原则对对应的AST节点进行内容过滤。其中,基于第二过滤原则对每个AST节点类型对应的AST节点进行内容过滤时,具体可以为:针对N个AST节点类型中的每个AST节点类型,获取当前AST节点类型所对应的至少一个AST节点,针对所获取的至少一个AST节点,基于第二过滤原则,将每个AST节点中的第一内容进行过滤,这里的第一内容可以为重要等级小于预设等级的内容,或者关注度不高的内容,以实现保留有效内容,通过进行过滤处理,可以针对每个AST节点保留目标内容。由于针对N个AST节点类型中的每个AST节点类型对应的AST节点均执行上述过滤操作,可以实现简化数据内容。
本发明上述实施过程,在对N个AST节点类型进行归并之前,通过针对N个AST节点类型中的每个AST节点类型,基于第二过滤原则,对AST节点类型对应的AST节点进行第一内容过滤,可以简化数据内容,为提供标准节点数据流提供保障。
在本发明上述实施例的基础上,本发明还提供一种可选实施例,在当前可选实施例中,步骤103:基于所述M个第一目标AST节点类型,生成包括标准节点数据流和标准解析接口的目标语法树,包括:
针对每个第一目标AST节点类型,根据当前第一目标AST节点类型对应的AST节点的所述目标内容生成目标数据集合,汇聚M个所述目标数据集合获取所述标准节点数据流;
在K个目标AST节点类型对应的K*L个标准解析接口中,提取所述M个第一目标AST节点类型对应的M*L个所述标准解析接口,其中每个所述目标AST节点类型均对应于L个标准解析接口,所述P个AST节点类型归并后对应于所述K个目标AST节点类型。
由于在根据预设策略对N个AST节点类型归并之前,可以针对N个AST节点类型中的每个AST节点类型,将当前AST节点类型对应的每个AST节点中的第一内容进行过滤,获取每个AST节点的目标内容,因此在对N个AST节点类型进行归并得到M个第一目标AST节点类型之后,针对每个第一目标AST节点类型,所对应的AST节点包括目标内容。
在基于M个第一目标AST节点类型,生成目标语法树时,可以针对每个第一目标AST节点类型,获取当前第一目标AST节点类型对应的AST节点的目标内容,然后针对当前第一目标AST节点类型,根据对应的AST节点的目标内容生成目标数据集合,以实现获取M个目标数据集合,然后将M个目标数据集合进行汇聚,根据汇聚得到的结果生成标准节点数据流。
其中,P个AST节点类型归并后对应于K个目标AST节点类型,针对每个目标AST节点类型,均对应于L个标准解析接口,其中L为大于或者等于4的整数,在L的取值为4,可以分别对应于增加、删除、修改、查询功能。针对M个第一目标AST节点类型,可以在K个目标AST节点类型对应的K*L个标准解析接口中获取M*L个标准解析接口,具体为,在K个目标AST节点类型中提取M个第一目标AST节点类型,并针对每个第一目标AST节点类型,分别获取L个标准解析接口,以获取M*L个标准解析接口。在确定目标源码文件对应的标准节点数据流以及标准解析接口之后,可以生成包括标准节点数据流和标准解析接口的目标语法树。
本发明上述实施过程,通过针对M个第一目标AST节点类型中的每个第一目标AST节点类型,分别获取对应的目标数据集合进行汇聚生成标准节点数据流、分别获取对应的L个标准解析接口,可以实现提供标准节点数据流以及标准解析接口,并保证提供丰富的数据源,进而为UI布局和逻辑动态化提供有效数据源。
本发明还提供一种可选实施例,在当前可选实施例中,所述根据预设策略对所述N个AST节点类型归并,确定M个第一目标AST节点类型,包括:
在所述N个AST节点类型中,将具有相同类型特征的不同AST节点类型进行合并,以及,将对应于不同形式且类型相同的AST节点类型进行合并,在K个目标AST节点类型中获取所述M个第一目标AST节点类型;
其中,对应于不同形式且类型相同的AST节点类型属于不同的AST节点类型,所述P个AST节点类型归并后对应于所述K个目标AST节点类型。
在根据预设策略对N个AST节点类型进行归并以确定M个第一目标AST节点类型时,可以针对N个AST节点类型,将具有相同类型特征的不同AST节点类型进行合并,同时将对应于不同形式且类型相同的AST节点类型进行合并,以获取M个第一目标AST节点类型,实现AST节点类型的合理整合。
针对将具有相同类型特征的不同AST节点类型进行合并而言,可以针对N个AST节点类型,统计每个AST节点类型在多个维度的类型特征,然后将具有相同类型特征的AST节点类型进行合并。例如,AST节点类型1在多个维度的类型特征分别为类型特征A、类型特征B以及类型特征C,AST节点类型2在多个维度的类型特征分别为类型特征A、类型特征D以及类型特征E,由于AST节点类型1与AST节点类型2均对应于类型特征A,则可以将AST节点类型1与AST节点类型2进行类型合并,且合并后对应的AST节点类型为类型A。
为了更形象的对AST节点类型合并进行说明,下面通过一具体实例进行相关阐述。如,AST节点类型1对应的节点包括数字内容,AST节点类型2对应的节点包括字符串类型的字母内容,AST节点类型1在两个维度对应的类型特征分别为数字特征、常量特征,AST节点类型2在两个维度对应的类型特征分别为字母特征、常量特征,由于AST节点类型1与AST节点类型2均对应于常量特征,则可以将AST节点类型1与AST节点类型2进行类型合并,且合并后对应的AST节点类型为常量类型。
本实施例中,对应于不同形式且类型相同的AST节点类型属于不同的AST节点类型,针对将对应于不同形式且类型相同的AST节点类型进行合并而言,可以针对N个AST节点类型,检测是否存在类型相同但对应于不同表现形式的AST节点类型,若存在,将类型相同但对应于不同表现形式的AST节点类型进行类型合并。例如,AST节点类型3对应于A类型,A类型的表现形式为A1,AST节点类型4对应于A类型,A类型的表现形式为A2,由于AST节点类型3与AST节点类型4为相同类型的不同表现形式,因此可以将AST节点类型3与AST节点类型4进行类型合并,且合并后对应的AST节点类型为A2类型或者A1类型。
需要说明的是,在对P个AST节点类型进行归并得到K个目标AST节点类型时,所采用的的策略与根据N个AST节点类型确定M个第一目标AST节点类型所采用的的策略相同,这里不再进一步阐述。由于采用的策略相同,K个目标AST节点类型可以包括M个第一目标AST节点类型。
本发明上述实施例中,通过将具有相同类型特征的不同AST节点类型进行合并,以及,将对应于不同形式且类型相同的AST节点类型进行合并,可以实现减少AST节点类型,将复杂语法进行有效整合。
在本发明上述实施例的基础上,本发明还提供一种可选实施例,在当前可选实施例中,所述在所述N个AST节点类型中,将具有相同类型特征的不同AST节点类型进行合并,以及,将对应于不同形式且类型相同的AST节点类型进行合并,包括:
针对每个AST节点类型,在N-1个AST节点类型中,检测是否存在与当前AST节点类型具有相同类型特征的第一AST节点类型,或者,检测是否存在与当前AST节点类型对应于不同形式且类型相同的第二AST节点类型;
在存在所述第一AST节点类型的情况下,将当前AST节点类型与所述第一AST节点类型进行合并,在存在所述第二AST节点类型的情况下,将当前AST节点类型与所述第二AST节点类型进行合并。
在N个AST节点类型中,将具有相同类型特征的不同AST节点类型进行合并,以及,将对应于不同形式且类型相同的AST节点类型进行合并时,可以针对每个AST节点类型,在N-1个AST节点类型中,检测是否存在与当前AST节点类型具有相同类型特征的第一AST节点类型,或者,在N-1个AST节点类型中,检测是否存在与当前AST节点类型对应于不同形式且类型相同的第二AST节点类型。
其中,针对当前AST节点类型而言,可以存在对应的第一AST节点类型或者第二AST节点类型,若针对当前AST节点类型,存在至少一个第一AST节点类型,可以将当前AST节点类型与至少一个第一AST节点类型进行类型合并,若针对当前AST节点类型,存在至少一个第二AST节点类型,可以将当前AST节点类型与至少一个第二AST节点类型进行类型合并。
且可以按照预设顺序对N个AST节点类型进行遍历,以实现AST节点类型的合并,且在遍历过程中,对于已经合并的AST节点类型可以忽略。
本发明上述实施过程,通过针对当前AST节点类型,检测是否存在第一AST节点类型或者第二AST节点类型,可以根据检测结果进行AST节点类型进行合并,以减少AST节点类型,将复杂语法进行有效整合,为提供标准节点数据流以及标准解析接口提供保障。
本发明还提供一种可选实施例,在当前可选实施例中,所述根据所述标准解析接口在所述标准节点数据流中进行信息提取,生成所述目标UI对应的结构描述文件和代理文件,包括:
根据所述标准解析接口,在所述标准节点数据流中提取与所述目标UI关联的结构描述信息以及与所述目标UI关联的逻辑信息;
根据所述结构描述信息和UI布局解析架构,生成所述结构描述文件;
根据所述逻辑信息和UI逻辑解析架构,生成所述代理文件。
在根据标准解析接口和标准节点数据流,生成目标UI对应的结构描述文件和代理文件时,可以首先根据M*L个标准解析接口,在标准节点数据流中进行信息提取,获取与目标UI关联的结构描述信息以及与逻辑信息,在完成信息提取之后,可以根据与目标UI关联的结构描述信息和UI布局解析架构,生成目标UI对应的结构描述文件,根据与目标UI关联的逻辑信息和UI逻辑解析架构,生成目标UI对应的代理文件。
根据结构描述信息和UI布局解析架构,生成结构描述文件时,可以在结构描述信息中进一步提取与UI布局解析架构对应的信息生成结构描述文件;在根据逻辑信息和UI逻辑解析架构,生成代理文件时,可以在逻辑信息中进一步提取与UI逻辑解析架构对应的信息生成代理文件。
其中,UI布局解析架构、UI逻辑解析架构均与前端解析器对应,在生成结构描述文件以及代理文件之后,可以由前端解析器对结构描述文件以及代理文件进行解析,以根据对结构描述文件的解析确定UI布局,根据对代理文件的解析确定UI显示逻辑。
本发明上述实施例中,基于标准解析接口在标准节点数据流中提取结构描述信息以及逻辑信息,根据所提取的结构描述信息以及UI布局解析架构生成结构描述文件、根据所提取得逻辑信息以及UI逻辑解析架构生成代理文件,可以通过简单的操作获取需求的文件,降低了二段解析的复杂度。
在本发明上述实施例的基础上,本发明还提供一种可选实施例,在当前可选实施例中,在生成所述结构描述文件和所述代理文件之前,还包括:
在前端解析器发生接口变化的情况下,根据所述前端解析器的接口变化情况,更新与所述前端解析器对应的所述UI布局解析架构和/或所述UI逻辑解析架构;
其中,所述前端解析器用于解析所述结构描述文件确定UI布局,所述前端解析器用于解析所述代理文件确定UI显示逻辑。
UI布局解析架构、UI逻辑解析架构均与前端解析器对应,且前端解析器对应的接口与UI布局解析架构对应的接口、UI逻辑解析架构对应的接口相同,在前端解析器发生接口变化(对应于功能变化)的情况下,可以根据前端解析器的接口变化情况,更新UI布局解析架构和/或UI逻辑解析架构,具体为更新UI布局解析架构和/或UI逻辑解析架构的接口。
在对UI布局解析架构和/或UI逻辑解析架构进行更新之后,可以根据更新后的UI布局解析架构,在结构描述信息中进一步提取对应的信息,生成结构描述文件;和/或,根据更新后的UI逻辑解析架构,在逻辑信息中进一步提取对应的信息,生成代理文件。
例如,前端解析器新增了动画功能,则可以更新UI布局解析架构,具体为针对UI布局解析架构新增动画接口,实现针对UI布局解析架构新增animation字段,然后根据更新后的UI布局解析架构,在结构描述信息(包括动画信息)中进一步提取对应的信息,生成支持动画功能的结构描述文件,以实现针对UI增加动画效果。
或者,前端解析器增加了判断功能,则可以更新UI布局解析架构,具体为针对UI布局解析架构增加if字段,相当于增加判断接口,在更新UI布局解析架构之后,实现新增判断功能,获取支持判断功能的结构描述文件。例如,判断是否为夜间模式,若属于夜间模式,则可以获取支持在夜间模式下进行UI颜色切换的结构描述文件,以实现在夜间模式下进行UI颜色的切换。
本发明上述实施过程,在前端解析器发生变化时,通过更新UI布局解析架构和/或UI逻辑解析架构,可以实现低成本改造二段解析,且由于一段解析的结果内容较丰富,可以用做UI和逻辑动态化的数据源。
下面通过一具体实例对本发明实施例提供的用户界面文件生成方法进行阐述,如图2所示,包括:
步骤201、基于AST对目标UI对应的目标源码文件进行处理,获取第一预设数目个AST节点。
步骤202、根据第一预设数目个AST节点确定第二预设数目个AST节点类型,将第二预设数目个AST节点类型中的部分AST节点类型进行过滤,获取N个AST节点类型。
步骤203、针对N个AST节点类型中的每个AST节点类型,对当前AST节点类型对应的每个AST节点中的第一内容进行过滤,获取当前AST节点类型对应的每个AST节点的目标内容。
步骤204、根据预设策略对N个AST节点类型归并,确定M个第一目标AST节点类型。
步骤205、针对每个第一目标AST节点类型,根据当前第一目标AST节点类型对应的AST节点的目标内容生成目标数据集合,汇聚M个目标数据集合获取标准节点数据流,并根据每个第一目标AST节点类型对应的L个标准解析接口,获取M*L个标准解析接口。
步骤206、根据获取的标准解析接口,在标准节点数据流中提取与目标UI关联的结构描述信息以及逻辑信息。
步骤207、根据结构描述信息和UI布局解析架构,生成结构描述文件。
步骤208、根据逻辑信息和UI逻辑解析架构,生成代理文件。
上述实施流程,可以基于AST快速根据目标源码文件生成目标UI对应的结构描述文件和代理文件,无需人工转义,且通过二段解析模式进行文件生成,降低了第二阶段的复杂度,提高了源码文件的可维护性。
以上为本发明实施例提供的用户界面文件生成方法的整体实施过程,通过对目标UI对应的目标源码文件进行处理获取AST节点,并根据预设策略对基于AST节点在P个AST节点类型中确定的N个AST节点类型进行类型归并,生成标准节点数据流和标准解析接口,进而生成结构描述文件和代理文件,可以实现基于AST生成结构描述文件和代理文件,无需人工转义且降低了开发难度,同时降低了业务复杂度,提高了源码文件的可维护性。
进一步的,通过过滤AST节点类型可以获取需求的AST节点类型,实现简化AST节点类型;通过过滤第一内容,可以精简数据内容,为提供标准节点数据流提供保障;通过提供标准节点数据流可以为UI布局和逻辑动态化提供有效数据源;通过采用二段解析的模式进行处理,可以在降低业务复杂度的同时,在前端解析器变化时低成本改造二段解析。
本发明实施例还提供一种用户界面文件生成装置,如图3所示,包括:
第一处理模块301,用于基于抽象语法树AST对目标用户界面UI对应的目标源码文件进行处理,获取第一预设数目个AST节点,并根据所述第一预设数目个AST节点在预设的P个AST节点类型中确定N个AST节点类型,所述P个AST节点类型对应于包括至少一个源码文件的源码文件集合,每个所述源码文件对应于一UI,各所述UI基于Flutter引擎进行图形渲染;
确定模块302,用于根据预设策略对所述N个AST节点类型归并,确定M个第一目标AST节点类型,M、N为正整数,M小于N,且M大于或者等于1;
第一生成模块303,用于基于所述M个第一目标AST节点类型,生成包括标准节点数据流和标准解析接口的目标语法树;
第二生成模块304,用于根据所述标准解析接口在所述标准节点数据流中进行信息提取,生成所述目标UI对应的结构描述文件和代理文件。
可选的,所述第一处理模块包括:
第一处理子模块,用于基于所述AST对所述目标源码文件进行分析、组装,将所述目标源码文件转化为对应的AST信息,所述AST信息包括所述第一预设数目个AST节点;
确定子模块,用于根据所述第一预设数目个AST节点,在所述P个AST节点类型中确定第二预设数目个AST节点类型,每个所述AST节点类型对应于至少一个AST节点;
获取子模块,用于基于第一过滤原则,将所述第二预设数目个AST节点类型中的部分AST节点类型进行过滤,获取所述N个AST节点类型。
可选的,该装置还包括:
获取模块,用于在所述确定模块根据预设策略对所述N个AST节点类型归并,确定M个第一目标AST节点类型之前,针对所述N个AST节点类型中的每个AST节点类型,基于第二过滤原则,对当前AST节点类型对应的每个AST节点中的第一内容进行过滤,获取当前AST节点类型对应的每个AST节点的目标内容;
其中,所述第一内容对应的重要等级小于预设等级。
可选的,所述确定模块包括:
第二处理子模块,用于在所述N个AST节点类型中,将具有相同类型特征的不同AST节点类型进行合并,以及,将对应于不同形式且类型相同的AST节点类型进行合并,在K个目标AST节点类型中获取所述M个第一目标AST节点类型;
其中,对应于不同形式且类型相同的AST节点类型属于不同的AST节点类型,所述P个AST节点类型归并后对应于所述K个目标AST节点类型。
可选的,所述第二处理子模块包括:
检测单元,用于针对每个AST节点类型,在N-1个AST节点类型中,检测是否存在与当前AST节点类型具有相同类型特征的第一AST节点类型,或者,检测是否存在与当前AST节点类型对应于不同形式且类型相同的第二AST节点类型;
合并单元,用于在存在所述第一AST节点类型的情况下,将当前AST节点类型与所述第一AST节点类型进行合并,在存在所述第二AST节点类型的情况下,将当前AST节点类型与所述第二AST节点类型进行合并。
可选的,所述第一生成模块包括:
生成汇聚子模块,用于针对每个第一目标AST节点类型,根据当前第一目标AST节点类型对应的AST节点的所述目标内容生成目标数据集合,汇聚M个所述目标数据集合获取所述标准节点数据流;
第一提取子模块,用于在K个目标AST节点类型对应的K*L个标准解析接口中,提取所述M个第一目标AST节点类型对应的M*L个所述标准解析接口,其中每个所述目标AST节点类型均对应于L个标准解析接口,所述P个AST节点类型归并后对应于所述K个目标AST节点类型。
可选的,所述第二生成模块包括:
第二提取子模块,用于根据所述标准解析接口,在所述标准节点数据流中提取与所述目标UI关联的结构描述信息以及与所述目标UI关联的逻辑信息;
第一生成子模块,用于根据所述结构描述信息和UI布局解析架构,生成所述结构描述文件;
第二生成子模块,用于根据所述逻辑信息和UI逻辑解析架构,生成所述代理文件。
可选的,在所述第二生成模块生成所述结构描述文件和所述代理文件之前,该装置还包括:
更新模块,用于在前端解析器发生接口变化的情况下,根据所述前端解析器的接口变化情况,更新与所述前端解析器对应的所述UI布局解析架构和/或所述UI逻辑解析架构;
其中,所述前端解析器用于解析所述结构描述文件确定UI布局,所述前端解析器用于解析所述代理文件确定UI显示逻辑。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
另一方面,本发明实施例还提供了一种电子设备,包括存储器、处理器、总线以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述用户界面文件生成方法中的步骤。
举例如下,图4示出了一种电子设备的实体结构示意图。
如图4所示,该电子设备可以包括:处理器(processor)410、通信接口(Communications Interface)420、存储器(memory)430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储器430中的逻辑指令,执行以下步骤:基于抽象语法树AST对目标用户界面UI对应的目标源码文件进行处理,获取第一预设数目个AST节点,并根据所述第一预设数目个AST节点在预设的P个AST节点类型中确定N个AST节点类型,所述P个AST节点类型对应于包括至少一个源码文件的源码文件集合,每个所述源码文件对应于一UI,各所述UI基于Flutter引擎进行图形渲染;根据预设策略对所述N个AST节点类型归并,确定M个第一目标AST节点类型,M、N为正整数,M小于N,且M大于或者等于1;基于所述M个第一目标AST节点类型,生成包括标准节点数据流和标准解析接口的目标语法树;根据所述标准解析接口在所述标准节点数据流中进行信息提取,生成所述目标UI对应的结构描述文件和代理文件。
此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
再一方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各实施例提供的用户界面文件生成方法中的步骤。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种用户界面文件生成方法,其特征在于,包括:
基于抽象语法树AST对目标用户界面UI对应的目标源码文件进行处理,获取第一预设数目个AST节点,并根据所述第一预设数目个AST节点在预设的P个AST节点类型中确定N个AST节点类型,所述P个AST节点类型对应于包括至少一个源码文件的源码文件集合,每个所述源码文件对应于一UI,各所述UI基于Flutter引擎进行图形渲染;
针对所述N个AST节点类型中的每个AST节点类型,基于第二过滤原则,对当前AST节点类型对应的每个AST节点中的第一内容进行过滤,获取当前AST节点类型对应的每个AST节点的目标内容;其中,所述第一内容对应的重要等级小于预设等级;
根据预设策略对所述N个AST节点类型归并,确定M个第一目标AST节点类型,M、N为正整数,M小于N,且M大于或者等于1;
基于所述M个第一目标AST节点类型,生成包括标准节点数据流和标准解析接口的目标语法树;
根据所述标准解析接口在所述标准节点数据流中进行信息提取,生成所述目标UI对应的结构描述文件和代理文件。
2.根据权利要求1所述的方法,其特征在于,所述基于抽象语法树AST对目标用户界面UI对应的目标源码文件进行处理,获取第一预设数目个AST节点,并根据所述第一预设数目个AST节点在预设的P个AST节点类型中确定N个AST节点类型,包括:
基于所述AST对所述目标源码文件进行分析、组装,将所述目标源码文件转化为对应的AST信息,所述AST信息包括所述第一预设数目个AST节点;
根据所述第一预设数目个AST节点,在所述P个AST节点类型中确定第二预设数目个AST节点类型,每个所述AST节点类型对应于至少一个AST节点;
基于第一过滤原则,将所述第二预设数目个AST节点类型中的部分AST节点类型进行过滤,获取所述N个AST节点类型。
3.根据权利要求1所述的方法,其特征在于,所述根据预设策略对所述N个AST节点类型归并,确定M个第一目标AST节点类型,包括:
在所述N个AST节点类型中,将具有相同类型特征的不同AST节点类型进行合并,以及,将对应于不同形式且类型相同的AST节点类型进行合并,在K个目标AST节点类型中获取所述M个第一目标AST节点类型;
其中,对应于不同形式且类型相同的AST节点类型属于不同的AST节点类型,所述P个AST节点类型归并后对应于所述K个目标AST节点类型。
4.根据权利要求3所述的方法,其特征在于,所述在所述N个AST节点类型中,将具有相同类型特征的不同AST节点类型进行合并,以及,将对应于不同形式且类型相同的AST节点类型进行合并,包括:
针对每个AST节点类型,在N-1个AST节点类型中,检测是否存在与当前AST节点类型具有相同类型特征的第一AST节点类型,或者,检测是否存在与当前AST节点类型对应于不同形式且类型相同的第二AST节点类型;
在存在所述第一AST节点类型的情况下,将当前AST节点类型与所述第一AST节点类型进行合并,在存在所述第二AST节点类型的情况下,将当前AST节点类型与所述第二AST节点类型进行合并。
5.根据权利要求1所述的方法,其特征在于,所述基于所述M个第一目标AST节点类型,生成包括标准节点数据流和标准解析接口的目标语法树,包括:
针对每个第一目标AST节点类型,根据当前第一目标AST节点类型对应的AST节点的所述目标内容生成目标数据集合,汇聚M个所述目标数据集合获取所述标准节点数据流;
在K个目标AST节点类型对应的K*L个标准解析接口中,提取所述M个第一目标AST节点类型对应的M*L个所述标准解析接口,其中每个所述目标AST节点类型均对应于L个标准解析接口,所述P个AST节点类型归并后对应于所述K个目标AST节点类型。
6.根据权利要求1所述的方法,其特征在于,所述根据所述标准解析接口在所述标准节点数据流中进行信息提取,生成所述目标UI对应的结构描述文件和代理文件,包括:
根据所述标准解析接口,在所述标准节点数据流中提取与所述目标UI关联的结构描述信息以及与所述目标UI关联的逻辑信息;
根据所述结构描述信息和UI布局解析架构,生成所述结构描述文件;
根据所述逻辑信息和UI逻辑解析架构,生成所述代理文件。
7.根据权利要求6所述的方法,其特征在于,在生成所述结构描述文件和所述代理文件之前,还包括:
在前端解析器发生接口变化的情况下,根据所述前端解析器的接口变化情况,更新与所述前端解析器对应的所述UI布局解析架构和/或所述UI逻辑解析架构;
其中,所述前端解析器用于解析所述结构描述文件确定UI布局,所述前端解析器用于解析所述代理文件确定UI显示逻辑。
8.一种用户界面文件生成装置,其特征在于,包括:
第一处理模块,用于基于抽象语法树AST对目标用户界面UI对应的目标源码文件进行处理,获取第一预设数目个AST节点,并根据所述第一预设数目个AST节点在预设的P个AST节点类型中确定N个AST节点类型,所述P个AST节点类型对应于包括至少一个源码文件的源码文件集合,每个所述源码文件对应于一UI,各所述UI基于Flutter引擎进行图形渲染;
获取模块,针对所述N个AST节点类型中的每个AST节点类型,基于第二过滤原则,对当前AST节点类型对应的每个AST节点中的第一内容进行过滤,获取当前AST节点类型对应的每个AST节点的目标内容;其中,所述第一内容对应的重要等级小于预设等级;
确定模块,用于根据预设策略对所述N个AST节点类型归并,确定M个第一目标AST节点类型,M、N为正整数,M小于N,且M大于或者等于1;
第一生成模块,用于基于所述M个第一目标AST节点类型,生成包括标准节点数据流和标准解析接口的目标语法树;
第二生成模块,用于根据所述标准解析接口在所述标准节点数据流中进行信息提取,生成所述目标UI对应的结构描述文件和代理文件。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的用户界面文件生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110010030.0A CN112612470B (zh) | 2021-01-05 | 2021-01-05 | 用户界面文件生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110010030.0A CN112612470B (zh) | 2021-01-05 | 2021-01-05 | 用户界面文件生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112612470A CN112612470A (zh) | 2021-04-06 |
CN112612470B true CN112612470B (zh) | 2022-04-22 |
Family
ID=75253317
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110010030.0A Active CN112612470B (zh) | 2021-01-05 | 2021-01-05 | 用户界面文件生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112612470B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114461292B (zh) * | 2021-12-10 | 2024-05-28 | 奇安信科技集团股份有限公司 | 分发文件检查条件的传输方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111190594A (zh) * | 2019-12-23 | 2020-05-22 | 北京健康之家科技有限公司 | Vue组件的文档生成方法及装置 |
CN111857709A (zh) * | 2020-06-12 | 2020-10-30 | 北京三快在线科技有限公司 | React组件和Flutter组件的映射方法、装置、电子设备及存储介质 |
CN111880777A (zh) * | 2020-06-23 | 2020-11-03 | 北京三快在线科技有限公司 | 程序信息下发方法、装置、电子设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140282373A1 (en) * | 2013-03-15 | 2014-09-18 | Trinity Millennium Group, Inc. | Automated business rule harvesting with abstract syntax tree transformation |
CN111209004B (zh) * | 2019-12-30 | 2023-09-01 | 北京水滴科技集团有限公司 | 代码转换方法及装置 |
-
2021
- 2021-01-05 CN CN202110010030.0A patent/CN112612470B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111190594A (zh) * | 2019-12-23 | 2020-05-22 | 北京健康之家科技有限公司 | Vue组件的文档生成方法及装置 |
CN111857709A (zh) * | 2020-06-12 | 2020-10-30 | 北京三快在线科技有限公司 | React组件和Flutter组件的映射方法、装置、电子设备及存储介质 |
CN111880777A (zh) * | 2020-06-23 | 2020-11-03 | 北京三快在线科技有限公司 | 程序信息下发方法、装置、电子设备 |
Non-Patent Citations (1)
Title |
---|
"做了2个多月的设计和编码,我梳理了Flutter动态化的方案对比及最佳实现";阿里云云栖号;《https://www.cnblogs.com/yunqishequ/p/10069973.html》;20181205;第1页第14行至第4页最后1行 * |
Also Published As
Publication number | Publication date |
---|---|
CN112612470A (zh) | 2021-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111045655B (zh) | 一种页面渲染的方法、装置、渲染服务器和存储介质 | |
CN110502227B (zh) | 代码补全的方法及装置、存储介质、电子设备 | |
WO2021128973A1 (zh) | 一种软件代码的多变更版本合并方法及装置 | |
CN107798123B (zh) | 知识库及其建立、修改、智能问答方法、装置及设备 | |
CN111078729B (zh) | 医疗数据溯源方法、装置、系统、存储介质以及电子设备 | |
CN110427188B (zh) | 单测断言程序的配置方法、装置、设备及存储介质 | |
CN111008020B (zh) | 将逻辑表达式解析为通用查询语句的方法 | |
CN102375746A (zh) | 一种输入法自适应应用程序的方法及装置 | |
US20180089314A1 (en) | Messaging digest | |
CN111708805A (zh) | 数据查询方法、装置、电子设备及存储介质 | |
CN112612470B (zh) | 用户界面文件生成方法及装置 | |
CN111508562A (zh) | 流程描述性语言的可视化显示方法、装置、设备和介质 | |
CN111176656A (zh) | 一种复杂数据匹配方法及介质 | |
CN113505278B (zh) | 图匹配方法、装置、电子设备及存储介质 | |
CN103678349B (zh) | 一种垃圾数据过滤方法和装置 | |
CN112582073B (zh) | 医疗信息获取方法、装置、电子设备和介质 | |
CN112069305B (zh) | 数据筛选方法、装置及电子设备 | |
CN112883088B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN115904480B (zh) | 代码重构方法、装置、电子设备及存储介质 | |
CN114385173A (zh) | 编译方法、装置、设备及存储介质 | |
CN116643739A (zh) | 决策引擎实现方法、装置、设备及存储介质 | |
CN116048584A (zh) | 一种系统升级方法、装置、设备及存储介质 | |
CN115525321A (zh) | 分布式任务生成方法、装置、设备及存储介质 | |
CN115544204A (zh) | 一种不良语料过滤方法以及系统 | |
JPH11272503A (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 |