如何管理 C++ 句法演化?

How is C++ syntactic evolution managed?

除了前端实现者的经验之外,C++ 语法的句法扩展是否需要满足正式标准?也就是说,提议的扩展在被接受之前是否经过任何形式的机械分析?

我问是因为我读过 the two most widely used C++ compilers, g++ and clang, both use hand written, recursive descent parsers。这是否意味着随着语法的发展,它需要保持 LL(1)(或者可能是 LL(n)),但前提是允许/假定/预期某些实现技巧?

C++标准定义了一种语言;它不限制该语言将来可能变成的样子。 (C 标准确实包含一个称为“未来方向”的部分,但这更多是对用户已弃用的功能的警告,以及将来可能保留哪些标识符,而不是对未来标准的限制。)

也就是说,标准过程基本上是保守的,因为委员会包括主要编译器和主要用户组的代表,其中 none 可能会接受使语言更难使用的更改解析。

据我所知,没有对提议的更改进行机械验证。但是有很多经验和专业知识的人进行了大量的人工分析。此外,提议的更改通常伴随着概念验证实施,以证明其可行性和实用性。