设万维读者为首页 万维读者网 -- 全球华人的精神家园 广告服务 联系我们 关于万维
 
首  页 新  闻 视  频 博  客 论  坛 分类广告 购  物
搜索>> 发表日志 控制面板 个人相册 给我留言
帮助 退出
     
  YDX的博客
  YDX的博客
网络日志正文
C++编译技术探秘 2010-12-01 01:16:59
若干年前,C++的发明者Bjarne Stroustrup曾写道,他在开发C++编译器时最大的错误是没有使用TOP DOWN技术,而是用了YACC。当时,我对此很不解,因为根据我的经验,LL(k)的语法比LALR语法构造要困难。在YACC之后,出现了PCCTS(后称ANTLR)等LL(*)工具,理论上很强大,用起来就发现有各种问题需要人为地处理。

前几天与朋友聚会,其中两人都是COMPILER高手,在大公司专攻COMPILER,闲聊之中谈到C++和编译技术。众所周知,C++标准化后已经变得非常复杂,标准好像上千页。一位朋友提到,业界真懂C++的已经不多了。又提到,新版g++的PARSER没有用工具,全部是手写的。我听罢,相当吃惊,因为当年我们经常参考的就是CFRONT的YACC语法。现代C++,居然手写PARSER,这无疑是奇迹。

回来查了一下,果然如此。整个gcc(g++)的PARSER是2万2千行手写的代码,而且就在同一个文件里 (见链接:http://gcc.gnu.org/viewcvs/branches/gcc-4_4-plugins/gcc/cp/parser.c?revision=157341&view=markup)作者是一个人:Mark Mitchell

只能说这是个牛人。居然手写2万2千行C代码parse如此复杂的C++。也许当年Stroustrup说的就是要这样?
浏览(628) (0) 评论(0)
发表评论
我的名片
-YDX-
注册日期: 2010-08-29
访问总量: 781,704 次
点击查看我的个人资料
Calendar
最新发布
· 给肯特州立大屠杀受难者平反不符
· 除暴安良的正义感超越国家与制度
· 以人民民主制衡封建官僚主义是反
· 为什么中国能拿乒乓球冠军却拿不
· 从杨开慧的死看历史为什么选择了
· 大众社会的操控模式与互联网时代
· 肯特州立事件的平反问题
分类目录
【日志】
· 给肯特州立大屠杀受难者平反不符
· 除暴安良的正义感超越国家与制度
· 以人民民主制衡封建官僚主义是反
· 为什么中国能拿乒乓球冠军却拿不
· 从杨开慧的死看历史为什么选择了
· 大众社会的操控模式与互联网时代
· 肯特州立事件的平反问题
· 什么是哥特建筑--历史知识
· 尝试翻译温家宝总理的几句话
· 华裔女生偷窥、白人男生自杀事件
存档目录
2012-06-03 - 2012-06-03
2012-05-11 - 2012-05-11
2012-04-03 - 2012-04-15
2012-03-02 - 2012-03-29
2012-02-01 - 2012-02-28
2012-01-13 - 2012-01-31
2011-12-04 - 2011-12-28
2011-11-03 - 2011-11-24
2011-10-03 - 2011-10-29
2011-09-01 - 2011-09-25
2011-08-16 - 2011-08-31
2011-07-01 - 2011-07-27
2011-06-04 - 2011-06-29
2011-05-04 - 2011-05-31
2011-04-02 - 2011-04-28
2011-03-05 - 2011-03-28
2011-02-01 - 2011-02-28
2011-01-03 - 2011-01-27
2010-12-01 - 2010-12-31
2010-11-03 - 2010-11-30
2010-10-03 - 2010-10-30
2010-09-29 - 2010-09-30
2010-08-28 - 2010-08-29
 
关于本站 | 广告服务 | 联系我们 | 招聘信息 | 网站导航 | 隐私保护
Copyright (C) 1998-2026. Creaders.NET. All Rights Reserved.