免费注册 查看新帖 |

Chinaunix

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

如何解析C源文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-31 18:24 |只看该作者 |倒序浏览
不用bison, flex. 最好有现成的工具, C语言的.

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2007-07-31 22:30 |只看该作者
gcc?

论坛徽章:
0
3 [报告]
发表于 2007-07-31 22:42 |只看该作者
要解释到什么程度?

论坛徽章:
0
4 [报告]
发表于 2007-07-31 23:26 |只看该作者
原帖由 hibernator 于 2007-7-31 18:24 发表
不用bison, flex. 最好有现成的工具, C语言的.

除了这两个工具,你还能用什么? 要不就回到lex+yacc

论坛徽章:
0
5 [报告]
发表于 2007-08-01 02:56 |只看该作者
2 楼的答案确实简洁直观。

论坛徽章:
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
6 [报告]
发表于 2007-08-01 11:13 |只看该作者
原帖由 hibernator 于 2007-7-31 18:24 发表
不用bison, flex. 最好有现成的工具, C语言的.

现成的工具多了去了,gcc、tcc、8c, 等等,等等。

论坛徽章:
0
7 [报告]
发表于 2007-08-01 12:38 |只看该作者
3楼,
我的最初目的是解析数据结构,比如一个结构体,能解析出它内部的成员及类型,支持递归。可能还将有扩展,需要解析函数和宏。

2楼,
gcc -E 确实是个办法,但是我需要提取其中的成员并用另外的程序处理。gcc -E可以去除无用的注释,却仍然不能解决我的问题。

4楼,
yacc+lex或flex+bison已经逐渐被antlr赶超了,实际上antlr主页上有解析C源文件的语法和词法库,但是我试过后觉得在实际应用中价值不大,因为它仅支持GNU C;我现在正尝试修改它的语法,所以我一开始就排除了flex+bison。

6楼,
你说的是不是都是编译器?

我觉得语法高亮和实时错误检查(比如VC.NET)可能实现了类似的功能,所以我觉得解析C源文件应该有比较成熟的做法,不知道谁能提示一把?

论坛徽章:
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
8 [报告]
发表于 2007-08-01 12:51 |只看该作者
原帖由 hibernator 于 2007-8-1 12:38 发表
3楼,
我的最初目的是解析数据结构,比如一个结构体,能解析出它内部的成员及类型,支持递归。可能还将有扩展,需要解析函数和宏。

2楼,
gcc -E 确实是个办法,但是我需要提取其中的成员并用另外的程序处 ...

没错,每个都是编译器

论坛徽章:
0
9 [报告]
发表于 2007-08-02 14:09 |只看该作者
Install Visual Studio 2005

usage .Net Assembly
%VisualStudio2005%\Common7\IDE\PublicAssemblies\Microsoft.VisualC.VSCodeProvider.dll
%VisualStudio2005%\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.VCCodeModel.dll


Dependency .Net framewrok 2.0

[ 本帖最后由 zealic 于 2007-8-2 14:10 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2007-08-02 15:47 |只看该作者
根据你的需求,自己写一个语法分析程序即可。也就几百行就搞定了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP