Докажите, что каждое расширение синтаксиса было бы недопустимым в более старых версиях языка.
По очевидным причинам, новые синтаксические элементы должны быть введены таким образом, который был бы синтаксически недопустим встарая версия языка.Из-за этого у большинства языков есть список зарезервированных слов, который выходит за рамки уже используемых ключевых слов.
Например, когда C # ввел ключевое слово var
в версии 3.0, это потенциально проблематично, поскольку var
былне зарезервированное слово в версии 1.0 C # (возможно, не в 2.0, либо).Таким образом, программа могла бы легально создать тип с именем var
в C # 1.0, но она больше не компилируется в C # 3.0 и более поздних версиях.
Неизменная семантика элементов старого языка больше зависит от того, как работает компиляторпостроен, так как спецификация редко меняется.Если это изменится, то семантика не сохранится.Исключение составляют новые спецификации, которые исправляют вещи, которые в предыдущих версиях спецификации представляли собой неопределенное поведение (но все еще допустимо).С приходит мне в голову.