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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: ранние объявления имен слов
СообщениеДобавлено: Вс апр 26, 2009 17:29 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
собственно дальше размышление (работающее) на тему раннего объявления слов.
идея в том, чтобы объявить имя слова заранее (не используя при этом VECT - слово ) а скомпилировать код в последствии.
Cинтаксически это должно выглядеть как-то так:

DECLARE NAME \ ...

: blabla ... NAME ...

DESCRIBE NAME .... ;

слово describe должно связать код, созданный после него с именем NAME , объявленном заранее.

<pre>
\ 26.04.2009 ~mOleg
\ Сopyright [C] 2009 mOleg mininoleg@yahoo.com
\ ранние объявления имен слов

vocs/ compile.fts

0 VALUE no_declare

\ объявить имя слова
: DECLARE ( --> )
CREATE
DOES> [ HERE TO no_declare ]
ERROR" поведение слова не описано с помощью DESCRIBE" ;

\ связать ранее объявленное с помощью DECLARE слово name с кодом, следующим
\ за name вплодь до завершающей ;
: DESCRIBE ( / name --> )
' DUP >R
TOKEN@ CFL + no_declare <> ABORT" DESCRIBE работает только в паре с DECLARE"
:NONAME R> TOKEN! COMPILE RDROP ;

\ EOF пример использования:

DECLARE sample

: test ." вызов " sample ." работает" ;

DESCRIBE sample ." слова sample " ;

test
</pre>

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


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
после того, как было написано, в голову пришло, что идея очень похожа(проще) на конструкцию DOER .. MAKE предложенную Броуди. хотя хотелось немного другого:
"как вариант, можно создать некую таблицу ссылок на адреса, ссылающиеся на указанное слово,
а во время DESCRIBE все эти адреса править, что выглядит грамотнее, но сложнее в реализации"
кто-нибудь может предложить лучший вариант? ;)

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


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

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
А как вариант патчить код NAME чтоб получился переход на слово, позднее определенное через NONAME? В одной из реализаций слово, которое такое делало, называлось NEW .

_________________
With best wishes, in4.


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
in4 писал(а):
А как вариант патчить код NAME чтоб получился переход на слово, позднее определенное через NONAME?

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

да, забыл привести код
<pre>
\ заменить значение токена dst на src
: TOKEN! ( src dst --> ) TUCK CFL + - SWAP 1 + ! ;
</pre>

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
mOleg писал(а):
идея в том, чтобы объявить имя слова заранее (не используя при этом VECT - слово ) а скомпилировать код в последствии.

А чем плох VECT? Он уже есть. А тут еще какие-то слова объявлять, которые будут достигать того эффекта, который возможен и без них.


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Хищник писал(а):
А чем плох VECT? Он уже есть

это уже тоже есть.
VECT плох тем, что он нетороплив, кушает несколько больше памяти.

Хищник писал(а):
А тут еще какие-то слова объявлять, которые будут достигать того эффекта, который возможен и без них

да понятно, хотя это все-таки не одно и то же, то есть несколько другое употребление.

К тому же тут скорее "шахматная задача" нежели важный вопрос (этакий вариант "перегрузки операторов" по-Фортовски)

впрочем, к примеру, кто пользуется конструкцией DOER MAKE , предложенной Броуди?
А ведь штука занятная и вполне полезная...

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
mOleg писал(а):
VECT плох тем, что он нетороплив, кушает несколько больше памяти.

Можно подумать, он какие-то развесистые структуры создает :) Один лишний call получается.
mOleg писал(а):
да понятно, хотя это все-таки не одно и то же, то есть несколько другое употребление.

Код:
DECLARE NAME \ ...

: blabla ... NAME ...

DESCRIBE NAME .... ;


Код:
VECT NAME

: blablabla NAME

: DESCRIBE_NAME ; ' DESCRIBE_NAME TO NAME


Разница "синтаксически-сахарная". Напрашивается только убрать явное назначение вектора, но это уже по вкусу.


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Хищник писал(а):
Можно подумать, он какие-то развесистые структуры создает Один лишний call получается.

смотря по чем судить, если по скорости, то да, если по размеру, то три лишних CALL + собственно не нужное поле кода (но это особенность реализации в СПФ , в других системах может быть инАче)

Хищник писал(а):
Разница "синтаксически-сахарная". Напрашивается только убрать явное назначение вектора, но это уже по вкусу.

а так же, кодоразмерная, и скоросте-вызовная ;)

к примеру, можно взять scattered-colon определения. Ведь тоже разница синтаксически-сахарная, а народу нравицца.

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


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

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

(вполне возможно, что это только на фоне того, что мне приходится сейчас учить)

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


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

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

(вполне возможно, что это только на фоне того, что мне приходится сейчас учить)

А что приходится учить?

ООП пахнет всюду


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

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

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


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

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

Дельфи - не люблю, не пользуюсь, а ООП - хорошая вещь, полезная и обьективно нужная, потому - успехов


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
WingLion писал(а):
Мне это мерещится или и вправду пахнет ООП?

нет, ЯОП пахнет :)

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


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

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


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

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


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

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