新人求修改.c 函数注释头思路

2015-07-02 14:52:58 +08:00
 dimingxuan
现在有大量的.c文件需要批量修改函数头,类似的格式为
/* xxxxxxxx
xxxxxxxxx
xxxxxxxx
@warning xxxxxx
*/
Xxxx 函数名(xxxxx)
{
Xxxxxxxx
}

函数头中可能包含/* xxx */,@warning也不一定存在。想在函数头末尾添加类似 @html_文件名_函数名 这样的字段。新人刚学python,想用正则,但貌似正则无法支持 /* */的嵌套,搜到网上有人说用pyparsing可以实现,getting started文档比较简单,没看明白怎么使用。ide里面都能区分注释和函数名,所以想请教一下这个问题的处理思路和方法,是否有现成的方式
2977 次点击
所在节点    Python
9 条回复
leavic
2015-07-02 16:00:55 +08:00
不是很清楚你所谓的函数头是哪里,给个具体的修改例子看看。
lilydjwg
2015-07-02 16:10:42 +08:00
这个正则引擎 https://pypi.python.org/pypi/regex 支持嵌套,不过我不觉得用它比 pyparsing 更简单。
dimingxuan
2015-07-02 16:32:54 +08:00
@leavic
大概每个c文件里都是这样的
/*
* @fn fun_add
* @brief xxx
.......
* @warning xx
*/
int fun_add()
{
.....
}
函数头都是在函数定义上方,每个c文件里都包含许多函数。
现在需要改成

/*
* @fn fun_add
* @brief xxx
.......
* @warning xx
@html_文件名_fun_add
*/
int fun_add()
{
.....
}
dimingxuan
2015-07-02 16:37:03 +08:00
@lilydjwg 您的意思是用pyparsing解决问题?
lilydjwg
2015-07-02 17:25:18 +08:00
@dimingxuan 嗯。pyparsing 比起正则来好学多了~
mhycy
2015-07-02 17:29:41 +08:00
目测意思就是: 解析注释,并在注释中插入文档地址
/* */会产生嵌套么?记忆中如果有嵌套的话C的编译器是不能正常处理的
leavic
2015-07-02 20:07:41 +08:00
这,一行行读进来,读到“*/ ”不就是注释的结尾了?再往前面插入一行没什么难度吧。
asxalex
2015-07-03 09:55:06 +08:00
for i in *.c
do
awk '{
if ($2 == "@warning")
{print $0 "\n" " @html_'$i'_" func_name}
else if ($2 == "@fn")
{func_name = $3}
else
{print}
}' $i
done
dimingxuan
2015-07-03 12:14:28 +08:00
@asxalex 多谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/202776

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX