基于使用行的宏定义文本展开方法、电子设备和介质技术

技术编号:38856717 阅读:23 留言:0更新日期:2023-09-17 10:01
本发明专利技术涉及计算机技术领域,尤其涉及一种基于使用行的宏定义文本展开方法、电子设备和介质,方法包括步骤S1、初始化宏使用行展开列表为空;步骤S2、判断是否包括目标宏使用行的宏展开文本,若是,则将目标宏使用行对应的宏定义展开文本确定为目标展开文本,结束流程,否则,获取目标宏使用行的原始代码设置在代码存储单元中,执行步骤S3;步骤S3、确定当前待展开宏,在代码存储单元中展开当前待展开宏;步骤S4、判断目标宏使用行的宏是否全部展开,若是,则将当前代码存储单元中存储的代码确定为目标宏展开文本,并存储至宏展开列表中,结束流程,否则,返回执行步骤S3。本发明专利技术节省了宏文本展开的内存和计算资源消耗。本展开的内存和计算资源消耗。本展开的内存和计算资源消耗。

【技术实现步骤摘要】
基于使用行的宏定义文本展开方法、电子设备和介质


[0001]本专利技术涉及计算机
,尤其涉及一种基于使用行的宏定义文本展开方法、电子设备和介质。

技术介绍

[0002]宏定义允许用户定义一个文本的别名,部分编程语言支持宏定义语法,例如System Verilog语言。在代码语义解析之前的预处理阶段,需要先用宏展开文本替换宏文本,从而能够正确的解析设计代码语义。预处理阶段的替换操作会改变用户的原始代码结构,而在代码编辑软件或者代码调试软件中,一般需要保持用户的原始代码结构,同时可以采取某些方式提供可以查看宏展开文本的方法。但在此之前,程序必须能够对宏的文本进行展开。
[0003]现有技术中,通常预先将所有的宏定义文本全部逐一展开,需要耗费大量的内存和计算资源。由此可知,如何节省宏文本展开的内存和计算资源消耗成为亟待解决的技术问题。

技术实现思路

[0004]本专利技术目的在于,提供一种基于使用行的宏定义文本展开方法、电子设备和介质,支持动态生成宏展开文本,节省了宏文本展开的内存和计算资源消耗。
[0005]根据本专利技术第一方面,提供了一种基于使用行的宏定义文本展开方法,包括:步骤S1、初始化宏使用行展开列表为空;步骤S2、判断当前宏使用行展开列表中是否包括目标宏使用行的宏展开文本,若包括,则将当前宏使用行展开列表中目标宏使用行对应的宏定义展开文本确定为目标展开文本,结束流程,否则,获取目标宏使用行的原始代码设置在代码存储单元中,执行步骤S3;步骤S3、基于目标宏使用行对应的宏使用列表确定当前待展开宏,在代码存储单元中展开当前待展开宏,所述宏使用列表包括按序排列的宏使用信息;步骤S4、基于目标宏使用行对应的宏使用列表判断目标宏使用行的宏是否全部展开,若是,则将当前代码存储单元中存储的代码确定为目标宏展开文本,并将目标宏使用行和目标宏展开文本存储至宏展开列表中,结束流程,否则,返回执行步骤S3。
[0006]根据本专利技术第二方面,提供一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行本专利技术第一方面所述的方法。
[0007]根据本专利技术第三方面,提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机指令用于执行本专利技术第一方面所述的方法。
[0008]本专利技术与现有技术相比具有明显的优点和有益效果。借由上述技术方案,本专利技术提供的一种基于使用行的宏定义文本展开方法、电子设备和介质可达到相当的技术进步性及实用性,并具有产业上的广泛利用价值,其至少具有以下有益效果:
本专利技术通过宏使用列表动态展开宏使用行,且能通过宏使用行展开列表复用已经展开过的宏使用行的宏展开文本,支持动态生成宏展开文本,节省了宏文本展开的内存和计算资源消耗。
附图说明
[0009]为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0010]图1为本专利技术实施例提供的基于使用行的宏定义文本展开方法流程图。
具体实施方式
[0011]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0012]本专利技术实施例提供了一种基于使用行的宏定义文本展开方法,如图1所示,包括:步骤S1、初始化宏使用行展开列表为空。
[0013]需要说明的是,本专利技术实施例对于使用行的宏文本是按需动态展开的,因此,宏使用行展开列表初始为空。
[0014]步骤S2、判断当前宏使用行展开列表中是否包括目标宏使用行的宏展开文本,若包括,则将当前宏使用行展开列表中目标宏使用行对应的宏定义展开文本确定为目标展开文本,结束流程,否则,获取目标宏使用行的原始代码设置在代码存储单元中,执行步骤S3。
[0015]需要说明的是,通过设置宏使用行展开列表,存储已展开的宏使用行对应的宏展开文本,使得每一宏使用行仅需展开一次。
[0016]步骤S3、基于目标宏使用行对应的宏使用列表确定当前待展开宏,在代码存储单元中展开当前待展开宏,所述宏使用列表包括按序排列的宏使用信息。
[0017]其中,基于宏使用列表确定目标宏使用行中宏展开的顺序,在存储单元中按序注意展开目标宏使用行中的宏。
[0018]步骤S4、基于目标宏使用行对应的宏使用列表判断目标宏使用行的宏是否全部展开,若是,则将当前代码存储单元中存储的代码确定为目标宏展开文本,并将目标宏使用行和目标宏展开文本存储至宏展开列表中,结束流程,否则,返回执行步骤S3。
[0019]本专利技术基于使用行进行宏文本展开,采用动态的方式生成宏全展开文本,极大程度的降低了存储空间和计算资源的需求。
[0020]作为一种实施例,具体可以通过选中代码行的方式确定目标宏使用行,当通过步骤S1

