Я не знаю, есть ли какие-нибудь железнодорожные схемы для диаграмм C ++ (я не очень ценю эти изображения), но преобразование EBNF в эти диаграммы - чисто механическая работа.
О грамматике C ++: если вы посмотрите на грамматику в приложении к стандарту C ++, то это контекстно-свободная грамматика. Проблема с этой грамматикой в том, что это неоднозначная грамматика. Другое дело, что грамматика принимает строки, которые не являются допустимыми программами на C ++, но это верно для всех типизированных языков с объявлениями переменных. Если грамматика была неразрешимой , это означало бы, что вы не могли бы определить для какой-либо строки, была ли она сгенерирована согласно грамматике или нет. Кстати, это действительно неразрешимая проблема, если данный файл C ++ компилируется, потому что шаблоны полны по Тьюрингу.
Причина, по которой эта неоднозначная грамматика осуждается, состоит в том, что она делает синтаксический анализатор намного более сложным, медленным и / или требующим больше памяти.