怎么解析cpp/c源文件,提取类和函数相关的信息

如何解析cpp/c源文件,提取类和函数相关的信息.
给定一些cpp或者c源文件,要求写一个程序来解析出这些文件里面包含有哪些类,以及包含有哪些函数信息,程序用c++/c#/VB.NET/Perl语言来写都可以.
结果包括:类或者函数的名字,起始行和终止行.

比如一个比较简单的cpp源文件:
1 #include "resource.h"
2 class MyClass
3 {
4 public MyClass()
5 {
6 }
7 private bool TestFunc()
8 {
9 return true;
10 }
11 };

提取的结果比如用xml nodes来描述如下:
<ClassInfo Name="MyClass" StartLine=2 EndLine=11/>
<FunctionInfo Name="MyClass" StartLine=4 EndLine=6/>
<FunctionInfo Name="TestFunc" StartLine=7 EndLine=10/>


------解决方案--------------------
以前老师布置的作业,做过个类似的,光是去注释和引号内容就蛮麻烦了,不过做出来还是比较有意思的。
------解决方案--------------------
就是搞个简单的语法分析嘛,可大可小,可以自己按规则一点点解析,也可以搞到像LR这种复杂算法的,随便了,找本编译原理看看。
------解决方案--------------------
正则表达式
------解决方案--------------------
探讨
正则表达式

------解决方案--------------------
LS如果考虑注释的嵌套就比较麻烦了