使用 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 字符串之间的所有内容。请参见演示。
所以我正在尝试使用 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 字符串之间的所有内容。请参见演示。