Fel*_*bek 4 c++ parsing operators
我一直想知道这件事已经有一段时间了.已经有很多它们可以超载,那么为什么不到最后并允许自定义运营商呢?我认为这可能是一个很好的补充.
我被告知这会使语言难以编译.这让我想知道,C++无法真正设计为易于编译,所以它真的可以撤销吗?当然,如果你使用带有静态表和语法的LR解析器,例如
E ? T + E | T
T ? F * T | F
F ? id | '(' E ')'
Run Code Online (Sandbox Code Playgroud)
它不会起作用.在Prolog中,通常使用运算符优先级解析器AFAIK进行解析,可以轻松定义新的运算符,但语言更简单.现在,语法显然可以被重写为接受identifiers在操作符被硬编码到语法中的每个地方.
还有哪些其他解决方案和解析器方案以及其他哪些因素影响了设计决策?
mvl*_*dic 10
http://www2.research.att.com/~bs/bs_faq2.html#overload-operator
这种可能性已被多次考虑过,但每次我/我们都认为可能出现的问题超过了可能带来的好处.
这不是语言技术问题.即使我在1983年首次考虑它,我也知道它是如何实现的.然而,我的经验是,当我们超越最微不足道的例子时,人们似乎对运营商使用的"明显"含义有着微妙的不同看法.一个经典的例子是
a**b**c.假设**已经表示取幂.现在应该a**b**c是(a**b)**c或a**(b**c)?我认为答案很明显,我的朋友们同意了 - 然后我们发现我们不同意哪个决议是明显的.我的猜想是,这些问题会导致细微的错误.
| 归档时间: |
|
| 查看次数: |
313 次 |
| 最近记录: |