История изменений
Исправление wandrien, (текущая версия) :
В качестве ошибкоустойчивости синтаксис максимально контекстнонезависимый? В т.ч. закрытие блоков зависит от типа блока?
Тут контекстнонезависимость скорее не средство достижения цели, а сопутствующий результат.
Вот если взять блоки. У нас привычно есть разные виды скобок, которые группируют синтаксические элементы, такие как скобки при вызове функции или скобки для блока в Си.
В Алголе и Паскале такими скобками были также begin
- end
.
Однако затем дизайн Паскаля был справедливо признан многословным и неудобным. Его скобки ничего не дают, только отнимают. Отнимают время на набор, но при этом по своей сути это тот же самый блок {}
.
Дальше эволюция синтаксиса пришла к тому, чтобы блок для compound statement оформлять неявно, делая его неотъемлемой частью другой синтаксической конструкции. Таким образом возникли function .. end
, if ... end
, while ... end
и так далее. Как в Обероне, Луа и им подобных.
Но тут мы приходим к некоторой нелогичности. Нечто, имеющее начало, должно иметь и полагающийся ему конец. Пока у нас не было разного вида «начала», то и разный вид «конца» не требовался.
А в таком подходе начала у нас разные, а конец — одинаковый.
По этой логике Бейсик в своё время пришел к End If
, Ада пришла к end if;
, а я пришел к end:if
. Теперь логичная картина восстановлена. Каждому собственную виду начала полагается такой же вид конца.
контекстнонезависимый
Что касается непосредственно контекстно-независимости. То, в какой мере, для парсинга грамматики, необходимо знать словарь определённых идентификаторов, пока вопрос открытый. У меня нет тотального предубеждения против контекстно-зависимой грамматики. Если в каких-то случаях то будет иметь смысл оставить, я оставлю.
Пока это затрагивает объявления в сишном стиле, но я еще не брался за их переделку.
Я иногда в сложном коде такое оформляю комментами
Исправление wandrien, :
В качестве ошибкоустойчивости синтаксис максимально контекстнонезависимый? В т.ч. закрытие блоков зависит от типа блока?
Тут контекстнонезависимость скорее не средство достижения цели, а сопутствующий результат.
Вот если взять блоки. У нас привычно есть разные виды скобок, которые группируют синтаксические элементы, такие как скобки при вызове функции или скобки для блока в Си.
В Алголе и Паскале такими скобками были также begin
- end
.
Однако затем дизайн Паскаля был справедливо признан многословным и неудобным. Его скобки ничего дают, только отнимают. Отнимают время на набор, но при этом по своей сути это тот же самый блок {}
.
Дальше эволюция синтаксиса пришла к тому, чтобы блок для compound statement оформлять неявно, делая его неотъемлемой частью другой синтаксической конструкции. Таким образом возникли function .. end
, if ... end
, while ... end
и так далее. Как в Обероне, Луа и им подобных.
Но тут мы приходим к некоторой нелогичности. Нечто, имеющее начало, должно иметь и полагающийся ему конец. Пока у нас не было разного вида «начала», то и разный вид «конца» не требовался.
А в таком подходе начала у нас разные, а конец — одинаковый.
По этой логике Бейсик в своё время пришел к End If
, Ада пришла к end if;
, а я пришел к end:if
. Теперь логичная картина восстановлена. Каждому собственную виду начала полагается такой же вид конца.
контекстнонезависимый
Что касается непосредственно контекстно-независимости. То, в какой мере, для парсинга грамматики, необходимо знать словарь определённых идентификаторов, пока вопрос открытый. У меня нет тотального предубеждения против контекстно-зависимой грамматики. Если в каких-то случаях то будет иметь смысл оставить, я оставлю.
Пока это затрагивает объявления в сишном стиле, но я еще не брался за их переделку.
Я иногда в сложном коде такое оформляю комментами
Исправление wandrien, :
В качестве ошибкоустойчивости синтаксис максимально контекстнонезависимый? В т.ч. закрытие блоков зависит от типа блока?
Тут контекстнонезависимость скорее не средство достижения цели, а сопутствующий результат.
Вот если взять блоки. У нас привычно есть разные виды скобок, которые группируют синтаксические элементы, такие как скобки при вызове функции или скобки для блока в Си.
В Алголе и Паскале такими скобками были также begin
- end
.
Однако затем дизайн Паскаля был справедливо признан многословным и неудобным. Его скобки ничего дают, только отнимают. Отнимают время на набор, но при этом по своей сути это тот же самой блок {}
.
Дальше эволюция синтаксиса пришла к тому, чтобы блок для compound statement оформлять неявно, делая его неотъемлемой частью другой синтаксической конструкции. Таким образом возникли function .. end
, if ... end
, while ... end
и так далее. Как в Обероне, Луа и им подобных.
Но тут мы приходим к некоторой нелогичности. Нечто, имеющее начало, должно иметь и полагающийся ему конец. Пока у нас не было разного вида «начала», то и разный вид «конца» не требовался.
А в таком подходе начала у нас разные, а конец — одинаковый.
По этой логике Бейсик в своё время пришел к End If
, Ада пришла к end if;
, а я пришел к end:if
. Теперь логичная картина восстановлена. Каждому собственную виду начала полагается такой же вид конца.
контекстнонезависимый
Что касается непосредственно контекстно-независимости. То, в какой мере, для парсинга грамматики, необходимо знать словарь определённых идентификаторов, пока вопрос открытый. У меня нет тотального предубеждения против контекстно-зависимой грамматики. Если в каких-то случаях то будет иметь смысл оставить, я оставлю.
Пока это затрагивает объявления в сишном стиле, но я еще не брался за их переделку.
Я иногда в сложном коде такое оформляю комментами
Исправление wandrien, :
В качестве ошибкоустойчивости синтаксис максимально контекстнонезависимый? В т.ч. закрытие блоков зависит от типа блока?
Тут контекстнонезависимость скорее не средство достижения цели, а сопутствующий результат.
Вот если взять блоки. У нас привычно есть разные виды скобок, которые группируют синтаксические элементы, такие как скобки при вызове функции или скобки для блока в Си.
В Алголе и Паскале такими скобками были также begin
- end
.
Однако затем дизайн Паскаля был справедливо признан многословным и неудобным. Его скобки ничего дают, только отнимают. Отнимают время на набор, но при этом по своей сути это тот же самой блок {}
.
Дальше эволюция синтаксиса пришла к тому, чтобы блок для compound statement оформлять неявно, делая его неотъемлемой частью другой синтаксической конструкции. Таким образом возникли function .. end
, if ... end
, while ... end
и так далее. Как в Обероне, Луа и им подобных.
Но тут мы приходим к некоторой нелогичности. Нечто, имеющее начало, должно иметь и полагающийся ему конец. Пока у нас не было разного вида «начала», то и разный вид «конца» не требовался.
А в таком подходе начала у нас разные а конец — одинаковый.
По этой логике Бейсик в своё время пришел к End If
, Ада пришла к end if;
, а я пришел к end:if
. Теперь логичная картина восстановлена. Каждому собственную виду начала полагается такой же вид конца.
контекстнонезависимый
Что касается непосредственно контекстно-независимости. То, в какой мере, для парсинга грамматики, необходимо знать словарь определённых идентификаторов, пока вопрос открытый. У меня нет тотального предубеждения против контекстно-зависимой грамматики. Если в каких-то случаях то будет иметь смысл оставить, я оставлю.
Пока это затрагивает объявления в сишном стиле, но я еще не брался за их переделку.
Я иногда в сложном коде такое оформляю комментами
Исходная версия wandrien, :
В качестве ошибкоустойчивости синтаксис максимально контекстнонезависимый? В т.ч. закрытие блоков зависит от типа блока?
Тут контекстнонезависимость скорее не средство достижения цели, а сопутствующий результат.
Вот если взять блоки. У есть разные виды скобок, которые группируют синтаксические элементы, такие как скобки при вызове функции или скобки для блока в Си.
В Алголе и Паскале такими скобками были также begin
- end
.
Однако затем дизайн Паскаля был справедливо признан многословным и неудобным. Его скобки ничего дают, только отнимают. Отнимают время на набор, но при этом по своей сути это тот же самой блок {}
.
Дальше эволюция синтаксиса пришла к тому, чтобы блок для compound statement оформлять неявно, делая его неотъемлемой частью другой синтаксической конструкции. Таким образом возникли function .. end
, if ... end
, while ... end
и так далее. Как в Обероне, Луа и им подобных.
Но тут мы приходим к некоторой нелогичности. Нечто, имеющее начало, должно иметь и полагающийся ему конец. Пока у нас не было разного вида «начала», то и разный вид «конца» не требовался.
А в таком подходе начала у нас разные а конец — одинаковый.
По этой логике Бейсик в своё время пришел к End If
, Ада пришла к end if;
, а я пришел к end:if
. Теперь логичная картина восстановлена. Каждому собственную виду начала полагается такой же вид конца.
контекстнонезависимый
Что касается непосредственно контекстно-независимости. То, в какой мере, для парсинга грамматики, необходимо знать словарь определённых идентификаторов, пока вопрос открытый. У меня нет тотального предубеждения против контекстно-зависимой грамматики. Если в каких-то случаях то будет иметь смысл оставить, я оставлю.
Пока это затрагивает объявления в сишном стиле, но я еще не брался за их переделку.
Я иногда в сложном коде такое оформляю комментами