Является ли C++ контекстно-свободным или контекстно-зависимым?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Является ли C++ контекстно-свободным или контекстно-зависимым?

Сообщение Anonymous »

Я часто слышу утверждения, что C++ — контекстно-зависимый язык. Возьмем следующий пример:

Код: Выделить всё

a b(c);
Это определение переменной или объявление функции? Это зависит от значения символа c. Если c является переменной, то a b(c); определяет переменную с именем b типа a. Он инициализируется напрямую с помощью c. Но если c является типом, то a b(c); объявляет функцию с именем b, которая принимает c и возвращает a.

Если вы посмотрите определение контекстно-свободных языков, оно в основном скажет вам, что все грамматические правила должны иметь левые части, состоящие ровно из одного нетерминального символа. С другой стороны, контекстно-зависимые грамматики допускают размещение произвольных строк терминальных и нетерминальных символов в левой части.

Просматривая Приложение А к «Языку программирования C++», я не смог найти ни одного грамматического правила, в левой части которого было бы что-нибудь еще, кроме одного нетерминального символа. Это означало бы, что C++ является контекстно-свободным. (Конечно, каждый контекстно-свободный язык также является контекстно-зависимым в том смысле, что контекстно-свободные языки образуют подмножество контекстно-зависимых языков, но дело не в этом.)

Итак, является ли C++ контекстно-свободным или контекстно-зависимым?

Подробнее здесь: https://stackoverflow.com/questions/145 ... -sensitive
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»