解析代码中的函数参数问题

zhangwuji154 2013-05-20 11:10:45
现在在做一个代码解析的工具,需要找到函数的声明和定义.函数名,还好找.就是函数的参数,因为函数声明可以不写参数名.如
void fun(const char*, int a);
找逗号前边的,可能不是参数名,而是参数类型, 而通过把C语言关键字做个列表来比较,也不是好的办法,因为参数可能是自定义类型,我不想做太复杂去查找类型定义表.
有没有什么好的区别办法?
...全文
216 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
worldy 2013-08-17
  • 打赏
  • 举报
回复
引用 6 楼 woshinia 的回复:
如果确定代码是正确的,可通过编译的,那解析估计不难。 如果不能确定,就需要整体考虑,像编译器那样去操作,先把自定义的类和自定义的结构和数据类型像关键字一样存储起来,什么样的类型允许什么样的操作都是需要考虑的。
先定义语法规则,定义你要实现的标准,再按照定义的规则和标准进行解析
woshinia 2013-08-15
  • 打赏
  • 举报
回复
如果确定代码是正确的,可通过编译的,那解析估计不难。 如果不能确定,就需要整体考虑,像编译器那样去操作,先把自定义的类和自定义的结构和数据类型像关键字一样存储起来,什么样的类型允许什么样的操作都是需要考虑的。
lm_whales 2013-08-15
  • 打赏
  • 举报
回复
//举例 int fun(int x,int); => function declare function = fun result :type=int arg0 :type =int,name =x arg1 :type =int,name =tmp 1) int fun(int x,int y) { } ==> function define function = fun result :type=int arg0 :type =int,name =x arg1 :type =int,name =y 2) int fun(int x,int) { } ===> function define: function = fun result :type=int arg0 :type =int,name =x arg1 :type =int,name =tmp
食人族哲学家 2013-07-17
  • 打赏
  • 举报
回复
神马意思?代码解析工具? 我以为是要解析exe、dll呢 这个自己去看编译原理
lm_whales 2013-07-15
  • 打赏
  • 举报
回复
C只需要类型,不需要名字的,如果没有名字,起个临时名字就行了,要保证不会冲突。 只有先分析参数类型,然后才能找到参数名字。可以这么处理,对所有参数,前加 arg_ 表示有名字的参数,加tmp_表示无名参数。C,C++参数名字只对函数定义有意义,对函数声明无意义。 所以函数声明中的参数名字可以忽略。
yaozhiyong110 2013-05-21
  • 打赏
  • 举报
回复
感觉没什么好办法能容易的解决这个问题...
houjin_cn 2013-05-20
  • 打赏
  • 举报
回复
简单的判断思路: 首先:还是要判断 const unsigned int struct和*& 等关键字和符号; 其次:自定义的数据类型一般不会分为几部分, 比如UINT,DWORD,

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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