步骤S4获取目标宏使用行对应的目标宏展开文本之后,可以在源代码目标宏使用行的显示位置以嵌入式或者浮窗等形式显示目标宏展开文本。
[0021]作为一种实施例,所述方法还包括:步骤S10、在源代码编译阶段,输出源代码中出现的宏使用行标识以及生成宏使用
行对应的宏使用列表。
[0022]其中,第x个宏使用行标识L
x
对应的宏使用列表为(A
1x
,A
2x
,

,A
ix
,

,A
f(x)x
),A
ix
为L
x
的第i个宏使用信息,i的取值范围为1到f(x),f(x)为L
x
对应的宏使用数量,x的取值范围为1到X,X为源代码中宏使用行总数,A
1x
,A
2x
,

,A
ix
,

,A
f(x)x
按照宏出现的顺序排列,A
ix
={B
ix
, C
ix
,D
ix
},B
ix
为A
ix
对应的宏进入开始列,C
ix
为A
ix
对应的宏原本值,D
ix
为A
ix
对应的宏第一层展开值。
[0023]其中,源代码编译阶段,通过编译软件能够输出源代码中出现的宏使用行标识以及每一宏使用行中每一宏对应的进入开始列、宏原本值和宏第一层展开值。需要说明的是,一些宏中可能会嵌套一层或多层其他的宏,但本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于使用行的宏定义文本展开方法,其特征在于,包括:步骤S1、初始化宏使用行展开列表为空;步骤S2、判断当前宏使用行展开列表中是否包括目标宏使用行的宏展开文本,若包括,则将当前宏使用行展开列表中目标宏使用行对应的宏定义展开文本确定为目标展开文本,结束流程,否则,获取目标宏使用行的原始代码设置在代码存储单元中,执行步骤S3;步骤S3、基于目标宏使用行对应的宏使用列表确定当前待展开宏,在代码存储单元中展开当前待展开宏,所述宏使用列表包括按序排列的宏使用信息;步骤S4、基于目标宏使用行对应的宏使用列表判断目标宏使用行的宏是否全部展开,若是,则将当前代码存储单元中存储的代码确定为目标宏展开文本,并将目标宏使用行和目标宏展开文本存储至宏展开列表中,结束流程,否则,返回执行步骤S3。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:步骤S10、在源代码编译阶段,输出源代码中出现的宏使用行标识以及生成宏使用行对应的宏使用列表;其中,第x个宏使用行标识L
x
对应的宏使用列表为(A
1x
,A
2x
,

,A
ix
,

,A
f(x)x
),A
ix
为L
x
的第i个宏使用信息,i的取值范围为1到f(x),f(x)为L
x
对应的宏使用数量,x的取值范围为1到X,X为源代码中宏使用行总数,A
1x
,A
2x
,

,A
ix
,

,A
f(x)x
按照宏出现的顺序排列,A
ix
={B
ix
,C
ix
,D
ix
},B
ix
为A
ix
对应的宏进入开始列,C
ix
...

【专利技术属性】
技术研发人员:张邦全赵建林航
申请(专利权)人:上海合见工业软件集团有限公司成都融见软件科技有限公司
类型:发明
国别省市:

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

1