23

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

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

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

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

Click to enlarge взятую из here.

+30

Категория «ужасный беспорядок». – bmargulies

ответ

24

Да, это так.

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

Вы можете purchase the C++03 standard или вы можете download the C++0x FCD (это документ n3092 на этой странице).

Чтобы ответить на вопрос «в какой категории?» вопрос, the C++ grammar is not context-free (также см. вопросы, связанные с ответами на этот вопрос, у них есть дополнительные примеры проблем, связанных с грамматикой C++ и синтаксический анализ C++).

+1

Последняя ссылка SO хорошая. Кстати, теперь это [C++ контекстно-зависимый или контекстно-зависимый?] (Http: // stackoverflow.com/questions/14589346/is-c-context-free-or-context-sensitive) – iammilind

2

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

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

4

Andrew Birkett имеет подробный обзор синтаксического анализа C++ on his web site. Он охватывает некоторые трудности при создании грамматики C++ (смешивание лексического, синтаксического и семантического анализа) и включает ссылки на несколько грамматик C++.

0

Не уверен, но, насколько я вижу, ссылку Джеймса 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-файлу. Я считаю, что единственный способ: _legitately_ получить копию стандарта ISO - это купить его (по ссылке, которую я дал). –

+0

Ну, тогда мы оба узнали что-то новое сегодня - вы, что эти документы ISO свободно доступны, и я, что ссылка, которую вы предоставили, - это то, что я хочу сохранить на своем ПК (: Спасибо! – Poni

+0

Страница не найдена ошибка на 16 февраля 2017 года. –

7

Alessio Marchetti поставил гиперссылкой грамматики BNF для C++ вверх на http://www.nongnu.org/hcb/.

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

Смежные вопросы