Обновить
7
Антон Кочергин@SoraVWV

Пользователь

1
Подписчики
Отправить сообщение

Это скорее вопрос синтаксического анализатора, чем самого факта отказа от точек с запятой.
У меня в языке, например, точка с запятой не является обязательным элементом (фактически она почти всегда игнорируется), а перенос строки влияет только на принадлежность декремента или инкремента, а также на `return`/`throw`/`break`/`continue`
Например, в следующем коде инкремент будет принадлежать к переменной `x` как постфиксный:

val y = x++
f()

Но если перенести инкремент на следующую строку, то он уже будет префиксным и относится к объекту, который будет возвращать функция `f()`:

val y = x
++f()

Отвечая на вопрос "кого же бесила точка с запятой?" никого. Данный элемент в синтаксисе на данный момент является больше "наследием" и излишком прошлого, чем действительно необходимым терминалом.

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

while (analyzer.boolEat(TokenType.COMMA));

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

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Специалист
Java