Это скорее вопрос синтаксического анализатора, чем самого факта отказа от точек с запятой. У меня в языке, например, точка с запятой не является обязательным элементом (фактически она почти всегда игнорируется), а перенос строки влияет только на принадлежность декремента или инкремента, а также на `return`/`throw`/`break`/`continue` Например, в следующем коде инкремент будет принадлежать к переменной `x` как постфиксный:
val y = x++
f()
Но если перенести инкремент на следующую строку, то он уже будет префиксным и относится к объекту, который будет возвращать функция `f()`:
val y = x
++f()
Отвечая на вопрос "кого же бесила точка с запятой?" — никого. Данный элемент в синтаксисе на данный момент является больше "наследием" и излишком прошлого, чем действительно необходимым терминалом.
Но при этом точка с запятой, как мне кажется, обязана присутствовать как необязательный элемент. В качестве примера можно привести случай, когда метод изменяет объект так, что при неизвестном заранее количестве итераций он вернет одно необходимое значение, из-за чего в циклах не будет необходимости прописывать тело:
while (analyzer.boolEat(TokenType.COMMA));
Не знаю, можно ли учитывать все это в генерируемых парсерах, так как не использую их. У меня в профиле присутствует пара статей на тему написания синтаксического анализатора (абстрактная теория и отдельно практика), если интересно
Это скорее вопрос синтаксического анализатора, чем самого факта отказа от точек с запятой.
У меня в языке, например, точка с запятой не является обязательным элементом (фактически она почти всегда игнорируется), а перенос строки влияет только на принадлежность декремента или инкремента, а также на `return`/`throw`/`break`/`continue`
Например, в следующем коде инкремент будет принадлежать к переменной `x` как постфиксный:
Но если перенести инкремент на следующую строку, то он уже будет префиксным и относится к объекту, который будет возвращать функция `f()`:
Отвечая на вопрос "кого же бесила точка с запятой?" — никого. Данный элемент в синтаксисе на данный момент является больше "наследием" и излишком прошлого, чем действительно необходимым терминалом.
Но при этом точка с запятой, как мне кажется, обязана присутствовать как необязательный элемент. В качестве примера можно привести случай, когда метод изменяет объект так, что при неизвестном заранее количестве итераций он вернет одно необходимое значение, из-за чего в циклах не будет необходимости прописывать тело:
Не знаю, можно ли учитывать все это в генерируемых парсерах, так как не использую их. У меня в профиле присутствует пара статей на тему написания синтаксического анализатора (абстрактная теория и отдельно практика), если интересно