Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 04, 2021 01:50

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - ALSO в SPF
Автор Сообщение
  Заголовок сообщения:   Ответить с цитатой
WingLion писал(а):
Короче, совершенно непоследовательная система.
В одном месте запутано в угоду совместимости,
в другом запутано без оглядки на совместимость... :shock:

Да, стандарт F93 рождался в результате борьбы нескольких реализаций и представляет собой компромисс, который никого не удовлетворил.
Сообщение Добавлено: Пт май 04, 2007 22:35
  Заголовок сообщения:   Ответить с цитатой
in4 писал(а):
Значит, надо сделать нормально и написать слой совместимости через этот кривой набор...

Особой кривости не видно. Работать можно.
Сообщение Добавлено: Чт мар 22, 2007 11:05
  Заголовок сообщения:   Ответить с цитатой
Значит, надо сделать нормально и написать слой совместимости через этот кривой набор... ;)
Сообщение Добавлено: Чт мар 22, 2007 00:21
  Заголовок сообщения:   Ответить с цитатой
profiT писал(а):
PS. Опоздал...

chess писал(а):
PS: не успел.


:)) :)) :)) :))

Короче, совершенно непоследовательная система.
В одном месте запутано в угоду совместимости,
в другом запутано без оглядки на совместимость... :shock:
Сообщение Добавлено: Ср мар 21, 2007 17:19
  Заголовок сообщения:   Ответить с цитатой
profiT писал(а):
А прикол в том что когда мы пишем "new", то он записывается не в новый элемент порядка поиска. А в верхний, перезаписывая его. Это отличается от обычного Фортовского:

В форте можно сделать так и для стека. Пример для константы которая "заменяет" верхний элемент на стеке.
Код:
CODE _NEW-CONSTANT-CODE
     POP EAX
     MOV  EAX, [EAX]
     RET
END-CODE

: NEW-CONST ( x "<spaces>name" -- )
  HEADER
  ['] _NEW-CONSTANT-CODE COMPILE, ,
;
5 NEW-CONST FIVE
И теперь
( 1 2 3 ) FIVE  ( 1 2 5 )
Сообщение Добавлено: Ср мар 21, 2007 17:17
  Заголовок сообщения:   Ответить с цитатой
WingLion писал(а):
Осталось разобраться, а какое же слово глубину уменьшает?
И что станет, если глубина окажется нулем?

Глубина поиска уменьшается на 1 словом PREVIOUS, которое первый в списке поиска словарь удаляет из списка после чего первым в списке поиска становится бывший вторым словарь.
Если список поиска перед выполнением PREVIOUS пуст, то возникает неопределенная ситуация(а мало-ли таких ситуаций может в Форте возникать). :weep;
PS: не успел.
Сообщение Добавлено: Ср мар 21, 2007 16:51
  Заголовок сообщения:   Ответить с цитатой
WingLion писал(а):
Осталось разобраться, а какое же слово глубину уменьшает?

PREVIOUS.
Сообщение Добавлено: Ср мар 21, 2007 16:50
  Заголовок сообщения:   Ответить с цитатой
profiT писал(а):
Глубину надо изменять вручную, как раз через ALSO. Тогда как со числами на стеке она увеличивается автоматически.

ALSO глубину увеличивает на единичку, любой new - не изменяет.
Осталось разобраться, а какое же слово глубину уменьшает?
И что станет, если глубина окажется нулем?
Сообщение Добавлено: Ср мар 21, 2007 16:37
  Заголовок сообщения:   Ответить с цитатой
Скорее всего (я правда тут буду щас пальцем в небо) из-за того что порядок поиска раньше включал в себя только один CURRENT, а потом когда сделали его списком то нарушать "старое" поведение (когда словарь при выполнении затирал CURRENT собой) не стали.
Сообщение Добавлено: Ср мар 21, 2007 15:30
  Заголовок сообщения:   Ответить с цитатой
Очень хочется спросить, а зачем сделали так? Получилось ведь не по-фортовски.
Я так и не смог себя заставить реализовать такое... :(
Сообщение Добавлено: Ср мар 21, 2007 14:59
  Заголовок сообщения:   Ответить с цитатой
Хех.. Поздравляю, Pretorian. Это только человек который уже попривык к Форту может спросить такой вопрос. Так у него в голове будет непроизвольно возникать аналогия с Фортовым стеком и то что ALSO это "типа тоже самое" что и DUP.

А прикол в том что когда мы пишем "new", то он записывается не в новый элемент порядка поиска. А в верхний, перезаписывая его. Это отличается от обычного Фортовского:

Код:
1 2 3


.. и тогда у нас будет на стеке три числа. А если у нас будет три словаря (порождённые через VOCABULARY): ниф-ниф, наф-наф и нуф-нуф, то после:

Код:
ниф-ниф наф-наф нуф-нуф


... глубина порядка поиска никак не изменится. А на вершине останется "последний герой": нуф-нуф.

Глубину надо изменять вручную, как раз через ALSO. Тогда как со числами на стеке она увеличивается автоматически.

PS. Опоздал...
Сообщение Добавлено: Ср мар 21, 2007 14:43
  Заголовок сообщения:   Ответить с цитатой
Pretorian писал(а):
Не могу понять как так получается ALSO добавляет словарь в список для поиска :
VOCABULARU new
ALSO new

ALSO не добавляет новый словарь в список поиска, а как ты правильно понял дублирует первый словарь в списке поиска. То есть если просто выполнить ALSO, то слово два раза будет искаться в словаре, поставленным первым в список поиска.
В записи ALSO new сначала работает слово ALSO - оно первый в списке поиска словарь дублирует(ставит его первым в список поиска). Затем работает слово new (слово, созданное с помощью VOCABULARY).
Оно(new) заменяет первый словарь в списке поиска на словарь c именем new. Таким образом вновь созданный словарь new становится первым в списке поиска. Остальной порядок поиска не изменяется(для чего и использовали ALSO - если бы было без него( просто new) то из списка поиска изчез бы словарь, который был до этого первым в списке поиска).
В Форте (как правило) все слова работают отдельно, друг за другом. :o
Сообщение Добавлено: Ср мар 21, 2007 12:03
  Заголовок сообщения:  ALSO в SPF  Ответить с цитатой
Не могу понять как так получается ALSO добавляет словарь в список для поиска :
Код:
VOCABULARU new
ALSO new


но по исходному коду
Код:
: ALSO GET-ORDER 1+ OVER SWAP SET-ORDER ;

оно должно последний в списке словарь дублировать.
Сообщение Добавлено: Ср мар 21, 2007 10:42

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


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