Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вс сен 13, 2026 15:27

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Стековый кадр / список
СообщениеДобавлено: Пн авг 31, 2026 15:31 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 8208
Благодарил (а): 30 раз.
Поблагодарили: 148 раз.
В рамках проб:

{ запоминает текущую глубину стека
} кладет на стек разность текущей глубины и ранее запомненной.

{ 1 2 3 } на стеке 1 2 3 3

Теперь можно сделать 0 DO и использовать переданные аргументы, не трогая лишнего.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стековый кадр / список
СообщениеДобавлено: Пн авг 31, 2026 16:22 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 682
Откуда: Москва
Благодарил (а): 61 раз.
Поблагодарили: 31 раз.
О, интересно, это чем-то напоминает цикл foreach. Собственно, foreach можно сделать синонимом связки 0 do.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стековый кадр / список
СообщениеДобавлено: Пн авг 31, 2026 16:34 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 8208
Благодарил (а): 30 раз.
Поблагодарили: 148 раз.
Я собираюсь сделать интервальный case, и заодно case по списку. Примерно так:

Код:
N case
  0 of ... endof
  1 9 <of> ... endof
  { 10 20 30 } {of} ... endof
endcase


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стековый кадр / список
СообщениеДобавлено: Пн авг 31, 2026 17:38 
Не в сети

Зарегистрирован: Сб май 19, 2007 18:05
Сообщения: 92
Благодарил (а): 3 раз.
Поблагодарили: 1 раз.
Hishnik писал(а):
В рамках проб:

{ запоминает текущую глубину стека
} кладет на стек разность текущей глубины и ранее запомненной.

{ 1 2 3 } на стеке 1 2 3 3

Теперь можно сделать 0 DO и использовать переданные аргументы, не трогая лишнего.

Слова { и } уже используются для создание локальных переменных, и были сделаны специально для технологии JIT


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стековый кадр / список
СообщениеДобавлено: Пн авг 31, 2026 17:49 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 8208
Благодарил (а): 30 раз.
Поблагодарили: 148 раз.
Да, и тут важное уточнение. Это все надо делать во время компиляции, запоминая количество скомпилированных литералов.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стековый кадр / список
СообщениеДобавлено: Пн авг 31, 2026 17:51 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 682
Откуда: Москва
Благодарил (а): 61 раз.
Поблагодарили: 31 раз.
Интересная идея. Например, в компиляторе gcc есть интервальный case, тоже хочу такое себе в компилятор
Код:
switch (n) {
   case 0...9: ... break;
   case 10...100: ... break;
   ...
}


Кстати, если уж список, то может круглые скобки надо, чтобы как в Лиспе? Ну и (of) тогда


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стековый кадр / список
СообщениеДобавлено: Пн авг 31, 2026 21:27 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 8208
Благодарил (а): 30 раз.
Поблагодарили: 148 раз.
Кстати да. Круглые скобки для комментариев прижились... но это неправильно :) Тут главное реализацию сделать, а имена потом назначить.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стековый кадр / список
СообщениеДобавлено: Пн авг 31, 2026 23:02 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 682
Откуда: Москва
Благодарил (а): 61 раз.
Поблагодарили: 31 раз.
:) Так в Ирбисе же вроде // для комментариев? И оно вполне себе нормально воспринимается, какого-то отторжения не вызывает.
А вот круглые скобки в качестве комментариев лично меня всегда очень раздражали. Вот иногда портировал из Си в Форт что-нибудь врукопашную (еще до появления транслятора Си-в-Форт), так мне было проще оставить вызовы функций в коде прямо со скобками.
Ну т.е. сишный код почти в неизменном виде кочевал в Форт:
Код:
void main() {
   test();
   test2(1,2,3);
}
превращалось в
Код:
: main()
   test()
   1 2 3 test2()
;
И как потом в таком исходнике комментировать блоки кода при помощи круглых скобок?
Поэтому для однострочных комментариев у меня, например, \\, а для многострочных что-нибудь из этого: \ ... \, \* ... *\ или даже (* ... *)
А скобки разных видов использую в качестве управляющих конструкций:
Код:
{ ~ } \ if-else-then \
( ) \ while-repeat \
[ ] \ do-loop \
И ни разу не комплексую по этому поводу :D


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стековый кадр / список
СообщениеДобавлено: Пн авг 31, 2026 23:43 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 8208
Благодарил (а): 30 раз.
Поблагодарили: 148 раз.
Total Vacuum писал(а):
Так в Ирбисе же вроде // для комментариев? И оно вполне себе нормально воспринимается, какого-то отторжения не вызывает.

Да, именно. Остался еще обратный слэш, но скобки точно зарезервированы для чего-то полезного.

Total Vacuum писал(а):
А вот круглые скобки в качестве комментариев лично меня всегда очень раздражали.

Аналогично. Постоянно напоминать, что в постфиксной записи скобки не нужны - это какой-то уровень "вечного новичка". Вспомогательные элементы синтаксиса лучше делать такими, чтобы они попадали в наработанные шаблоны восприятия кода. Тот же //, просто потому что и привычно видеть, и подсветка синтаксиса срабатывает на него.

Total Vacuum писал(а):
test2(1,2,3);

Идея. test2( 1 2 3 );

test2( - записывает адрес слова test2... ну куда-нибудь.
1 2 3 просто ложатся на стек
); - достает адрес (ну куда его там положили) и делает EXECUTE.

Не знаю, зачем такое, но вот еще такая мимикрия.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стековый кадр / список
СообщениеДобавлено: Вт сен 01, 2026 10:24 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1381
Благодарил (а): 4 раз.
Поблагодарили: 20 раз.
Hishnik писал(а):
В рамках проб:

{ запоминает текущую глубину стека
} кладет на стек разность текущей глубины и ранее запомненной.

{ 1 2 3 } на стеке 1 2 3 3

Теперь можно сделать 0 DO и использовать переданные аргументы, не трогая лишнего.


Не проще ли тогда, что "}" создёт хип и переносит все числа туда?

Хотя вопрос объёма ещё

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Стековый кадр / список
СообщениеДобавлено: Вт сен 01, 2026 14:48 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 8208
Благодарил (а): 30 раз.
Поблагодарили: 148 раз.
Victor__v писал(а):
Не проще ли тогда, что "}" создёт хип и переносит все числа туда?

А зачем они там? Сейчас получилось довольно универсально - скобки просто подсчитывают, сколько чисел оказалось между ними. Причем можно и 123 a @ + b @ - все равно будет посчитано, сколько чисел оказалось после открывающей скобки.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB