【技术实现步骤摘要】
基于使用链的宏文本展开方法、电子设备和介质
[0001]本专利技术涉及计算机
,尤其涉及一种基于使用链的宏文本展开方法
、
电子设备和介质
。
技术介绍
[0002]宏定义允许用户定义一个文本的别名,部分编程语言支持宏定义语法,例如
System Verilog
语言
。
在代码语义解析之前的预处理阶段,需要先用宏展开文本替换宏文本,从而能够正确的解析设计代码语义
。
预处理阶段的替换操作会改变用户的原始代码结构,而在代码编辑软件或者代码调试软件中,一般需要保持用户的原始代码结构,同时可以采取某些方式提供可以查看宏展开文本的方法
。
但在此之前,程序必须能够对宏的文本进行展开
。
[0003]在基于文件和行号的宏定位体系中,如果加载同一个文件两次,而两次之间对同一个宏有不同的定义时,则会遇到宏内容互相冲突的场景,程序将无法准确的解析出宏文本内容,由此可知,如何实现在宏内容冲突时快速准确解析出宏文本成为亟待解决的技术问题
。
技术实现思路
[0004]本专利技术目的在于,提供一种基于使用链的宏文本展开方法
、
电子设备和介质,能够在宏内容冲突时快速准确地解析出宏文本
。
[0005]根据本专利技术第一方面,提供了一种基于使用链的宏文本展开方法,包括:
[0006]步骤
S1、
基于源代码生成树形结构使用链,所述树形结构使用链中的每个 ...
【技术保护点】
【技术特征摘要】
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
;步骤<...
【专利技术属性】
技术研发人员:张邦全,杨胜康,赵建,
申请(专利权)人:上海合见工业软件集团有限公司成都融见软件科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。