由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 说c++不难的欢迎来看看这个
相关主题
A C++ STL questionstl container erase in a loop
C++ vector 一边遍历一边删don't understand this list (C++ STL)
呼唤大侠们,我实在不能实现C++泛型的精神。interview questions
c++ interview: iterator 和 pointer区别?一个C++的问题
stl 源代码疑问[合集] 很中肯的批评 STL
STL iterator的疑问问一个有关C++里面list的问题。
如何把文件内容读到2D的vector里?[合集] 关于C++ STL的list的一个问题
一个小程序差点搞死了g++,怎么回事?C++ 用户定义exception的标准用法是什么?
相关话题的讨论汇总
话题: qi话题: lit话题: val话题: qualname话题: bind
进入Programming版参与讨论
1 (共1页)
s******u
发帖数: 501
1
百分之百legal的C++程序,看你能不能理解这是在说什么
name = fhicl::ass [ _val = qi::_1 ];
qualname = fhicl::ass [ _val = qi::_1 ]
>> *((char_('.') > fhicl::ass) [ _val += qi::_1 +
qi::_2 ]
| (char_('[') > fhicl::uint > char_(']')) [ _val += qi::_1
+ qi::_2 + qi::_3]
); // TODO: only some whitespace permitted
// TODO: no whitespace permitted
localref = lit("@local::") > qualname [ _val = qi::_1 ];
dbref = lit("@db::") > qualname [ _val = qi::_1 ];
// Can't use simple, "list context" due to the possibility of one of
// the list elements actually returning multiple elements.
sequence =
lit('[')
> -(((value [ phx::bind(seq_insert_value, qi::_1, _val) ]) | (iter_pos >
> lit("@sequence::") > qualname) [ phx::bind(&seq_insert_sequence,
qi::_2, ref(tbl), ref(in_prolog), _val, qi::_1, s) ]))
> *(lit(',') > ((value [ phx::bind(seq_insert_value, qi::_1, _val) ]) |
(iter_pos >> lit("@sequence::") > qualname) [ phx::bind(&seq_insert_sequence
, qi::_2, ref(tbl), ref(in_prolog), _val, qi::_1, s) ]))
> lit(']');
table =
lit('{')
> *((name >> (lit(':') >> value)
) [ phx::bind(map_insert, qi::_1, qi::_2, _val) ]
| (name >> (lit(':') > lit("@erase"))
) [ phx::bind(map_erase, qi::_1, _val) ]
| (iter_pos >> lit("@table::") > qualname
) [ phx::bind(&insert_table,
qi::_2, ref(tbl), ref(in_prolog), _val,
qi::_1, s) ]
)
> lit('}');
h******k
发帖数: 810
2
STL随便抄一段也能把人看晕了。这算优点吗?java.util.Collections相比起来容易懂
多了。
s******u
发帖数: 501
3
看STL绕是因为很难理解某些代码的目的是什么,有大量的corner case和subtlties要
处理,但至少你知道是在看C++的程序,上面那段直接让我对C++语法的基本理解产生了
严重的怀疑

【在 h******k 的大作中提到】
: STL随便抄一段也能把人看晕了。这算优点吗?java.util.Collections相比起来容易懂
: 多了。

p***o
发帖数: 1252
4
典型的滥用操作符重载,哈哈。不过你要是看过boost spirit也没啥。

【在 s******u 的大作中提到】
: 看STL绕是因为很难理解某些代码的目的是什么,有大量的corner case和subtlties要
: 处理,但至少你知道是在看C++的程序,上面那段直接让我对C++语法的基本理解产生了
: 严重的怀疑

s******u
发帖数: 501
5
这个就是拿boost spirit写的一个简单parser,呵呵
话说spirit是我见过的最变态的一个库,写错一个字编译出错信息有1000页
也难怪C++被人黑,实在是太不友好了

【在 p***o 的大作中提到】
: 典型的滥用操作符重载,哈哈。不过你要是看过boost spirit也没啥。
p***o
发帖数: 1252
6
这种都算DSL了,有了Domain Knowledge,比如编译原理,看起来也还好。
出错信息C++也在加新特性改进。

【在 s******u 的大作中提到】
: 这个就是拿boost spirit写的一个简单parser,呵呵
: 话说spirit是我见过的最变态的一个库,写错一个字编译出错信息有1000页
: 也难怪C++被人黑,实在是太不友好了

j******o
发帖数: 4219
7
工具是为了让人用起来简单而存在的,不是为了炫耀华丽。
k*******d
发帖数: 1340
8
这种code一般不会出现在production 里面把,比STL还难懂。
STL其实不是太难懂,熟悉了一些template的套路即可,算法还是很straight forward
t*****n
发帖数: 4908
9
STL就相当于gre里面的阅读。正常人是不会写这样的文章的。所以lz的代码基本就是自
虐。

forward

【在 k*******d 的大作中提到】
: 这种code一般不会出现在production 里面把,比STL还难懂。
: STL其实不是太难懂,熟悉了一些template的套路即可,算法还是很straight forward
: 的

s******u
发帖数: 501
10
boost spirit用现有的C++语法和工具几乎完美的模拟了EBNF notation。虽然用一个
general purpose language来做一个domain specific language该做的事情是不是合适
本身也有点争议,但是不能否认的是C++有足够的灵活性让他能够担任DSL的功能--很少
有其他的语言能够做到这一点。
另外不要因为你不熟悉或者不理解就简单地下结论说这不是正常人写的,只是你没到这
水平而已

【在 t*****n 的大作中提到】
: STL就相当于gre里面的阅读。正常人是不会写这样的文章的。所以lz的代码基本就是自
: 虐。
:
: forward

n*****t
发帖数: 22014
11
这 naming,ass,真尼玛传神了

+
_1

【在 s******u 的大作中提到】
: 百分之百legal的C++程序,看你能不能理解这是在说什么
: name = fhicl::ass [ _val = qi::_1 ];
: qualname = fhicl::ass [ _val = qi::_1 ]
: >> *((char_('.') > fhicl::ass) [ _val += qi::_1 +
: qi::_2 ]
: | (char_('[') > fhicl::uint > char_(']')) [ _val += qi::_1
: + qi::_2 + qi::_3]
: ); // TODO: only some whitespace permitted
: // TODO: no whitespace permitted
: localref = lit("@local::") > qualname [ _val = qi::_1 ];

s******u
发帖数: 501
12
alphabetic started string => ass 哈哈

【在 n*****t 的大作中提到】
: 这 naming,ass,真尼玛传神了
:
: +
: _1

1 (共1页)
进入Programming版参与讨论
相关主题
C++ 用户定义exception的标准用法是什么?stl 源代码疑问
C++ template function一个问题STL iterator的疑问
也问个STL的问题, 谢谢如何把文件内容读到2D的vector里?
请教一个boost::bind的问题一个小程序差点搞死了g++,怎么回事?
A C++ STL questionstl container erase in a loop
C++ vector 一边遍历一边删don't understand this list (C++ STL)
呼唤大侠们,我实在不能实现C++泛型的精神。interview questions
c++ interview: iterator 和 pointer区别?一个C++的问题
相关话题的讨论汇总
话题: qi话题: lit话题: val话题: qualname话题: bind