我正在使用一种将模块定义为
<module_name> <inst_name>(.<port_name> (<net_name>)….);
或者
module1 inst1 ( .input a,
.output b;
port b=a;);
我想找到所有这样的模块,同时忽略函数调用。你知道吗
我很难用正则表达式。我在找这个
text1 text2 ( .text3; text4 );
请注意,除文本1和文本2之间的空格外,所有空格都是可选的,可能是新行而不是空格.text3和text4可以是多行的,但都是
text3 - >
.blah1 (blah2),
.blah3 (blah4)
text4->
blah1 blah2=xyz;
blah3 blah4=qwe;
我正在努力
re.split(r"^[a-zA-Z]*\s[a-zA-Z]*\s?\n?\([a-zA-Z]*\s?\n?;[a-zA-Z]*\);", data)
不起作用尽管如此。它抓住一切。我该怎么修?谢谢!! 最终,我确实需要单独获取所有内容(模块/实例/端口/网络)。我想我可以在正则表达式运行后将其拆分。你知道吗
我认为,在尝试提取信息之前,您需要编写一个对语言有足够理解的解析器,以便至少规范化它。您可以手工编写一个简单的解析器,也可以使用PLY或类似的解析框架。你知道吗
为了让你对我的建议有一个更具体的想法,考虑一下 下面的代码定义了一个
parse_data
函数 一个文件的内容,将产生一系列在 该文件:使用这个,你可以写一些东西,将你的样本输入 转化为规范形式:
给定如下输入:
上述代码将产生:
因为它是标准形式,所以更容易修改 通过简单的模式匹配提取信息。你知道吗
请注意,虽然此代码依赖于读取整个源文件 首先,您可以非常容易地编写解析 如果您关心内存利用率的话,请使用片段文件。你知道吗
相关问题 更多 >
编程相关推荐