基于使用链的宏文本展开方法技术

技术编号:39593832 阅读:9 留言:0更新日期:2023-12-03 19:49
本发明专利技术涉及计算机技术领域,尤其涉及一种基于使用链的宏文本展开方法

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


[0001]本专利技术涉及计算机
,尤其涉及一种基于使用链的宏文本展开方法

电子设备和介质


技术介绍

[0002]宏定义允许用户定义一个文本的别名,部分编程语言支持宏定义语法,例如
System Verilog
语言

在代码语义解析之前的预处理阶段,需要先用宏展开文本替换宏文本,从而能够正确的解析设计代码语义

预处理阶段的替换操作会改变用户的原始代码结构,而在代码编辑软件或者代码调试软件中,一般需要保持用户的原始代码结构,同时可以采取某些方式提供可以查看宏展开文本的方法

但在此之前,程序必须能够对宏的文本进行展开

[0003]在基于文件和行号的宏定位体系中,如果加载同一个文件两次,而两次之间对同一个宏有不同的定义时,则会遇到宏内容互相冲突的场景,程序将无法准确的解析出宏文本内容,由此可知,如何实现在宏内容冲突时快速准确解析出宏文本成为亟待解决的技术问题


技术实现思路

[0004]本专利技术目的在于,提供一种基于使用链的宏文本展开方法

电子设备和介质,能够在宏内容冲突时快速准确地解析出宏文本

[0005]根据本专利技术第一方面,提供了一种基于使用链的宏文本展开方法,包括:
[0006]步骤
S1、
基于源代码生成树形结构使用链,所述树形结构使用链中的每个节点映射至源代码中一个代码行范围,所述代码行范围为连续代码行范围或离散代码行范围;
[0007]步骤
S2、
基于源代码和所述树形结构使用链,获取宏信息集合
{H1,H2,

,H
n
,

,H
N
}
,其中,
H
n
为第
n
个宏使用行对应的宏信息,
n
的取值范围为1到
N

H
n

(HF
n
,HL
n
,HD
n
,HS
n
,HO
n
)

HF
n

H
n
对应的宏使用处的文件名,
HL
n

H
n
对应的宏使用处的行号,
HD
n

H
n
对应的宏使用行的宏使用列表,宏使用列表包括
H
n
对应的宏使用行对应的按序排列的宏使用信息,
HS
n

HF
n
对应的代码行范围,
HO
n

HF
n
对应的在
HS
n
中的偏移量;
[0008]步骤
S3、
遍历宏信息集合
{H1,H2,

,H
n
,

,H
N
}
,将
HF
n
,HL
n
均相同的
H
n
存储在冲突宏信息集合中,将仅存在唯一
HF
n
,HL
n

H
n
存储在非冲突宏信息集合中;
[0009]步骤
S4、
获取待处理代码行对应的宏使用处的待展开
HF
n
和待展开
HL
n
,若待展开
HF
n
和待展开
HL
n
的组合位于非冲突宏信息集合中,则将非冲突宏信息集合中待展开
HF
n
和待展开
HL
n
的组合对应的
HD
n
确定为目标宏使用列表,执行步骤
S8
;若待展开
HF
n
和待展开
HL
n
的组合位于冲突宏信息集合中,则执行步骤
S5

[0010]步骤
S5、
从冲突宏信息集合中获取所有包含待展开
HF
n
和待展开
HL
n
的组合的
H
n
,生成冲突
H
n
列表;
[0011]步骤
S6、
基于所述树形结构使用链获取待处理代码行对应的待展开
HS
n
,在冲突
H
n
列表中移除代码行范围不为待展开
HS
n

H
n
,若当前冲突
H
n
列表中剩余的
H
n
数量为1,则将当前剩余的
H
n
对应的
HD
n
确定为目标宏使用列表,则执行步骤
S8
,否则,执行步骤
S7

[0012]步骤
S7、
基于所述树形结构使用链获取待处理代码行在待展开
HS
n
中对应的待展开
HO
n
,在冲突
H
n
列表中移除代码行范围不为待展开
HO
n

H
n
,若当前冲突
H
n
列表中剩余的
H
n
数量为1,则将当前剩余的
H
n
对应的
HD
n
确定为目标宏使用列表,则执行步骤
S8

[0013]步骤
S8、
基于目标宏使用列表对所述待处理代码行执行宏文本展开操作

[0014]根据本专利技术第二方面,提供一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行本专利技术第一方面所述的方法

[0015]根据本专利技术第三方面,提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机指令用于执行本专利技术第一方面所述的方法

[0016]本专利技术与现有技术相比具有明显的优点和有益效果

借由上述技术方案,本专利技术提供的一种基于使用链的宏文本展开方法

电子设备和介质可达到相当的技术进步性及实用性,并具有产业上的广泛利用价值,其至少具有以下有益效果:
[0017]本专利技术通过构建形结构使用链本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种基于使用链的宏文本展开方法,包括:步骤
S1、
基于源代码生成树形结构使用链,所述树形结构使用链中的每个节点映射至源代码中一个代码行范围,所述代码行范围为连续代码行范围或离散代码行范围;步骤
S2、
基于源代码和所述树形结构使用链,获取宏信息集合
{H1,H2,

,H
n
,

,H
N
}
,其中,
H
n
为第
n
个宏使用行对应的宏信息,
n
的取值范围为1到
N

H
n

(HF
n
,HL
n
,HD
n
,HS
n
,HO
n
)

HF
n

H
n
对应的宏使用处的文件名,
HL
n

H
n
对应的宏使用处的行号,
HD
n

H
n
对应的宏使用行的宏使用列表,宏使用列表包括
H
n
对应的宏使用行对应的按序排列的宏使用信息,
HS
n

HF
n
对应的代码行范围,
HO
n

HF
n
对应的在
HS
n
中的偏移量;步骤
S3、
遍历宏信息集合
{H1,H2,

,H
n
,

,H
N
}
,将
HF
n
,HL
n
均相同的
H
n
存储在冲突宏信息集合中,将仅存在唯一
HF
n
,HL
n

H
n
存储在非冲突宏信息集合中;步骤
S4、
获取待处理代码行对应的宏使用处的待展开
HF
n
和待展开
HL
n
,若待展开
HF
n
和待展开
HL
n
的组合位于非冲突宏信息集合中,则将非冲突宏信息集合中待展开
HF
n
和待展开
HL
n
的组合对应的
HD
n
确定为目标宏使用列表,执行步骤
S8
;若待展开
HF
n
和待展开
HL
n
的组合位于冲突宏信息集合中,则执行步骤
S5
;步骤
S5、
从冲突宏信息集合中获取所有包含待展开
HF
n
和待展开
HL
n
的组合的
H
n
,生成冲突
H
n
列表;步骤
S6、
基于所述树形结构使用链获取待处理代码行对应的待展开
HS
n
,在冲突
H
n
列表中移除代码行范围不为待展开
HS
n

H
n
,若当前冲突
H
n
列表中剩余的
H
n
数量为1,则将当前剩余的
H
n
对应的
HD
n
确定为目标宏使用列表,则执行步骤
S8
,否则,执行步骤
S7
;步骤<...

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

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

1