免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2142 | 回复: 3
打印 上一主题 下一主题

有没有用来解析C/C++文件的模块?或者如何用正则表达式实现一下结果? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-11 15:56 |只看该作者 |倒序浏览
由于代码中存在重复操作,希望能够通过解析头文件中的结构和类来生成对应的代码,不知道有没有解析C/C++文件现成的模块可以用?

或者如下形式的声明应该如何进行匹配?
class CTest
{
public:
     int m_nA;
     union Body{
       int a;
       short b;
       char c;
    };
};

其实也就是{ abc { asd } asdlkjf { af} }找到对应匹配括号的方法

正则表达式该如何写?(暂时排除字符串里出现{}的情况)
各位达人帮忙

论坛徽章:
0
2 [报告]
发表于 2008-07-12 08:52 |只看该作者
用 Parse 相关模块 来写个 parser ?

正则式应该不是不可以吧。不过,你的问题描述的太粗略了,谁能一眼就看出你要干什么?

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
3 [报告]
发表于 2008-07-12 12:09 |只看该作者
原帖由 phrack2561 于 2008-7-11 15:56 发表
由于代码中存在重复操作,希望能够通过解析头文件中的结构和类来生成对应的代码,不知道有没有解析C/C++文件现成的模块可以用?

或者如下形式的声明应该如何进行匹配?
class CTest
{
public:
     int  ...

C++ 不是有模板么?

论坛徽章:
0
4 [报告]
发表于 2008-07-17 14:24 |只看该作者
问题是这样的,为了使得模块间的网络通讯标准化,我们决定使用xml来代替直接的struct传送,也就要把通讯用的struct或class转换成xml文本串。
由于struct比较多,因此想通过某种形式的struct定义使得能够从解析struct定义入手,从而生成对应的用来从struct产生xml以及解析xml转换回struct的代码。
具体如下:
struct TMTParam
{
    // xml:"Id"
    int nId;
    // xml:"FileName"
    char szFileName[64];
    // xml:"FileInfo"
    struct TFileInfo
    {
       // xml:"FileSize"
       int nFileSize;
       // xml:"Path"
       char szPath[64];
    }tFileInfo;
};

那么依据这个定义可产生代码类似于
XMLNodePtr pNode0, pNode1, pNode2;
pNode0 = NewRootNode("xml");
pNode1 = NewChildNode(pNode0, "Id", nId);
pNode1 = NewChildNode(pNode0, "FileName", szFileName);
pNode1 = NewChildNode(pNode0, "FileInfo", NULL);
pNode2 = NewChildNode(pNode1, "FileSize", tFileInfo.nFileSize);
...

这样的话需要先对结构进行解析,获取所有的成员变量及类型等,但这个结构中可能内嵌结构或者联合数据类型之类的,所以想通过正则匹配检索出来。



另外ls老大说有C++模板是什么意思?是perl解析C++的模块吗?


其实最好是有一个专门用来解析C/C++文件的模块,通过解析得到结构体、函数体等等,不知道有没有现成的可用?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP