Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт окт 19, 2018 04:11

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 62 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пн ноя 16, 2009 20:24 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Вот ещё
правильна ли запись
Код:
: ['] ' ' COMPILE, ;
Если правильна, то во сех ли случаях :D :D


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн ноя 16, 2009 21:21 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
IMMEDIATE как минимум, не хватает

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн ноя 16, 2009 22:26 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
но ведь quote (') - сама уже IMMEDIATE :o


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн ноя 16, 2009 22:34 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4953
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
эхм, иногда надо смотреть в исходники.... или хотя бы пробовать на живой форт-системе код.
в СПФ лезть мне лень, из форка:
<pre>
\ cкомпилировать в текущем определении
\ адрес следующего слова в виде литерала
: ['] ( / name --> xt ) ?COMP ' ADDR, ; IMMEDIATE
</pre>

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


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

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1255
Благодарил (а): 3 раз.
Поблагодарили: 17 раз.
вопрос писал(а):
но ведь quote (') - сама уже IMMEDIATE

Как раз нет, ' не имеет признака немедленного исполнения, тогда как ['] имеет признак немедленного исполнения.
Код:
: ['] ' ' COMPILE, ;

Вообще неправильно: во время выполнения выбрать два слова из входного потока и положить их адреса на стек, далее скомпилировать верхний адрес.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн ноя 16, 2009 23:13 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
У меня в форте это сделано так:

Код:
: ['] ' [COMPILE] LITERAL ; IMMEDIATE

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 17, 2009 00:18 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
эхм, иногда надо смотреть в исходники....

Мы FAQ составляем!


VoidVolker писал(а):
вопрос писал(а):
но ведь quote (') - сама уже IMMEDIATE

Как раз нет, ' не имеет признака немедленного исполнения, тогда как ['] имеет признак немедленного исполнения.
Да, именно это и перепутано.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 20, 2009 00:44 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Вот ещё такой любопытный вопрос (сразу скажу - посмотрел и стандарт и исходники) - а должны ли (по замыслу) что-либо делать слова [ "left-bracket" и ] "right-bracket" если они вызваны неуместно - например если система уже находится в состоянии компиляции, а вызывается слово ] или наоборот - в состоянии интерпретации вызывается слово [
Нет, что делает форт-система, я вижу, конечно, а вот как было бы правильно.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 20, 2009 01:05 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6417
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
вопрос писал(а):
Вот ещё такой любопытный вопрос (сразу скажу - посмотрел и стандарт и исходники) - а должны ли (по замыслу) что-либо делать слова [ "left-bracket" и ] "right-bracket" если они вызваны неуместно - например если система уже находится в состоянии компиляции, а вызывается слово ] или наоборот - в состоянии интерпретации вызывается слово [
Нет, что делает форт-система, я вижу, конечно, а вот как было бы правильно.

То, что сейчас делает форт-система, вполне правильно.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 20, 2009 01:11 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Хищник писал(а):
То, что сейчас делает форт-система, вполне правильно.

Угу, всё-таки некоторая неоднозначность существует ...
в стандарте присутствует фраза

6.1.2500 [ "left-bracket"
Интерпретация: Семантика интерпретации для этого слова не определена.

вот она и вызывает смущение, дело в том, что такая же фраза присутствует для слов DO например, но в случае попытки использовать DO вне компиляции, компилятор форта отреагирует иначе -

Цитата:
DO 3 4 5 LOOP
DO 3 4 5 LOOP
^ -312 Только для режима компиляции !

неожиданно появляется предупреждение


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 20, 2009 01:29 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6417
Благодарил (а): 14 раз.
Поблагодарили: 101 раз.
Слово DO, как и другие структуры управления, генерирует код, который не имеет смысла в отрыве от слова. Слово [ ничего не компилирует, а просто устанавливает режим исполнения. Использовать его в режиме интерпретации избыточно, но и только.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 20, 2009 02:18 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Хищник писал(а):
Слово DO, как и другие структуры управления, генерирует код, который не имеет смысла в отрыве от слова. Слово [ ничего не компилирует, а просто устанавливает режим исполнения. Использовать его в режиме интерпретации избыточно, но и только.

Да, это уже ответ. Рассмотрим вторую половину вопроса - что будет, если в режиме компиляции использовано слово ]
как бы тоже ничего

а вот предположим, что у нас режим интерпретации и вдруг используется слово ] без того чтобы было задано начало нового слова ( : )
вот по крайней мере в этом случае имеет смысл появление предупреждения.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 20, 2009 02:32 
Не в сети
Administrator
Administrator
Аватара пользователя

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

В этом случае все слова, использующие ], и создающие заголовок словарной статьи самостоятельно, будут зачем-то выдавать предупреждения.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 20, 2009 08:32 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
вопрос писал(а):
Семантика интерпретации для этого слова не определена.


Если рассуждать логически, то слово ] в режиме компиляции и слово [ в режиме интерпретации попросту могут делать все что угодно. Их действия в этих режимах не определены стандартом, так же, как действия всех-всех-всех иных слов, не вошедших в стандарт.

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

И это имело бы смысл, если бы нам не хватало слов, но слов предостаточно, поэтому особого смысла в подобном переопределении нет.

С другой стороны, последовательность [ что-то там ] в режиме компиляции исполнит это самое "что-то там", поэтому, имеет смысл сделать так, чтобы и в режиме интерпретации [ что-то там ] исполнялось, а для того чтобы оно чем-то отличалось от простого что-то там , это надо делать хитрее.

[ - запоминает текущий адрес HERE и переключается в режим компиляции
что-то там - это все компилируется
] - а тут делается завершение компиляции, исполнение того, что скомпилировалось начиная от [ и восстановление HERE так, словно ничего и не было.

Таким образом последовательность [ 10 0 DO I . LOOP ] в потоке интерпретации
не выкинет ошибку когда наткнется на DO, а просто исполнит цикл и распечатает 10 чисел.

И подобные виртуальные одноразовые определения вполне имеют смысл

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 20, 2009 08:59 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4953
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
вообще, со словами [ ] действительно имеется один тонкий момент (который еще не обсуждался), а именно:
<pre>
CREATE ZZZ ] aaa bbb ccc ddd [
</pre>

вот этот момент в ярде случаев позволял содать список адресов слов aaa, bbb, ,
и иногда этим методом даже пользовались!
вот только непереносим он, и совсем не применим к числам, то есть введение
<pre>
CREATE ZZZ ] aaa 1234 bbb ccc ddd [
</pre>
приведет скорее всего к нарушению структуры, и все адреса "сползут".
Где-то этот прием обсуждался (как бы не у Броуди) и общий вывод - так делать нельзя.

Поэтому, слова управляющие STATE лучше вообще не трогать! А пользоваться уже готовыми : ; и т.п.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 62 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

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


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

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


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

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