使用 Python 正则表达式的 Verilog 输入文本解析

Verilog Input Text Parsing using Python Regex

所以我正在尝试使用 python 解析一些 verilog 文件。我需要找到输入、输出等。但是,在某些文件中,某些输入和输出具有多个位宽,如下所示:

input read_enable,
input [WIDTH-1 : 0] write_data,

我使用正则表达式一次一行地浏览文本文件,所以现在如果该行包含单词 input I 运行:

input_mod = re.search(r'(.*?)input\s(.*?)(\s?)(.*?),', line)
inputs.append(input_mod.group(4)) 

其中输入是我之前声明的列表。我需要提取输入的名称。 我对 python 和正则表达式比较陌生,所以我不确定这是否可行,对吗?有更好的方法吗?

注意:我知道存在 doxygen,但我的老板想要在他们的 python class 中使用本机函数。

.*?\binput\b.*? (\S+),

您可以使用它。inputs.append(input_mod.group(1))这将处理 input 和 [=13= 之前的最后一个非 space 字符串之间的所有内容。请参见演示。

https://regex101.com/r/nS2lT4/4#python