Я предпочитаю, чтобы лексер скулил, когда это происходит. Лексер / парсер должен быть строг с синтаксисом; всегда можно ослабить это позже. Если вы небрежны, вы обнаружите, что не можете отменить решение, которое, как вы думали, вы не приняли.
Предположим, что вы изначально решили трактовать " обратную косую черту not-an-escape " как эту пару символов, а "T" это
не спасение сегодня. Некоторое время спустя вы решаете расширить язык и хотите, чтобы "\ T" означало что-то особенное, и вы меняете свой язык.
Вы найдете разгневанную толпу программистов, штурмующих ваш дизайнерский замок,
потому что для них «\ T» означает «\» «T» (или «T» в зависимости от вашего решения по умолчанию),
и ты просто сломал их код. Вы опускаете голову от стыда, отказываетесь от решения,
а потом понимаете ... упс, больше нет доступных escape-символов!
Этот урок относится к любому фрагменту синтаксиса, который недостаточно определен в вашем языке. Если это явно не законно, это должно быть неявно незаконно, и ваш компилятор должен это проверить. Или вы никогда не сможете расширить свой успешный язык.
Если ваш язык не будет успешным, вам может быть все равно.