此语法独立规则代码产生预期结果
term = ( double_ >> "+" >> term ) [_val = _1 + _2]|
( double_ >> "-" >> term ) [_val = _1 - _2]|
( double_ >> "*" >> term ) [_val = _1 * _2]|
( double_ >> "/" >> term ) [_val = _1 / _2]|
double_ [_val = _1] ;
而这个没有:
term = ( term >> "+" >> term ) [_val = _1 + _2]|
( term >> "-" >> term ) [_val = _1 - _2]|
( term >> "*" >> term ) [_val = _1 * _2]|
( term >> "/" >> term ) [_val = _1 / _2]|
double_ [_val = _1] ;
我想这与递归歧义有关......第二条规则在喂食时会尝试做什么: "1+2+3" ?
是否有一些很好的文档可以示意性地解释精神解析是如何执行的?我的意思是纯 c 或算法,没有模板或类。
编辑:实际上我认为第二条规则应该在编译器时失败,因为它是模棱两可的。