Существует ли стандартная грамматика C ++? - PullRequest
27 голосов
/ 17 мая 2010

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

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

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

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

Click to enlarge taken from здесь .

Ответы [ 5 ]

27 голосов
/ 17 мая 2010

Да, это так.

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

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

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

8 голосов
/ 23 октября 2013

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

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

5 голосов
/ 17 мая 2010

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

2 голосов
/ 17 мая 2010

Бьярн Страуструп, создатель C ++, написал книгу «Язык программирования C ++», которая много раз обновлялась (я читал 3-е издание около 10 лет назад). Напомню, в нем были очень технические детали, касающиеся грамматики (препроцессор и компилятор).

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

0 голосов
/ 17 мая 2010

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

Внимание * * 1004

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

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

...