是否有一种标准的C++语法?

36

标准是否规定了正式的 C++ 语法?

我搜过了,没有找到相关内容。

另外,我希望详细了解一下 C++ 语法,例如它属于哪个语法类别等。任何指向正确方向的链接都会有所帮助。

所谓语法类别是指:

点击放大 引自这里


44
这个类别是“可怕的混乱”。 - bmargulies
5个回答

32

是的,它确实有。

语法在标准中有详细描述,并总结于附录A:语法摘要(在C++03标准和C++0x最终委员会草案中都是附录A)。

你可以购买C++03标准,或者下载C++0x FCD(该页面上的文档编号为n3092)。

回答“它属于哪个类别?”的问题时,C++语法不是无上下文语法(也请查看回答中链接的问题;它们提供了与C++语法和解析C++相关的其他示例)。


1
最后一个SO链接很好。顺便说一下,它现在是《C++是上下文无关文法还是上下文相关文法?》 - iammilind

10

Alessio Marchetti在http://www.nongnu.org/hcb/上放置了一个C ++的超链接BNF语法。

将所有内容链接在一起并放在单个页面上,可以轻松地在规则之间导航。


希望它能在某处得到更新。 - sehe
该源代码显示其更新于2018年,但似乎仍然是C++11之前的版本。https://github.com/alx71hub/hcb - sehe

6

Andrew Birkett在他的网站上对C++解析进行了全面的概述(链接)。它涵盖了创建C++语法的一些困难(混合词法、语法和语义分析),并包括几个C++语法的链接。


2
Bjarne Stroustrup是C++的创始人,他写了一本名为《C++程序设计语言》的书,这本书已经更新了很多次(我大约十年前读过第三版)。我记得它对语法(预处理器和编译器)有非常技术性的细节。 你可能可以在当地书店找到这本书,如果你需要更具体的信息,它可能比ANSI的标准文件更令您享受。

0

我不确定,但据我所见,James McNellis的链接(PDF文件)第一页包含以下注释:

警告

本文档不是ISO国际标准。它仅供审查和评论。它可能会在没有通知的情况下发生变化,并且不能被称为国际标准。

因此,我搜索并认为这是官方ISO的正确链接: http://www-d0.fnal.gov/~dladams/cxx_standard.pdf


4
我提供链接的PDF是即将发布的C++0x标准的最终委员会草案;这是下一个C++标准的最新版本,但由于尚未完成和批准,因此不是“官方”的。您提供链接的PDF是C++98标准,在2003年进行了许多更正以形成C++03标准;大部分更改都很小,但也有一些重大变化。我其实有点惊讶能够免费获取到那份PDF;我认为获取ISO标准的唯一合法方式是购买(通过我给出的链接)。 - James McNellis
那么我们今天都学到了新东西 - 你知道这些ISO文档是免费提供的,而我知道你提供的链接是我想要保存在我的电脑上的(: 谢谢! - Poni

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接