С контекстно-свободной++ или контекстная?



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

a b(c);

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

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

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

Итак, с контекстно-свободной++ или контекстная?

228   0  
    Ничего не найдено.

Добавить ответ:
Отменить.