Диаграммы RailRoad в стиле Pascal - PullRequest
1 голос
/ 21 ноября 2008

Где я могу найти железнодорожные схемы в стиле паскаля для описания синтаксиса C ++? (Как альтернатива EBNF)

Ответы [ 3 ]

1 голос
/ 19 февраля 2009

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

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

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

1 голос
/ 21 ноября 2008

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

0 голосов
/ 21 ноября 2008

Нет ни одного - грамматика C ++ не только не контекстно-свободна, она неразрешима. См. http://yosefk.com/c++fqa/defective.html#defect-2 и соответствующие ссылки для более подробного обсуждения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...