Существует ли стандартная грамматика С++?

Указывает ли стандарт на официальную грамматику С++?

Я искал, но ничего не нашел.

Кроме того, я хочу немного прочитать о грамматике С++, например, какую категорию грамматик она вписывает и т.д. Полезны ссылки, указывающие на меня в правильном направлении.

По категории, я имею в виду

Нажмите, чтобы увеличить взято из здесь.

Ответ 1

Да, да.

Грамматика подробно описана во всем стандарте и суммирована в Приложении A: Краткий обзор грамматики (это Приложение A как в стандарте С++ 03, так и в проекте окончательного комитета С++ 0x).

Вы можете купить стандарт С++ 03, или вы можете загрузить С++ 0x FCD (это документ n3092 на этой странице).

Чтобы ответить на вопрос, в какой категории? вопрос, грамматика С++ не является контекстно-бесплатной (также см. вопросы, связанные с ответами на этот вопрос, у них есть дополнительные примеры проблем, связанных с грамматикой С++ и синтаксический анализ С++).

Ответ 2

Алессио Маркетти поставил гиперссылку BNF-грамматики для С++ вверх по http://www.nongnu.org/hcb/.

Все, что связано друг с другом и на одной странице, позволяет легко перемещаться между правилами.

Ответ 3

Эндрю Биркетт имеет подробный обзор синтаксического анализа С++ на своем веб-сайте. Он охватывает некоторые трудности при создании грамматики С++ (смешивание лексического, синтаксического и семантического анализа) и включает ссылки на несколько грамматик С++.

Ответ 4

Bjarne Stroustrup, создатель С++, написал книгу под названием Язык программирования С++, который был обновлен много раз (я читал 3-е издание около 10 лет назад). Я помню, что у него были очень технические подробности относительно грамматики (предварительный процессор и компилятор).

Вероятно, вы можете найти эту книгу в своих книжных магазинах, она может предложить вам больше удовольствия, чем стандартный документ от ANSI, в зависимости от того, насколько конкретно вы должны быть.

Ответ 5

Не уверен, но, насколько я понимаю, ссылка Джеймса Макнеллиса (в pdf) содержит примечание на первой странице:

Предупреждение

Этот документ не является ISO Международный стандарт. это распространены для обзора и комментариев. Это могут быть изменены без предварительного уведомления и не может упоминаться как Международный стандарт.

Итак, поиск, и я думаю, что это правильная ссылка на официальный ISO: http://www-d0.fnal.gov/~dladams/cxx_standard.pdf