Pot*_*ter 13
标准化过程完全是实用主义.在标准中包含RE语法是有好处的,只要它正确指定,但丢弃一个没有好处.
排除将使图书馆实施者更容易应用"100%C++ 11兼容"徽章,但谁真正关心?无论如何,没有人应该提出这样的要求,只有无知的PHB会寻找它.库总是有错误,防止达到100%,一个好的库有多余的功能.
请注意,所有包含的语法都是由现有的国际标准指定的.因此,C++委员会需要付出很少的努力.只是§28.13,这是几页长.
如果他们省略了标准化语法,那么不同的标准库实现者将以不同的名称添加它,从而导致不兼容.对于仅由流行的库定义的语法来说,这不太可能发生,其中库实现者将负责C++接口,而不是标准库供应商.
这包含在TR1 提案中。我将尝试总结。
建立在现有标准的基础上而不是自行制定,这似乎是谨慎的做法。
确定了他们可以建立的两个现有标准:POSIX RE 和 ECMAScript RE。Perl RE 被排除在外,因为它们没有标准化。(有理智的人可能会不同意。)此外,ECMAScript RE 被视为 Perl RE 的一个更简单的子集,它涵盖了最有用(或者可能是最常用)的功能。
在这两者中,POSIX RE 的“最左边最长”实现在重要特性上表现不佳,例如非贪婪重复,并且与当今大多数 RE 引擎的工作方式不一致。
另一方面,ECMAScript RE 缺乏 POSIX RE 的本地化支持。因此,他们扩展了 ECMAScript RE 以包含 POSIX-RE 风格的本地化支持。
POSIX RE 支持作为可选内容包含在内,因为它的行为与 ECMAScript RE 不同,足以证明它是一个标准选项。POSIX 标准带有两种语法:基本语法和扩展语法。awk、grep 和 egrep RE 都只是基本或扩展 POSIX 语法的微不足道的变体,而不是真正独立的语法。
所以:两个标准,三个语法,六个变体。
归档时间: |
|
查看次数: |
2142 次 |
最近记录: |