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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Способ объявления структур
СообщениеДобавлено: Ср июн 13, 2007 17:43 
Не в сети

Зарегистрирован: Чт июн 07, 2007 02:14
Сообщения: 40
Откуда: }{абаровск
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
что бы объявить структуру народ пишет вот так:
Код:
0
2 -- sin_family
2 -- sin_port
4 -- sin_addr
8 -- sin_zero
CONSTANT /sockaddr_in


вопрос .. а если я хочу создать структуру другой конструкции но, но например с теми же именами полей
то как мне быть ?
что то типа такого:
Код:
0
7 -- sin_family
9 -- sin_port
3-- sin_addr
10 -- sin_zero
CONSTANT /sockaddr_in_my


по моему приведенный код неправильный с точки зрения построения.
sin_family и т.п. должны быть элементами словаря /sockaddr_in (/sockaddr_in_my) но никак не глобального.

Или я может чего не понимаю ?


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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Способ объявления структур
СообщениеДобавлено: Ср июн 13, 2007 17:47 
---


Последний раз редактировалось profiT Сб мар 01, 2008 01:03, всего редактировалось 2 раз(а).

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 13, 2007 17:47 
Не в сети

Зарегистрирован: Чт июн 07, 2007 02:14
Сообщения: 40
Откуда: }{абаровск
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
вот именно ... я то и имею ввиду что для одной структуры мне надо одно смещение по этому слову .. а для другой .. другое ...
поэтому и предлагаю изменить способ объявления структур . т.е. выделить для каждой структуры свой словарь ... и что бы именно там были определены слова- смещения.


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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 13, 2007 17:53 
---


Последний раз редактировалось profiT Сб мар 01, 2008 01:05, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Способ объявления структур
СообщениеДобавлено: Ср июн 13, 2007 17:56 
Не в сети

Зарегистрирован: Чт июн 07, 2007 02:14
Сообщения: 40
Откуда: }{абаровск
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
profiT писал(а):
begemot писал(а):
что бы объявить структуру народ пишет вот так:
вопрос .. а если я хочу создать структуру другой конструкции но, но например с теми же именами полей
то как мне быть ?
что то типа такого:
Код:
0
7 -- sin_family
9 -- sin_port
3-- sin_addr
10 -- sin_zero
CONSTANT /sockaddr_in_my

Да без проблем, пусть хоть:
Код:
0
7000 -- sin_family
9000 -- sin_port
3000 -- sin_addr
1000 -- sin_zero
CONSTANT /sockaddr_in_my


а как же тогда обращаться к первой структуре .. если её поля перетрет вторая ?

нашел REQUIRE STRUCT: lib/ext/struct.f ..
вопрос почему это не стало стандартом дефакто ? ( я как раз такое и имел ввиду, т.е. использование смещения внутри словаря-определения структуры, ведь не очень удобно наблюдать все поля 300 структур используемых в программе)


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

Зарегистрирован: Чт июн 07, 2007 02:14
Сообщения: 40
Откуда: }{абаровск
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
profiT писал(а):
Это разве оправданно?..


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

Код:
MY_STRUCT MY_FIELD


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

Извините за мой русский, коли ничего не поняли :-)


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

Зарегистрирован: Чт июн 07, 2007 02:14
Сообщения: 40
Откуда: }{абаровск
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Хищник писал(а):
А в чем проблема так сделать?

проблемы собственно нет.
но я пока неопытный в таком деле :) . в структуру словаря не вдавался.
может просто уже есть такое решение


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

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

давно есть и более удобное: http://spf.cvs.sourceforge.net/spf/deve ... iew=markup
и описание http://spf.cvs.sourceforge.net/spf/deve ... iew=markup


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

Зарегистрирован: Чт май 04, 2006 18:18
Сообщения: 456
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
begemot, посмотрите как определено слово STRUCT: - оно именно так и делает - просто синтаксический сахар для заворачивания в отдельный словарь.
Каждый пишет как ему удобней. Ну а засорение глобального контекста это уже стандарт де-факто :) коему причиной есть лень и уродливость такой записи ( addr ) some_struct::some_field

_________________
http://forth.org.ru/~ygrek


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 13, 2007 18:48 
---


Последний раз редактировалось profiT Сб мар 01, 2008 01:03, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 14, 2007 06:03 
Не в сети

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
begemot писал(а):
вот именно ... я то и имею ввиду что для одной структуры мне надо одно смещение по этому слову .. а для другой .. другое ...
поэтому и предлагаю изменить способ объявления структур . т.е. выделить для каждой структуры свой словарь ... и что бы именно там были определены слова- смещения.

Когда лазил в сырцах SPF увидел что максимально SPF может иметь 16 словарей (может ошибаюсь).


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 14, 2007 06:55 
Не в сети
Аватара пользователя

Зарегистрирован: Пт май 05, 2006 06:19
Сообщения: 192
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
ну нужно так используй, мне например не нужно,
Цитата:
вопрос почему это не стало стандартом дефакто ?

тебе нужно мне не нужно вот и не дефакто :)

_________________
SPF


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 14, 2007 07:05 
Не в сети
Moderator
Moderator
Аватара пользователя

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

столько словарей одновременно может находиться в контексте, количестово же словарей вообще не ограничено ни чем.
То есть СПФ может одновременно искать не более чем в 16 словарях 8)


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

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


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

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


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

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