请教关于提取文件中的函数名以及所关联的行号范围

jesson1018 2011-09-13 02:26:58
请教各位大侠一个问题:
如何能够将一个文件中的所有的函数名称准确提取出来,并且列出每个函数所对应的行号范围。我现在所能想到的就是用perl脚本来实现,但是不知大侠们有木有好的idea??
谢谢!
...全文
104 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
CCDDR 2011-09-14
  • 打赏
  • 举报
回复
2楼那个查得是 python风格的函数
iambic 2011-09-14
  • 打赏
  • 举报
回复
ctags的使用请自己google下。网上的资源很多,无须赘述。
还有很多ctags的替代品,比如cscope什么的。都是可以解析源代码(各种语言的),然后生成类似tags文件。
如果你对perl比较熟,perl里应该有不少模块可以干这种事情。我简单搜了下:C::Scan,GCC::TranslationUnit,Parse::Eyapp等等。但我没用过,就不做具体推荐了。
jesson1018 2011-09-14
  • 打赏
  • 举报
回复
我说的是关于C/C++文件的函数,也就是说找出这些文件中的所有函数已经所对应的行号范围,CCDDR所要查找的是C/C++风格的函数吗?
iambic: 请问你说的 ctags 是如何使用的?
iambic 2011-09-13
  • 打赏
  • 举报
回复
ctags就可以。
CCDDR 2011-09-13
  • 打赏
  • 举报
回复
楼主没说清楚要解释的是那种语言写的代码,如果是PYTHON 函数定义主要是 def 和 lambda
需要写个解释器

下面代码是查找 def定义函数的函数名和行号,函数对应行号范围比较麻烦没往下写

import re
f=open(r'test.py','r')
lines=f.readlines()
index = 0
for eachline in lines:
l = re.findall(r'def\s*(?P<t>[^\s,\(]+)', eachline)
if len(l) > 0:
print '函数名:' + str(l[0]) + ', 所在行行号:' + str(index)
index += 1
jiuchang 2011-09-13
  • 打赏
  • 举报
回复
真要实现起来还是挺麻烦的

可以参考下网上开源的工具

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