LINUX.ORG.RU

Нужен совет по придумыванию синтаксиса

 ,


0

4

Какой из двух вариантов управляющих конструкций вам нравится больше и почему? Сопоставьте как с известными вам различными императивными языками, так и собственными представлениями о гармоничности.

ПЕРВЫЙ:

// циклы с предусловием:

while condition do
    statements
end:while

until condition do
    statements
end:until

// циклы с постусловием:

do
    statements
repeat while condition;

do
    statements
repeat until condition;

// вечный цикл:

do
    statements
repeat forever;

// простой блок кода:

block
    statements
end:block

ВТОРОЙ:


// циклы с предусловием:

while condition loop
    statements
end:while

until condition loop
    statements
end:until

// циклы с постусловием:

loop
    statements
repeat while condition;

loop
    statements
repeat until condition;

// вечный цикл:

loop
    statements
repeat forever;

// простой блок кода:

do
    statements
end:do
★★★

Последнее исправление: wandrien (всего исправлений: 1)

Ни тот ни другой вариант особо не нравятся. Идею понял, и не понимаю, чем until в предусловии лучше, чем while + not — зачем городить сложности на ровном месте.

Но если уж хочется, почему бы тогда не так, например:

// циклы с предусловием:

while condition do
    statements
end:while

until condition do
    statements
end:until

// циклы с постусловием:

do
    statements
while condition; // однозначность достигается благодаря отсутствию ключевого слова do 

do
    statements
until condition;

// вечный цикл:

do
    statements
forever;

// простой блок кода:

do
    statements
once;
CrX ★★★★★
()
Ответ на: комментарий от CrX

Ни тот ни другой вариант особо не нравятся. Идею понял, и не понимаю, чем until в предусловии лучше, чем while + not — зачем городить сложности на ровном месте.

В общем, ситуация такая.

Мне вообще until не особо нужен. Сишные циклы вида while (expr) stmt и do stmt while (expr) оба с прямым условием лично меня бы вполне устроили.

Но так как в рамках заданного подхода к синтаксису всё равно нужно решать неоднозначность с while, то можно ввести также в язык и until, если это «бесплатно». Английским натив спикерам он, видимо, вполне удобен.

Но если уж хочется, почему бы тогда не так, например:

Это красивый лаконичный вариант, но он не отвечает исходной задаче: давать как можно больше зацепок для глаз, указывающих на структуру кода и её управляющие конструкции.

Идею с do forever и do once я оценил. Это круто. Однако требуется обеспечить избыточность кодирования. Это не только чисто формальное требование для парсера, но и принцип проектирования в данном случае.

wandrien ★★★
() автор топика
Ответ на: комментарий от CrX
do
    statements
forever;

// простой блок кода:

do
    statements
once;

так не нуна. введено два ключевых слова, просто так.

бесконечный цикл это

while true do ... end

просто блок можно писать как

do...end
alysnix ★★★
()
Ответ на: комментарий от wandrien

когда я увлекался такими штучками как вы, любезный, я просто сделал символ do == {, end == } и можно было невозбранно писать

if a>b do ... end
if a>b { ... }

while true { }
while true do end
alysnix ★★★
()
Последнее исправление: alysnix (всего исправлений: 1)
Ответ на: комментарий от alysnix

когда я увлекался такими штучками как вы, любезный,

Чем вы сейчас увлекаетесь, так это телепатией при нерабочем libastral. Уже третья ваша попытка в этой теме пальцем в небо.

я просто сделал символ do == {, end == } и можно было невозбранно писать

Поздравляю, вы изобрели паскаль.

wandrien ★★★
() автор топика
Ответ на: комментарий от alysnix

Я-то kbxyj согласен. Но я именно следовал идее ТС и ввёл не больше ключевых слов, чем было.

Лично мне-то эта идея в принципе не нравится. Отсутствие «скобок» в каком-то едином виде (будь то {} или паскалевские begin/end, или питоновские отступы) для всех типов блоков на практике неудобно. Мне эти Lua та же не нравится со своим end, завершающим что-то, начало чего может быть обозначено тучей способов. У ТС чуть получше, потому что после end следует хотя бы что оно завершает, но всё равно громоздко слишком.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от wandrien

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

синтаксис это просто форма. содержание-то, которое вы хотите влить в эту форму, у вас есть?

alysnix ★★★
()
Ответ на: комментарий от alysnix

Вас забыл спросить, чем мне заниматься. =)

У меня нет задачи доносить идеи до непонятливых. Вот в этой теме два человека суть идеи прекрасно уловили из предоставленных вариантов.

wandrien ★★★
() автор топика