В C ++ (и, после перевода, в большинстве языков), синтаксическая ошибка, конечно, следующая:
std::string str = "Hello "Jesus""; // oopsquotes
Может ли быть создан C ++-подобный язык, которому не нужны эти кавычки? Может ли компилятор увидеть строку, подобную приведенной выше, и разумно определить, что я не хочу, чтобы строка заканчивалась после Hello
, в общем случае ?
Языки и компиляторы любят требовать, чтобы мы писали точный синтаксис, чтобы избежать двусмысленности, но я не могу придумать не придуманный пример, подобный приведенному выше, где значение может быть чем угодно, кроме ", пожалуйста, введите Hello "Jesus"
в строка". В C ++ «Иисус» должен был бы быть макросом препроцессора, который расширился до некоторого строкового литерала "x"
, чтобы вышеприведенное могло означать что-то еще. Очень важно поддерживать этот потенциальный случай в коде, где такого расширения не существует?
Итак, можно ли создать язык, в котором нам не нужно экранировать кавычки в строковом литерале? Можете ли вы вспомнить какие-нибудь не надуманные контрпримеры? Должен ли существовать такой язык? Возможно, один уже делает ...?
Обсудить.